Relationship between SCA and BPEL

Posted 2007. 5. 30. 09:51

http://www.osoa.org/display/Main/Relationship+between+SCA+and+BPEL

 

SCA and BPEL - Rivals or Friends?

Sometimes, when talking about composite service-based applications, people get confused about the roles of SCA and of BPEL and consider that these two technologies are in conflict or that they are trying to perform the same roles.  This isn't the case - far from being rivals, SCA and BPEL are firm friends and are complementary parts of a business solution, each with its own role to play.

However, the similarities between SCA and BPEL show why there is the possibility for confusion.  First, both BPEL and SCA are described in terms of a formal language that is based on XML.  Secondly, both languages may be used to describe a business service that is implemented by composing together other business services and both can describe inbound and outbound service interactions types by WSDL port types.  There the similarities end.  The important difference between SCA and BPEL is that SCA is all about describing the structure of the application while BPEL describes business logic involving the sequencing of operations in a business process.

Putting this in another way, SCA is concerned with what components exist in the business application, what services those components offer, what service references those components depend on, how the components are connected together, what endpoint addresses and communication methods are used for the connections, what policies are applied to components and to the connections between them. BPEL is concerned with business logic and the sequences of operations which are performed to execute an individual business process. BPEL processes provide and consume other services through partnerLinks, but these are abstract interfaces that must be connected to actual endpoints and communication methods through configuration.

So, SCA describes the structure of a business solution in terms of business components and their connections, but the sequence in which particular services are invoked is determined by the business logic of the implementation used for each component. It is a good combination when the components are implemented as BPEL processes within an overall SCA assembly, since then it is possible to get a combined view of structure and sequence.  Of course, SCA does not force this as a requirement and components may be implemented in any supported programming language, such as Java or C++.  In this case, sequence decisions are made in the implementation language of the component and it may be harder to work out the sequences involved.

So, BPEL and SCA are the firmest of friends and work well together when building business solutions as sets of services. The following sections provide some details and some examples as to how this works in practice.

 

 

SCA and the Structure of Composite Applications

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SCA is useful for describing the structure of composite service applications.  To get a better sense of what this means, an example application is shown in the following diagram:

In this example, the Order Processing service is offered for use by customers, most likely as a Web service available over a general protocol such as SOAP over HTTP.  This may have a set of operations such as "createOrder", "checkAvailability", "getOrderStatus" and so on.

The Order Processing service is implemented by the OrderProcessing Component.  In turn, the OrderProcessing component makes use of services provided by other components, represented by the EventLog component, the AccountsComposite and the WarehouseComposite.  The names of those components already indicate how they are implemented - EventLog is a simple implementation, for example a Java class, while AccountsComposite and WarehouseComposite are each a composite set of components which work together to provide the services used by the OrderProcessing component.

The OrderProcessing component does not need to know the structure of the AccountsComposite or the WarehouseComposite - but the assemblers and developers responsible for those parts of the solution certainly do!

So, SCA shows what components make up a particular business solution and it shows how they are connected together. SCA provides more information than this, if it is needed.  For example, SCA knows what binding is used for each connection.  The OrderProcessing component may, for example, connect to the PaymentService using an EJB binding, if the AccountsComposite is implemented as a Java EE application using EJBs.  Meanwhile the OrderProcessing component might connect to the WarehouseService using a JMS binding using an underlying messaging infrastructure.  SCA may also apply particular policies to these connections.  For example, accounts information may be regarded as sensitive and so require that all operations on the PaymentService are encrypted.  The same operations may also require authentication to ensure that only trusted users are invoking the operations.  Meanwhile some of the operations on the WarehouseService, such as those involved in dispatching orders to the customer, must be performed transactionally and reliably, so that the OrderProcessing component can be assured that the order is dispatched once and once only.

