SOA and DDD

Source: Internet
Author: User

SOA is a technical architecture, Evans DDDIs the philosophical methodology, the direction is different, or the two are very irrelevant. Even in two different directions. Use DDDThe system can be built from scratch to large, and to a certain extent, you need SOA, integrating heterogeneous. If you say DDDAnd SOAIf there is any connection, then the component Componen may be the bond between them. The following analysis of these concepts below, please discuss the improper.

SOA Concepts

SOA is a high-level architecture that uses EJBS to DistributedComponent will not be considered after SOA, with DCE (distributed Computing Environment), CORBA (Common Object Request Broker Architecture), DCOM (D istributed Compone NT Object Model) or Ejb/rmi (Remote Method invocation), etc. DistributedArchitecture experience, transition to SOAis an easy concept, otherwise, without such a scalable architecture concept, SOA is particularly difficult for them to accept and is a very steep learning curve.

Many people in the current domestic database-centric software thinking, did not realize that the database is not Elasticity ofTo get them to accept DistributedComponent concepts are difficult, let alone SOA, which is SOAShouting for so many years in the country, there has been no large-scale application of reasons,
SOA and EJB As for some people very high-end, accept not overnight, nor I write two articles the database is dead can accept. This is a matter of overall quality and level.

One SOAArchitecture


SOA is a highly granular architecture for business reuse, a coarse-grained service, and an ESB is a conduit for communicating between these coarse-grained services, an ESB that communicates services to each other, and is a service-oriented architecture that implements loosely coupled.


SOA and COMPONENT/EJB

Using EJBS as SOAService implementations have many benefits and are a recommended ideal approach, but EJB is a DistributedComponent technology, or SOAService is somewhat different.

First, the service should be stateless, and the component component can have a state, although the EJB as DistributedComponent is SOAThe service is best implemented, but not all component component can serve as a service.

Second, the component component is a fine-grained, and SOAService is a coarse-grained, component is an object designed for reuse, and service is a better way to Elasticity ofScalability and design, attention, service is biased Elasticity of, and if the components are DDDAbout, implementing DDDThought involves the use of what component route, then SOAis already purely a completely Elasticity ofConcept.

Do not assume that the use of EJBS has a good Elasticity ofScalability, the distributed computing component does not represent a good Elasticity ofScalability, because their granularity is still too fine, the granularity is too thin, causing the call to be too frequent, aggravating DistributedNetwork load.

A business function is repeatedly called back and forth between many components, and SOAIt is the client using one call to a service, solve this business function, the display is concise, a knife to seal the larynx, but also because of performance problems, reduce network back and forth loss, SOA provides a reduced load, the same network environment can provide more functional load processing, so SOAIn Elasticity ofAspects are better than those fine-grained components of EJB or CORBA.

Component is fine-grained because it uses Evans DDDand other object methods to analyze the results of the design, the component can be regarded as a package of multiple objects, or can be an object, object methodology Evans DDDWe recommend that we keep layering, can be more than three layers, five layers or more into, until the maximum loose coupling, the final result will inevitably lead to trivial and granular very delicate. and SOAis a reverse process that needs to keep us up.


SOA and Evans DDD

As mentioned above, SOA is a functional block-oriented architecture, such as weather information Services, Google's query services, is coarse-grained, then is not used SOAThere is no need DDD, make a metaphor: DDD is to cut things very finely, and SOAIs packing, are these two not related?

I personally think the answer is no, if there is no very delicate loose coupling separation, then how to have SOAThe whole concept of the block? Fragments and the whole piece is a pair of contradictions of the two aspects, interdependent relative, if the loss of one side, the other side can not exist.

If not DDDSuch OOAnalysis design, if it is around the database analysis design, it is difficult to use the SOAThis coarse granularity is not related to the specific technology of the high-level architecture.

If you don't have OOSubdivision of concepts, but database-driven design concepts, you might be able to provide a database crud as a service, either JDBC or HTTP is not a service. Do not change the simple additions and deletions to such fine-grained services as SOAServices, based on curd, should be more complex reusable components, and then used on components to SOAThe service. SOA is a very high concept that requires a higher level of upward thinking.

It can be seen that SOA services are packaged again after the loose-coupling component is detached, and Evans DDDis a razor that cuts off component relationships. In this respect, DDD should be a more basic platform, with high-rise buildings on the ground, and DDDIs the synthesis of object methodology, set of analytical patterns and design patterns, when you master DDDAfter that, the distributed component EJB is the second level you conquer, the scalability scalability become a part of your architectural habit thinking, you can really enter SOAHigh-end "Wonderland".


Reference article:
http://www.theserverside.com/news/thread.tss?thread_id=44639

Http://www.jdon.com/jivejdon/thread/34676.html

SOA and DDD

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.