|
|
1
24
我们向客户公开服务,因为他们不应该直接连接到数据源。 我们向自己公开服务,因为使用WCF更容易将它们分散到不同的技术中。 我们公开服务是因为同一数据源有不同的用户界面。当我们使用服务时,我们节省了三分之一的工作量。 这从来不仅仅是因为异步操作。 |
|
|
2
9
使用服务的另一种情况是当您想要集成异构技术栈时。 换句话说,如果你的数据库是postgres,但你有Java、Perl、Python和C++的代码,你可以编写存储过程,并让每种编程语言调用它们。如果您正在使用一个没有存储过程的数据库,或者您想拥有将这些过程切换出去的能力,或者您只想在端口80上运行,您可以将SQL调用包装在一个面向服务的层(想想websphere)中,现在任何人都可以调用它,此外,您还可以将身份验证和授权逻辑(连接到LDAP,无论什么)放在SOA层中。
因此,如果你有许多遗留系统想要互连,比如销售系统、仓储系统和订单预测系统,SOA可能是实现这一目标的一种方法。(您还可以使用“服务总线”来创建事件驱动系统,作为编排更改的更好方式。) 只有我在说话。 |
|
|
3
6
|
|
|
4
3
|
|
5
2
SOA可以用来隐藏子系统的实现细节。例如,如果你的客户需要产品信息,最好将你的产品数据库或库存子系统打包成一个通用服务,只公开客户需要的功能和数据的子集。然后,如果您需要更换或升级该子系统,您将能够使这些更改对您的用户和面向客户的软件界面透明。 |
|
|
6
2
通过使用统一语言(WSDL)作为接口,您可以为互操作准备技术孤岛。通过现在实现SOA,而不是直接到数据源,您可以自动使您的数据源可供您从未考虑过的各方和业务需求使用。 WSDL终于是Corba了。 |
|
|
7
2
WSDL和SOAP通常会遇到与CORBA和DCOM相同的问题:合约版本控制是一场噩梦。在降级情况下,这并不是一个大问题,因为你可以完全控制所有客户端和服务器,但当你开始联合系统时,情况会变得很糟糕,尤其是在跨企业时。 此时,您几乎被迫采用某种事件驱动的架构方法,而不是典型的SOAP作为RPC交互模型。这并不一定意味着使用ESB,但将企业之间的连接视为ESB之间的连接非常有用。
有答案,但它们从来都不简单。 Best practices for Web services versioning 但SOA根本不意味着异步。这只是实现SOA的聪明方法。SOA是关于松耦合的。SOA的EDA子集是关于解耦的,更进一步。 |
|
|
8
2
|
|
|
9
1
|
|
|
10
0
最后,你会有很多乐高积木,你会把它们拼在一起。 |