What SCA does not do is in any way show the sequences of operations associated with the OrderProcessing service. So, the checking of the customer's account status, the checking of the inventory status of the order items, the calculation of the price of the order items, the billing of the customer, the request to dispatch the goods to the customer - all these operations (and more!) may be required to complete a "createOrder" operation, but their sequence is entirely determined by the code used as the implementation of the

Spring SCA

Posted 2007. 4. 24. 09:20

[Flash] http://www.liferay.com/c/document_library/get_file?folderId=65&name=home_4_2_530x190.swf



http://content.liferay.com/4.0.0/flash/tutorials/liferay_demo.swf

END USER를 위한 다큐먼팅 ^^
http://www.liferay.com/web/guest/documentation/4_2/end_users


오래전 LifeRay기사를 내면서 많이 고생했던 기억이 난다.
별안간 분석을 하게 되어서 많이 힘들었다. 그때 토비형이 많이 도움 줬던 기억이 생생히 난다.
많은 사람들이 외면했던 것도 기억이 난다.T.T
열심히 분석했더니...기술은 괘얀은듯 했으나 코드는 엉망였다. 꼬리에 꼬리를 무는 구조...

다만 포틀릿 엔진을 자체 제작 했었다는게 조금 신기 했다. 문서를 자세히 보면 많은 부분에서
포틀릿에 대한 구현이 된것이 보인다.
오래 되었지만...기억상으로는 이 LifeRay는 코드상 재귀 호출을 하고 있었던것으로 보였었다.
기억이 가물가물....T.T
http://toby.epril.com/?s=liferay
참조... ^^

SOA를 위한 Portal로서의 기능을 갖추기 위해 JBI스팩의 ServiceMix의 연동을 도입하였고...
JBPM등을 도입하였다. 이렇게 되면 어느정도 기술적으로는 SOA를 위한 기술들을 갖추었지만...
SOA는 기술로만 되는게 아니지 않더냐...T.T 수많은 아키텍처적인 고민을 통해 SOA의
철학이 완성되지만 아직도 많은 고민이 필요하다.

사용자 삽입 이미지


















http://www.liferay.com/web/guest/products/portal/supported_technologies
위의 링크와 같은 기술들이 쓰였다.


분석 당시 아래의 아키텍처때문에 분석을 하게 되었었다. 그것이 가지는 절대적인 미학을 위해 분석을 하게 된것이다.... 그런데 약간은 실망....T.T
얼마나 유연한 구조를 제공하느냐는.... 그런 이유였었다...
그때 당시 나의 가장큰 기술적인 이슈는 당연히 Spring, Hibernate 였다. 많은 레퍼런스가 필요하던 차에
LifeRay는 나게에 빛과 같이 중요한 Portal Framework였다.
얼마전 Portal에 대한 자료를 보다가 문득 생각이 났다.
최근 기업에서도 SOA프로젝트를 한다고 하면 Portal이 빠지지 않고 나온다....


사용자 삽입 이미지



































사용자에게 기술이 무슨 상관이 있으랴.... 사용자는 편리하기만 하면 된다.
그러한 이유에서인지...사용자 위주의  Ajax가 도입된것도 많은 발전이 있어 보인다. 그러나...T.T
소스코드의 정제는 없었다는거.... 여전히 같은 아키텍처라는게 맘에 걸린다. ㅋ


다른 서버의 이식성에서는 높은 점수를 주고 싶었다. EJB, Non EJB방식의 지원등이 그러하였고...
500여개의 Client site에 이식하면서 많은 노하우를 쌓은듯...

Application Servers
BES     Borland ES 6.5
GER     Apache Geronimo 1.1
GLF     Sun GlassFish 2.0 M2
JB     JBoss 4.0.3SP1, 4.0.4, 4.0.5
JFX     JFox
JON     JOnAS 4.4.3, 4.7.7
JR     JRun 4 Updater 3
O     OracleAS 10.1.3
ORI     Orion 2.0.6
P     Pramati 4.1
REX     RexIP 2.5
SUN     Sun JSAS 8.01
WL     WebLogic 8.1 SP4, 9.2
WS     Websphere 5.1, 6.0.x

 
Servlet Containers
JET     Jetty 5.1.4
RES     Resin 3.0.14
TOM     Tomcat 5.0.x/5.5.x
OS

