如何加快SOA的速度?

时间:2023-02-02 02:43:45

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