我知道有两种主要的反模式:
建议您的服务层包含粗粒度的通用方法,并使它们接受并返回一些基于消息的大型请求和响应。目标是提供一个相当通用的接口,而不会对如何使用服务做太多假设,也不需要多次调用来实现基本功能。尽量减少Web服务调用的数量。
以下是一些高级建议: http://apparchguide.codeplex.com/Wiki/View.aspx?title=Chapter%2013%20-%20Service%20Layer%20Guidelines
以下是指南正在讨论的“消息”类的类型的具体示例,以及如何在WCF中实现它: http://dotnet.org.za/hiltong/pages/windows-communication-foundation-tutorial-part-3-messaging-messagecontracts.aspx
我发布了一些SOA反模式
关键是很多人都认为SOA将Web服务前端放在逻辑前面而忘记了所产生的RPC的影响(也称为 分布式计算的谬误 )
我想你的权利。在我目前的任务(Web开发)中,对数据库的每次访问都是作为服务实现的。我们是“纯粹的SOA”,正如首席架构师所说......哇!
事实上,这增加了一切的复杂性。当我想要读取一个简单表的内容时,我必须生成类似8个项目,42个文件,8个程序集和可能9个配置文件的内容!
我说的很复杂。有可能某个地方会忘记一个文件...将简单流程作为服务公开是愚蠢的。
在我的书中,您应该在以下情况下将您的流程公开为服务:
另外,请注意服务必须设计为服务,并且设计服务至少与设计库一样复杂:必须精心设计错误捕获,记录必须足够灵活,文档必须完整等。
好吧,正如我所看到的,我每天使用的大多数服务都不会被其他人使用:没有文档,错误处理能力差,代码经常变化,第二个区域数据......
好吧,非常有趣的问题。 1分:o)
SOA是最糟糕的概念之一。 SOA是一种架构风格,与Web服务或任何技术无关。 我同意通过Web服务和BPEL解释SOA很容易产生误导,BPEL通常与SOA无关,而是实现WS编排的一种方式。供应商搞砸了它。
我推荐一本非常好的可下载书,它解释了SOA的真正含义:
http://www.infoq.com/minibooks/enterprise-soa
然后你就可以阅读了 这个有趣的博客文章
问候
SOA作为一个概念是一个好主意。
使用HTTP-WS / BPEL等实现的SOA是一个笑话,值得在我不那么谦虚的观点中消亡。在得知分布式交易的唯一概念是补偿交易后,我不久就认真地停止了系统... bzzt NEXT !!