AIX

BSD

Linux
Solaris
Windows
Mac OS X
 
Databases
AD     Apache Derby
DB2     IBM DB2
FIRE     Firebird
HYP     Hypersonic
INT     InterBase
JDS     JDataStore
MY     MySQL
O     Oracle
PSQL     PostgresSQL
SAP     SAP
SQL     SQL Server
분석당시 많은 불만이 많았던...다큐먼팅은 많이 개선되었지만...아직도...T.T
그러나 문서화면에서는 정말 많은 개선이 있는게 틀림없다.
http://www.liferay.com/web/guest/documentation



PS : LifeRay Portal의 Demo를 볼수도 있지만... 직접 설치함을 권장함....
사이트 접속 매우 느림...T.T

오랜만에 글을 써서 두서도 없고 정신도 없다는.... 보실분은 알아서 보실듯....T.T
내일부터는 출퇴근하면서...TDD를 다시 연마 해야겠다는....
흠.... 할게 많다. 말뿐인 아키텍트라는 말 안들으려면.... 할것도 많고... 볼것도 많고...
여러가지 꾸준히 관심도 가져야 하고....

많은 사람들도 알겠지만... 아키텍처가 어디 기술만 가지고 되더냐....
가끔 기술베이스의 아키텍트를 보기도 하지만.... 기술이라는 거는 언젠가는
후배들이 차지하게 될텐데.... 게다가 기술은 끊임없이 빠르게 변한다.
또한 경험이 많아야 아키텍트로서 살아 남지 않을까 싶다.
어떤 아키텍트는 프레임워크 검증을 하라고 하면 어떤 사람들은 게시판을 만든다.
그걸로 검증이 될까 ??


아키텍트는 두마리의 토끼를 잡아야 한다.  기술, 비지니스.....
기술과 비지니스를 결합하는게 S/W 아키텍트라고 말하고 싶다.

간단한 JBI 설명

Posted 2006. 12. 12. 17:19

간단해서 보기 좋다.

JBI-A standard-based approach for SOA in Java

By Mareej Kinnumpurath
13 Dec 2005 | TheServerSide.com

The industry has witnessed the evolution of a wide range of solutions addressing the problem space of B2B and enterprise application integration (EAI). These solutions varied from proprietary message oriented middleware to standard JMS based solutions and web services. This paper provides a brief introduction to the upcoming JBI (Java Business Integration) standard in relation to SOA (service-oriented architecture) principles and the ESB (Enterprise Service Bus) infrastructure.

Service Oriented Architecture

SOA (service-oriented architecture) is one of the latest developments that have made a huge leap in the area of application and business integration. SOA defines a set of well-defined architectural principles, paradigms and best practices to enable loosely coupled interaction between applications.

SOA promotes loosely coupled interaction between participating applications based on well-defined interfaces. Service implementations are self-contained and don’t depend on the contextual information and state of other services. Service interactions are mainly based on exchanging document-style data, defined using a standards-based messaging model. The services themselves are agnostic to the transport level interactions required to enable the communication between the service provider and service consumer.

Even though not a mandatory requirement, most of the modern SOA based systems utilise web services and related technologies for providing the required plumbing for the interactions between services. WSDL (Web Services Definition Language) is used as the main artefact for representing messaging models; SOAP as the message representation protocol and HTTP as the wire-level transport protocol. This doesn’t mean you always need to use the aforementioned technologies for implementing systems based on service-oriented architecture. Lot of enterprises have used similar architectures for realising loosely coupled systems, well before any of these buzzwords came into existence. However, the key difference is that now we have standards-based protocols, toolsets and software for enabling service oriented architecture.

