什么是面向服务架构?

14

什么是面向服务的架构?

5个回答

21

SOA是开发面向服务的应用程序的一种方式,而WCF是可用于开发面向服务的应用程序的技术。但是,SOA为应用程序定义了严格的规则(称为SOA准则)。如果您不遵循这些规则,您正在构建服务,但是这些服务不符合SOA。

WCF允许您开发许多类型的服务。您可以开发符合SOA标准的可互操作SOAP服务,也可以开发不符合该标准的服务。您可以开发具有非互操作特性的纯.NET服务,也可以开发REST服务。

此外,在SOA中,服务的含义可能与WCF中的含义不同。在WCF中,服务是在端点上公开的功能集合。在SOA中,服务可以是整个应用程序(一组类似WCF的服务)- 小型和大型SOA之间的区别。

SOA准则包括:

  • 边界明确 - 服务与其他服务不共享任何内容(甚至不能共享数据库表和数据)
  • 服务自治 - 每个服务都是独立的,可以单独部署和版本化
  • 服务共享模式和契约,而不是类 - 服务在WSDL中描述,传输的数据在XSD中描述,编排(聚合)在BPEL中描述
  • 服务兼容性基于策略 - WSDL包含WS-Policies,以描述所需的互操作性配置

正如您看到的,特别是前两个准则在构建WCF服务时很容易被违反。


这意味着我们也可以在Web服务中创建SOA应用程序,那么为什么SOA一词只与WCF定义相关联? - Jeevan Bhatt
是的,你可以。这个词通常与WCF相关联,因为它取代了ASMX Web服务,并提供了更多的互操作协议。 - Ladislav Mrnka
@LadislavMrnka 这是一个相当古老的答案,但第一原则使我感到困惑。这是否意味着在SOA中有一个名为“DataService”的地方,它是作为服务实现的DAL?因此,其他服务可以使用DataService端点而不是DB连接。 - Marshall

6

SOA是一种设计完整解决方案的方式,它是一组通常被接受的实践方法,用于通信、状态管理、兼容性等。在软件架构中,SOA是一组(不一定是Web服务)独立构建的服务,以支持各种客户端应用程序。模块化设计有助于维护和业务协作。

SOA还提供了一些开发指南:

  • 向后兼容性的约束
  • 元数据暴露
  • 服务的可发现性

另一方面,WCF只是一种支持技术,帮助您在.NET中构建服务。

您可以创建一个没有WCF的SOA,就像创建一堆WCF服务并不能使您的架构成为面向服务的架构一样。


2
服务导向架构是一种软件架构概念,其中一个或多个服务相互交互。在这里,服务指完成目的的工作单元。例如,在线售卖铁路车票是一项服务,在线酒店预订是一项服务,在线支付采购是一项服务等。现在,让我们考虑一个酒店公司从自己的网站在线销售客房的情况。在这种情况下,该网站使用本地服务。同一家酒店也可以通过第三方旅游门户销售客房。在第二种情况下,第三方旅游门户使用远程服务或Web服务。通过旅游门户在线销售酒店预订是服务导向架构的一个例子。在服务导向架构中,两个或多个参与方使用Web服务进行交互。其中一些是Web服务提供者,另一些是Web服务消费者。可以通过使用Web服务按照服务导向架构构建软件组件。WCF是一种构建服务的技术。

1

WCF是一种技术,使构建服务更加容易,并且它可以在所有传输上工作,而不仅仅是HTTP,因此比仅在Http上工作的Web服务更通用。


网络服务只支持HTTP协议,而WCF更通用。虽然可以使用WCF,但我想知道如何确定哪种技术支持SOA。我们如何说WCF是SOA而网络服务不是呢?实际上,在定义WCF时,大多数网站都使用SOA来定义它,为什么? - Jeevan Bhatt

1

SOA是一种方法,通过它我们可以使用Web服务在不同的技术之间进行交互,例如在.NET和JAVA中。为此,您必须了解以下几个方面。

  1. XML
  2. WSDL
  3. UDDI
  4. SOAP

了解这些内容后,您就可以轻松应用SOA了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接