我被要求使用WCF在一个基于SOA的项目中工作。我曾经涉足过WCF (创建和消费),但从未涉足过SOA。我说单个服务应该有通常的服务层、业务层和数据访问层(如果需要的话),这样说对吗?然后,服务层将公开方法。
服务A是否可以引用服务B,服务B是否可以引用服务A?
然后UI可以通过引用访问这些服务--这本质上就是SOA吗?我正在努力寻找最新的、最新的教程(Youtube),我在网上看到的“指南”似乎非常复杂。
发布于 2013-04-29 16:45:23
我想这个Wikipedia entry很清楚吧?
让我们来看一个简单的例子。假设我们有一个图书馆应用程序,它可以让你检入和检出图书。
如果您看一下处理n层系统的“传统”非面向服务架构的方法,那么就会有一个名为MyService的服务,它的方法类似于CheckOutBook。这样就可以在内部拥有一个Book类和一个Person类,并执行Book.IsAvailable = False和Person.NumberOfBooks。
这很好,但是假设您现在有另一个想要与人一起工作的应用程序。您不能只使用上面的服务,因为逻辑与您正在做的事情紧密耦合,即库事务。相反,您必须将代码复制/粘贴到新服务"BookShop“中。
使用面向服务的体系结构,您将拥有一个图书服务和一个Person服务。Person服务将有一个操作,如Person.AssociateWithBook,库和BookShop都可以使用它,而无需更改,因为它足够简单,只需做最少的操作。然后由应用程序调用正确的服务来完成所需的工作。这意味着它是可重用的,而不需要修改各种服务。
这是非常简单化的,但希望能显示出架构的差异,并让您上手?
发布于 2013-04-29 16:39:21
我会跳过关于SOA的问题,因为每个人都可以称SOA为他所理解的SOA (面向服务的体系结构)。我的意思是,每个使用服务的架构都可以被称为SOA...
从技术方面来说,我会用下一种方式构建它:
在IMO中,服务本身应该具有尽可能少的逻辑(如外观模式),所有这些逻辑都应该向下移动到业务逻辑。
使用ServiceA.BusinessLogic的服务A调用服务B(服务B的代理可用于ServiceA.BL)。
服务B也是如此,调用服务A。
这将为您提供双向通信,而不会出现双工问题(中断的回调,...)。
UI也应该访问服务--使用UI.BusinessLogic (我通常倾向于将服务通信看作是一种通信数据访问层)。
https://stackoverflow.com/questions/16274177
复制相似问题