SOA principles are significantly different from object-oriented paradigms and principles. The key difference is that the interactions between services are defined using interfaces that are oriented more towards data than behaviour. A service in isolation may be realised using object-oriented principles and techniques, however, the interactions between the services seldom use any of these techniques. Rather, these interfaces are geared more towards document-based interchanges. Where object-orientation binds behaviour closer to data, service-orientation decouples data from behaviour.

Enterprise Service Bus

An ESB (Enterprise Service Bus) provides the infrastructure for realising service-oriented architecture. ESBs provide a runtime environment for deploying and enabling your services augmented with design-tools for defining the interaction and orchestration of the services.

In the ESB world the services don’t directly interact with each other. Rather, the ESB runtime acts as a mediator between the services to loosely couple them. The ESB runtime would implement protocol bindings, message translation, message handling etc.

The key services provided by an SB would include:

  • Providing transport bindings for the services
  • Providing definition and discovery of the deployed services
  • Rules based routing and orchestration of messages between services
  • Value added services including document transformation etc

Most of the ESB vendors base their SOA proposition on open standards and technologies including the various web services standards and protocols. They provide a variety of transport bindings for invoking the services including HTTP, FTP, and JMS etc. Most ESBs use WS-BPEL (Business Process Execution Language for Web Services) for realising orchestration between the deployed services for implementing business processes. ESB vendors also provide quality of service features including fault-tolerance, failover, load balancing, message buffering etc.

Java Business Integration

JBI (Java Business Integration) is a Java-based standard addressing the EAI and B2B issues based on the paradigms and principles advocated by service-oriented architecture. The current version (1.0) is finalized through the JSR (Java Specification Request) 208 in August 2005. Both commercial and open source worlds have already started embracing JBI as an integration standard in their ESB products.

Mediator-based Architecture

JBI defines a plug-in based architecture where services can be plugged into the JBI runtime environment. JBI provides well-defined interfaces for services to interact with the JBI runtime environment. The services need to expose interfaces to the JBI runtime environment for the JBI runtime environment to route messages to the services. The JBI runtime environment acts as a mediator between the services that are deployed in the environment.

The JBI runtime core mainly comprises of the following components within the same JVM:

  • Component framework: The component framework enables the deployment of the different types of components within the JBI runtime.
  • Normalized Message Router: Normalized message router enables a standard mechanism of message interchange between the services.
  • Management framework: The management framework based on JMX enables the deployment, management and monitoring of components within the JBI runtime.

Component Model

JBI defines two types of components in the JBI runtime environment,

  • Service Engine Components: These are components responsible for implementing business logic and other services. The SE components can internally be realised using various technologies and design principles. SE components can be as simple as a component that provides low-level services like data transformation and translation or something more convoluted as a WS-BPEL instance that models an intricate business process.
  • Binding Components: Binding components are mainly used to provide transport level bindings for the deployed services. BC components can be of a variety of types including,
    • Enabling remote communication with external systems using standard transport protocols.
    • Enable in-VM invocation between two services deployed in the same JVM.
    • Enable communication between services using standard WS-I (Web Services Interoperability) profiles.

The key aspect of JBI is the decoupling of the service engine and binding components so that business logic is not infested with the infrastructure details required for invoking and consuming services. This promotes a flexible and extensible architecture. Both BC and SE components within JBI can be service providers and/or service consumers.

Both BC and SE components provide interfaces to the JBI runtime for accepting messages from the JBI runtime. Similarly, they use interfaces provided by JBI for communicating with the JBI runtime.

Messaging Model

JBI uses a messaging model that decouples the service consumers from the service providers. The messaging model is defined using WSDL. WSDL is used to describe the operations exposed by both SE and BC components. WSDL is also used to define transport level bindings for the abstract service operations.

One of the key components used in the JBI architecture is NMR (Normalized Message Router). NMR provides the main messaging spine built around WSDL, which provides the loosely coupled message exchange between the SE and BC components deployed within the JBI runtime. Services are required to have interfaces, which are an aggregation of operations. Each operation is composed of zero or more messages. An interface can have one or more transport level bindings.

JBI uses a normalized format for representing messages within the runtime. A normalized message is composed of the following parts,

  • Message properties
  • Message payload
  • Message attachments

The JBI specification provides standard interfaces for the service consumers and providers for exchanging messages with the NMR. NMR supports both one-way and request-response semantics for service invocation between consumers and providers.

Management

JBI uses JMX for the runtime installation, configuration and monitoring of services. The services are required to implement a set of JBI interfaces to make them manageable in the JBI environment. The JBI environment is required to provide a set of JMX MBeans to enable the management of the JBI runtime.

The JBI runtime environment allows the following operation related to the SE and BC components,

  • Installation of components: This will make the component interface available to the normalized message router.
  • Installation of component artefacts: This will allow deployment of component artefacts required for the functioning of installed components. For example, this could be deploying the connection details required to connect to a database for a deployed service that requires connecting to the database.
  • Starting and stopping of services and groups of related services.

JBI defines standard deployment descriptors and packaging models for both components and component artefacts.

Roles

JBI identifies the following roles for providing an end-to-end JBI based EAI solution,

  • Engine developers: Engine developers are required to provide the SE components that adhere to the NMR and management contracts.
  • Binding developers: Binding developers provide the binding components that adhere to the NMR and management contracts.
  • JBI Environment providers: JBI environment providers are required to support the JBI runtime using either J2EE 1.4 or J2SE 1.4 r newer platform.
  • J2EE Platform providers: J2EE platform providers may include a JBI runtime as part of their application server offerings.
  • JBI Application developers: JBI developers build JBI applications using the SE and BC components and the JBI environment.

Conclusion

With the whole industry aligning more and more towards open standards and specifications, JBI takes a great leap in enabling Java technologists adopting a standards-based approach in addressing integration issues using service oriented architecture and ESB infrastructure. Both commercial vendors like Oracle and open source software like ServiceMix have already started adopting JBI as part of their ESB offerings.

About the Author

Meeraj Kinnumpurath works as a Java architect with VOCA Ltd (formerly BACS), who are the largest clearing house in Europe. He has been using Java for the past eight years, developing enterprise applications. He has also published a few books on Java, J2EE and Web Services.

ServiceMix에 대한 구체적인 글

Posted 2006. 12. 8. 22:08
http://www.itarchitect.co.uk/articles/display.asp?id=222

Plug into JBI with ServiceMix

Put this 100% Java Enterprise Service Bus to work for you today.

http://www.javaworld.com/javaworld/jw-07-2006/jw-0717-jbi_p.html

Data관점에서의 SOA

Posted 2006. 11. 23. 21:26

JBI VS SCA

Posted 2006. 11. 22. 17:51

http://www.chwlund.com/?p=60

After the release of the Service Component Architecture (SCA) specification last month there have been a lot of discussion related to how SCA relates to Java Business Integration (JBI) (JSR-208). I will try to clear thinks up, all in all (if you dont have time to read more): SCA is a specification to make developers make services (in a SOA) in a standard, consistent and technology-independent way and JBI is a specification that defines how integration products should look like and how vendors could actually choose to design an integration product or component (standardization between integration technology vendors)

I have written about Java Business Integration in another post. Read this to learn more about JBI. To sum it up, JBI is all about the standardization of integration products (mainly ESBs). JBI specifies an architecture and an API that should be used when developing integration products. So, in our everyday consultant lifes, we do not have to care so much about this standard, but I think its a really important standard for the integration market, because it opens up integration solutions and makes it possible for different vendors to collaborate. I have written a lot more about this in my older post.

SCA, on the other hand, will maybe influence our everyday life much more than JBI. SCA is a specification that defines how we as developers should write services in a service -oriented architecture. Its like a general WSDL, but also much more. It defines how a service should be described and how it relates to other services. In this way we can define services independent of the technology used to implement it.
A white paper from IBM shows a specific example of how SCA will change how we develop services:

A EJB represents a reservation service for a airline-company and the service is loaded by the application like this:

// Get the initial context as shown in a previous example
...
// Look up the home interface using the JNDI name
try {
java.lang.Object ejbHome =
initialContext.lookup(
"java:comp/env/com/ejb/CarReservation");
carHome =
(CarReservationHome)javax.rmi.PortableRemoteObject.narrow(
(org.omg.CORBA.Object) ejbHome, CarReservationHome.class);
}

catch (NamingException e) { // Error getting the home interface
...

This is fine if you only use EJBs and your future services only will be EJBs. But what if you have to implement the reservation service using a different kind of java component or even another technology platform (like .Net). Then its better to refer to your services in a more neutral and transparent way, like this:

ModuleContext moduleContext=CurrentModuleContext.getContext();
AirReservation airReservation= (AirReservation)moduleContext.locateService(“AirReservation?);
airReservation.bookFlight(flight);

Dave Schaffer says this about the relation between JBI and SCA:

One of the beauty of SCA is that it is focusing only on things that a SOA developer sees and touches. SCA does not care about how the runtime that is going to execute a SCA module is architected.

SCA defines services and a way to create them, but it does not say anything about how the runtime enviroments should be like. A SCA service could be executed by an integration product like an ESB. And this ESB could be designed according to JBI. So, summed up, there may not be any relation between SCA and JBI, but they are two very important standard that may function complementary in a service-oriented architecture and you may end up running your SCA services in a JBI-compatible integraton suite. Please correct me if I am wrong, because I havent got a deep understanding of SCA yet…

Links:
Dave Schaffer: SCA, JBI and more..
The serverside: Discussion
Servicemix.org: How does ServiceMix compare to Tuscany or SCA

Entry Filed under: Uncategorized

Comparing SCA, Java EE and JBI

Posted 2006. 11. 22. 17:44

https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/2824

Blogs

Jean-Jacques Dubray

Comparing SCA, Java EE and JBI
Jean-Jacques Dubray SAP Employee
Business Card
Company: SAP Labs, LLC
Posted on Dec. 12, 2005 02:25 PM in
Java Programming, SAP NetWeaver Platform, Technologies

Java EE is one of the most successful application model and rightfully so. It greatly simplifies the development of stand alone, scalable, available, secure and transacted web applications. Everything in its application model is designed to process an arbitrary number of simultaneous requests and create a response synchronously as fast as possible. JSPs/Servlets, Session beans, Entity beans (as an in memory data cache), the security model, the transaction model, ... are all assisting the developer in creating these responses, in the richest and fastest possible way.

In fact, JEE has been so successful it has imposed itself as the main and preferred way of accessing back-end data, not just as a way to write new and cool stand alone web applications. Back-end integration is not easy, technologies are varied and often rustic to say the least, and most back-end systems were not designed  with the requirements of web applications in mind. There are three approaches to develop back-end integration solutions: invocation, mediation and activation.

image

Invocation has been the most commonly used approach used to date through technologies such as JCA, JAX-WS or WS-IF which are well aligned to support the request/response model but fail to support complex long running integration scenarios associated to particular application states. This is precisely one of the problems in JEE today because back-end integration does not always fit well the synchronous request/response model.

Mediation, is not new, and has been applied through proprietary products and frameworks for a decade. Last summer the JCP published an API to build standardized mediation infrastructure: the JBI specification. JBI is based on the "mediated message exchange" pattern: when a component sends a message to another component, this interchange is mediated by the JBI infrastructure, namely the NMR or Normalized Message Router. The NMR functionality can be augmented by Service Engines (such as transformation or orchestration engines) to facilitate the mediation with back-end systems. However, centrally coordinated architectures, such as JBI, have historically always struggled with the problem of "who manages the central infrastructure". The problem is most acute in B2B scenarios where most companies don't want to incur the cost of "mediating" message interchanges unless there is some value add. Actually, the JBI specification explicitly excludes from its scope the normalization of the interactions between two JBI instances. These type of interactions happen behind binding components in a completely proprietary way. This restriction greatly compromises the composition capabilities of JBI instances. Hence, JBI is well suited to solve small and local integration problems.

Activation is a relatively new approach to the problem. It consists of producing components which can be accessed via different middleware, synchronously or asynchronously. Activation maximizes the autonomy of the components themselves and their ability to be composed with other components. In particular, this means that the business logic implemented by a component cannot depend or rely on any specific middleware facilities. This is the component model proposed by SCA. In SCA, activation applies either at the component level or at the module level. A module is an assembly of components running in the same process. 

SCA enables arbitrary topologies of systems, supporting synchronous and asynchronous, client/server, peer-to-peer, long running or short lived interactions. SCA does not make any assumption about company boundaries and enables exposing a system as a component participating in another system, each of which having different managing authorities, i.e. company boundaries may be defined or shifted arbitrarily across an SCA system. SCA is well suited to solve any integration problem in particular the most complex ones, including the ones solved by mediation and invocation infrastructures. In many ways, SCA can be viewed as a decentralized mediation infrastructure where mediation happens either at the provider or the consumer side, without necessarily involving an intermediary.

To further understand the differences between the 3 approaches, let's look at how a "connected system" is assembled, i.e. how the wiring is defined and enacted in each approach. In an invocation based infrastructure, the wiring is usually defined via a "connection string containing the end point reference and some credential. In a mediation based infrastructure, the connected system is defined via a configuration file that contains the specification of a particular assembly of components, routing rules, ... This specification is consumed by the JBI infrastructure (NMR, Binding Components and Service Components). However each binding component retains its own proprietary mechanism to specify wiring to the service provider or consumer behind the binding component. In SCA, there is no central coordinator and an assembly of components is deployed to each component type, which activate components (instances of component types) for each unit of work being performed.

I do not want to end this note just by saying that SCA offers a new integration model because, SCA is also and above all a new application model, i.e a new way to build applications as an assembly of autonomous software agents, exposing service interfaces. SCA is innovative because it offers a unified application and integration model.

We can expect that Java EE and SCA will coexist offering a complementary application model while JBI will be used in traditional Enterprise Application Integration scenario. 

Jean-Jacques Dubray is a Standards Architect at SAP Labs, Palo Alto.


둘이 공존하는 방법을 잘 설명해 뒀다. 두개의 스팩....

SCA - 자료 모음

Posted 2006. 11. 4. 20:09
http://www-128.ibm.com/developerworks/library/specification/ws-sca/
http://dev2dev.bea.com/pub/a/2005/11/sca.html

http://xml.coverpages.org/ni2005-12-07-a.html 읽어볼만한 글

http://slashdemocracy.org/links/Service-Oriented_Architecture/

http://www.eclipse.org/stp/  Eclipse의 STP 프로젝트
이것은 PPT
역시나 나는 오픈소스가 여전히 좋다. 언제나 이를 껴안을 준비중임

SCA 여전히 스팩은 0.9 이며 1.0이 나오기를 눈빠지게 기다림

SDO vs EJB 3.0

Posted 2006. 11. 3. 22:34
앞으로 SDO가 많이 쓰일듯 하다. 이유는 아래와 같다.
아래글 참고 ^^

바로 이전 프로젝트에서 FireStorm SDO를 사용해봤다. 아직까지는 익숙치 않은 개념이지만 조금씩 몸에 체감되어 감을 느낀다.

최근 "서비스는 무엇이며 컴포넌트와의 관계는 무얼까" " 라는 대주제 때문에 머리가 아프다.

많은 사람들이 SOA에  많은 의구심을 가진다. SOA라는 아키텍처는 가트너 그룹이 10년쯔음 말한 개념들이다. 많은 의심속에 나는 의심을 많이 하지 않기로 했다.
달에 로켓을 쏘아 올리기전 많은 사람들이 로켓의 모양을 상상하고 그 모양이 달로 가는 진짜 로켓의 모양이 된것 처럼 SOA도 점처 구체성을 가지지 않을까 하는게 내 생각이다.

SDO versus EJB 3.0
The purpose and objectives of the SDO 2.0 and EJB 3.0 (sometimes referred to as Java Persistence API - JPA) specifications are so different that it is possible to say that they are complementary rather than competing.

SDO is a very ambitious attempt to provide a single, highly flexible API for all types of data in Service Oriented Architectures. EJB 3.0 is aimed making EJB more simple, with the new data persistence support based on Object Relational Mapping (ORM), with strong contributions from the Hibernate and Oracle ORM tool developers.

Language Support
-EJB 3.0 is Java-only
-The SDO API is published in both Java and C++, but also possible to implement in other programming languages (there's a PHP implementation). SDO defines a set of SDO data types to ensure portability between different data source types and for compatibility between languages. To date, SDO implementations exist for Java, C++, and PHP. EJB 3.0 is Java only does not address multi-language data compatibility.

Data Types and Formats
-EJB 3.0 data persistence is aimed at relational data held in databases
-SDO is for any type of data, with relational data only one example. When developers learn the SDO API, they can access any type of data supported by the SDO implementation they are using. As well as providing a standardized API for accessing data across multiple data sources, SDO also provides a common API for accessing metadata about the data source. While the SDO data access API provides DataGraph and DataObject interfaces for accessing and updating data, the SDO metadata API provides Type and Property interfaces.

EJB 3.0 is Based on ORM, Whereas SDO is Focused on Data
-EJB 3.0 is strongly based on ORM technology, which is designed for persisting data in an Java objects to a relational database (known as the 'logic first' approach) or mapping between the Java objects and an existing relational database (known as the spaghetti junction approach).
-SDO takes a 'data first' approach, where it is assumed that the database will be optimized (and normalized) and may last longer than the actual business application. Assuming that the database is the focus point for the data, FireStorm/SDO reverse engineers the database schema to produce the persistence code.

SDO is for Service-Oriented Architectures
-EJB 3.0 is for traditional stand-alone (monolithic) Java applications, typically with client-server architecture
-SDO supports the concept of disconnected programming model, making it ideal for service-oriented architectures. The disconnected DataGraph means that databases are not locked because data is modified offline.

SCA and J2EE Specifications
-EJB 3.0 is part of JEE (the rebranded J2EE), which has been the dominant application development platform for the past several years
-The latest version of the SDO specification was released in conjunction with the Service Component Architecture (SCA) specification. SCA enables peer-to-peer interactions between services in a distributed SOA architecture. SCA is the industry response to Microsoft's Indigo/WCF strategy and is probably the most important development in SOA/Web Services in the past couple of years.

Tightly versus Loosely Coupled
-EJB 3.0 is embedded and tightly coupled within an application
-SDO implementations can be designed for a lightweight and distributed architecture. The SDO specification enables both a static (or strongly typed) programming model and a dynamic (or loosely typed) programming model.

With such different objectives and characteristics, it's not possible to say if EJB 3.0 or SDO are 'better' data persistence specifications. However, that does make it possible to produce some broad guidelines:

If you are developing a traditional (non SOA) application and only have relational data and are only developing in Java, then EJB 3.0 is a good choice.

If you are developing using a SOA, if you need to access multiple types of data, then SDO is a good choice.

PJ Murray
CodeFutures Software

링크