How to get up to speed on SOA? [closed]

给你一囗甜甜゛ 提交于 2020-01-01 02:44:39

问题


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.

I do have extensive experience with J2EE (Websphere) and web services but I would appreciate advice on how to build up such an 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!


回答1:


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

Granularity

  • Each service should be reasonly self-contained (don't expect people to do 3 calls before they get what they need)

Platform Independence

  • Try to give more than one way of accessing your APIs (WS, JSON, REST...)



回答2:


People can't agree on what SOA actually means.

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.




回答3:


Call me a SOA-skeptic. Fowler's lament still seems right on.

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.


(source: amazon.com)




回答4:


Found this IBM Redbook (#sg246303) which is quite a good introduction to the basics of SOA.




回答5:


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.

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 :)




回答6:


Get an ESB (enterprise service bus): Mulesource is a good choice (Opensource, Mature, yet bleeding edge) . Once you understand it, you will understand SOA.




回答7:


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.




回答8:


So far the best book I found is SOA Compass also available on Amazon



来源:https://stackoverflow.com/questions/125831/how-to-get-up-to-speed-on-soa

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!