专家谈SOA的最佳定义是什么
你也许会问,如果我们把在计算机上运行的一切东西都叫做服务会有什么大的影响吗?这个答案是:并非所有的服务都是平等地建立的。当使用一个词汇包含所有的东西的时候,没有办法确定这些服务的类型和范围。
Morgenthal说,SOA的准确定义应该是这样的:SOA是一种原始模型的结构方式,重点是根据合同的定义从提供商和消费者的角度设计系统。基于SOA的设计通过实现服务提供商的互操作性提供灵活性,不需要消费者方面的流程改变。因此,SOA适用于系统级,而不是一个系统中的一个单个的组件。
Morgenthal称,由于我把SOA定义为一种原始模型,你不能有一个直接的SOA实例。你可以使用SOA定义一个新的架构。然后,使用这个架构创建系统的实例。例如,SOI(面向服务的集成)、Web 2.0和云计算都是以SOA原始模型为基础的。然而,在应用环境中,FedEx和UPS作为业务也是SOA架构。不用说,如果按照面向对象的法则,通过一个对象的最早的祖先来辨认这个对象不是不合法的,但是,这样做你就会失去这个对象的本质。在一个集合中把东西混合在一起是一个伟大的技术。但是,如果你要实现这个对象的丰富性和价值,这个技术还是很可怕的。
在上述基于SOA的三个技术架构中,SOI和Web 2.0之间显然有牢固的软件联系。有人把拥有一个SOAP或者HTTP接口的软件组件叫做服务。就像SOA是一个原始模型一样,服务也是一个原始模型。这些软件组件是服务是因为它们来自于这个服务原始模型。
Morgenthal称,为了更好地理解他的观点,我们需要先了解一下这个技术分支。随着TCP/IP成长为一个广泛应用的网络协议,客户机/服务器计算的概念也在发展。在客户机/服务器计算中,一个用户接口应用程序使用连接到网络的软件服务根据需要提供数据,而不是让这个应用程序作为一台单个的计算机中的一个独立的实体。客户机/服务器计算实现了网络共享的资源。
如果我们不在上一段话中使用客户机/服务器的这个词汇,目前90%的技术人员会说我们在谈论SOA。因此,目前使用Web服务开发系统的人是在做客户机/服务器计算吗?Morgenthal认为是如此。但是,那样做并不普遍。目前还没有成百的有空缺的客户机/服务器设计师岗位。
总之,在声称自己在做SOA的人中,没有任何人会公开承认他们确实只是在做客户机/服务器计算。还有一些做SOA的人,他们实际上是把重点放在建立业务模型方面,把这个模型作为一套功能的服务领域(这些人确实是在做SOA)。然后,使用客户机/服务器设计方式开发软件组件的许多人都说他们在做SOA。
请问,你还认为在这个行业不需要一个通用的SOA定义吗?
编辑推荐: