I've been given the task of laying the groundwork of a SOA for my client. 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基础的任务。目标是以最终客户端独立的方式开放各种流程,并使数据脱机可用,例如代表访问客户。
I do have extensive experience with J2EE (Websphere) and web services but I would appreciate advice on how to build up such an SOA.
我在J2EE(Websphere)和Web服务方面有丰富的经验,但我很欣赏有关如何构建这样一个SOA的建议。
Where are the pitfalls? What about security? How finely granulated should services be? etc.
陷阱在哪里?安全性怎么样?服务的细化程度如何?等等
Links to tutorials and book recommendations would also be useful.
教程和书籍推荐的链接也很有用。
Thanks!
谢谢!
8 个解决方案
#1
6
Pitfalls
陷阱
- Versioning/backwards compatibility: it gets really hard to change a contract once you have loads of clients. I have seen many sites version the APIs by introducing the version in the URL
- 版本控制/向后兼容性:一旦有大量客户端,就很难更改合同。我已经看到许多网站通过在URL中引入版本来对API进行版本控制
Granularity
粒度
- Each service should be reasonly self-contained (don't expect people to do 3 calls before they get what they need)
- 每项服务都应该是合理的自成一体的(不要指望人们在得到他们需要的东西之前做3次通话)
Platform Independence
平*立
- Try to give more than one way of accessing your APIs (WS, JSON, REST...)
- 尝试提供多种访问API的方法(WS,JSON,REST ......)
#2
4
People can't agree on what SOA actually means.
人们无法就SOA的实际含义达成一致。
http://martinfowler.com/bliki/ServiceOrientedAmbiguity.html
http://martinfowler.com/bliki/ServiceOrientedAmbiguity.html
(although consensus may have grown since that was written)
(虽然自那以后达成共识可能会有所增长)
I suggest quizzing your client to find out exactly what they mean - if anything. Then give them something that actually provides business value, while ticking any SOA boxes that might coincide with that effort.
我建议小心你的客户,找出他们的意思 - 如果有的话。然后给他们一些实际上提供商业价值的东西,同时勾选可能与该工作重合的任何SOA框。
#3
4
Call me a SOA-skeptic. Fowler's lament still seems right on.
叫我一个SOA怀疑论者。福勒的悲叹似乎仍然正确。
I would focus on the more general problem: your client has 2 or more applications that have to collaborate together. Look at old school integration patterns.
我会关注更普遍的问题:您的客户有2个或更多应用程序必须协同工作。看看旧学校的整合模式。
EIP image http://rcm-images.amazon.com/images/I/51tVn4YqQUL._SL110_.jpg
EIP图片http://rcm-images.amazon.com/images/I/51tVn4YqQUL._SL110_.jpg
#4
3
Found this IBM Redbook (#sg246303) which is quite a good introduction to the basics of SOA.
找到了这本IBM红皮书(#sg246303),它非常好地介绍了SOA的基础知识。
#5
2
As Alan said, I'd start reading the Enterprise Integration Patterns book. There are a number of ways to implement them either using a messaging system directly such as JMS or using open source projects like Apache Camel, for example see the pattern catalogue.
正如艾伦所说,我开始阅读企业集成模式书。有许多方法可以使用直接消息传递系统(如JMS)或使用Apache Camel等开源项目来实现它们,例如参见模式目录。
I'd also look at understanding how to build good RESTful services using JAX-RS with Jersey as a simple way to expose resources for your systems to anyone on the web from any language/platform easily without falling into the SOAP/WS-* deathstar :)
我还将了解如何使用JAX-RS和Jersey构建良好的RESTful服务,这是一种简单的方法,可以轻松地从任何语言/平台向Web上的任何人公开您的系统资源,而不会落入SOAP / WS- * deathstar :)
#6
1
Get an ESB (enterprise service bus): Mulesource is a good choice (Opensource, Mature, yet bleeding edge) . Once you understand it, you will understand SOA.
获得ESB(企业服务总线):Mulesource是一个不错的选择(开源,成熟,但前沿)。一旦理解了,就会理解SOA。
#7
1
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.
目标是以最终客户端独立的方式开放各种流程,并使数据脱机可用,例如代表访问客户。
The second half of that isn't really an SOA topic, it's more of a replication to mobile devices problem. I would stay far, far away from trying implement a buzzword and focus on the problems that you are stating. Web services are good way to open up process to client independent ways.
其后半部分并非真正的SOA主题,更多的是移植设备问题的复制。我会留下很远,远离尝试实施流行语并专注于你所说的问题。 Web服务是以独立于客户端的方式开放流程的好方法。
#8
0
So far the best book I found is SOA Compass also available on Amazon
到目前为止,我找到的最好的书是亚马逊上也提供的SOA Compass
#1
6
Pitfalls
陷阱
- Versioning/backwards compatibility: it gets really hard to change a contract once you have loads of clients. I have seen many sites version the APIs by introducing the version in the URL
- 版本控制/向后兼容性:一旦有大量客户端,就很难更改合同。我已经看到许多网站通过在URL中引入版本来对API进行版本控制
Granularity
粒度
- Each service should be reasonly self-contained (don't expect people to do 3 calls before they get what they need)
- 每项服务都应该是合理的自成一体的(不要指望人们在得到他们需要的东西之前做3次通话)
Platform Independence
平*立
- Try to give more than one way of accessing your APIs (WS, JSON, REST...)
- 尝试提供多种访问API的方法(WS,JSON,REST ......)
#2
4
People can't agree on what SOA actually means.
人们无法就SOA的实际含义达成一致。
http://martinfowler.com/bliki/ServiceOrientedAmbiguity.html
http://martinfowler.com/bliki/ServiceOrientedAmbiguity.html
(although consensus may have grown since that was written)
(虽然自那以后达成共识可能会有所增长)
I suggest quizzing your client to find out exactly what they mean - if anything. Then give them something that actually provides business value, while ticking any SOA boxes that might coincide with that effort.
我建议小心你的客户,找出他们的意思 - 如果有的话。然后给他们一些实际上提供商业价值的东西,同时勾选可能与该工作重合的任何SOA框。
#3
4
Call me a SOA-skeptic. Fowler's lament still seems right on.
叫我一个SOA怀疑论者。福勒的悲叹似乎仍然正确。
I would focus on the more general problem: your client has 2 or more applications that have to collaborate together. Look at old school integration patterns.
我会关注更普遍的问题:您的客户有2个或更多应用程序必须协同工作。看看旧学校的整合模式。
EIP image http://rcm-images.amazon.com/images/I/51tVn4YqQUL._SL110_.jpg
EIP图片http://rcm-images.amazon.com/images/I/51tVn4YqQUL._SL110_.jpg
#4
3
Found this IBM Redbook (#sg246303) which is quite a good introduction to the basics of SOA.
找到了这本IBM红皮书(#sg246303),它非常好地介绍了SOA的基础知识。
#5
2
As Alan said, I'd start reading the Enterprise Integration Patterns book. There are a number of ways to implement them either using a messaging system directly such as JMS or using open source projects like Apache Camel, for example see the pattern catalogue.
正如艾伦所说,我开始阅读企业集成模式书。有许多方法可以使用直接消息传递系统(如JMS)或使用Apache Camel等开源项目来实现它们,例如参见模式目录。
I'd also look at understanding how to build good RESTful services using JAX-RS with Jersey as a simple way to expose resources for your systems to anyone on the web from any language/platform easily without falling into the SOAP/WS-* deathstar :)
我还将了解如何使用JAX-RS和Jersey构建良好的RESTful服务,这是一种简单的方法,可以轻松地从任何语言/平台向Web上的任何人公开您的系统资源,而不会落入SOAP / WS- * deathstar :)
#6
1
Get an ESB (enterprise service bus): Mulesource is a good choice (Opensource, Mature, yet bleeding edge) . Once you understand it, you will understand SOA.
获得ESB(企业服务总线):Mulesource是一个不错的选择(开源,成熟,但前沿)。一旦理解了,就会理解SOA。
#7
1
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.
目标是以最终客户端独立的方式开放各种流程,并使数据脱机可用,例如代表访问客户。
The second half of that isn't really an SOA topic, it's more of a replication to mobile devices problem. I would stay far, far away from trying implement a buzzword and focus on the problems that you are stating. Web services are good way to open up process to client independent ways.
其后半部分并非真正的SOA主题,更多的是移植设备问题的复制。我会留下很远,远离尝试实施流行语并专注于你所说的问题。 Web服务是以独立于客户端的方式开放流程的好方法。
#8
0
So far the best book I found is SOA Compass also available on Amazon
到目前为止,我找到的最好的书是亚马逊上也提供的SOA Compass