如何跟上SOA的步伐?
我的任务是为我的客户奠定SOA的基础。目标是以独立于最终客户的方式开放各种流程,并使数据可以脱机使用,例如代表拜访客户。
我确实在J2EE(Websphere)和Web服务方面有丰富的经验,但是我希望我们能就如何建立这样的SOA提出建议。
陷阱在哪里?那么安全性呢?服务应该有多细?等等。
指向教程和书籍推荐的链接也将很有用。
谢谢!
解决方案
陷阱
- 版本控制/向后兼容性:一旦有大量的客户,就很难更改合同。我已经看到许多站点通过在URL中引入版本来对API进行版本化
粒度
- 每个服务都应合理地独立(不要期望人们在获得所需的东西之前先打3个电话)
平台独立性
- 尝试提供多种访问API的方式(WS,JSON,REST ...)
获得ESB(企业服务总线):Mulesource是一个不错的选择(开源,成熟,但前沿)。一旦了解了它,我们就会了解SOA。
人们对于SOA的真正含义无法达成共识。
http://martinfowler.com/bliki/ServiceOrientedAmbiguity.html
(尽管自从撰写此书以来,共识可能已经增长)
我建议对客户进行测验,以准确了解他们的意思(如果有的话)。然后给他们一些实际上可以提供业务价值的东西,同时打勾可能与此工作相吻合的任何SOA框。
找到了这本IBM红皮书(#sg246303),它是对SOA基础知识的很好的介绍。
The goal is to open up various processes in an end-client independent way and also to make data available offline e.g. for reps visiting customers.
下半部分实际上不是SOA主题,它更多地是复制到移动设备的问题。我将远离尝试实施流行语并专注于我们要说明的问题。 Web服务是向客户独立方式开放流程的好方法。
称我为SOA怀疑论者。福勒的哀叹似乎仍在继续。
我将集中讨论一个更普遍的问题:客户有2个或者多个必须协同工作的应用程序。看一下旧式的整合模式。
EIP图片http://rcm-images.amazon.com/images/I/51tVn4YqQUL.SL110.jpg
正如Alan所说,我将开始阅读《企业集成模式》一书。有多种方法可以使用直接使用消息系统(例如JMS)或者使用开源项目(例如Apache Camel)来实现它们,例如,请参见模式目录。
我还将了解如何使用带有Jersey的JAX-RS构建良好的RESTful服务,这是一种简单的方法,可以轻松地从任何语言/平台向网络上的任何人公开系统资源,而不会陷入SOAP / WS- * :)