Tapestry for Nonbelievers
A new article by I. Drobiazko and R. Zubairov introduces v. 5 of the Apache Tapestry component-oriented web framework. The tutorial shows how to create a component and covers IoC in Tapestry and Ajax.
Tracking change and innovation in the enterprise software development community

Posted by Boris Lublinsky on Nov 22, 2006 01:00 AM



As the scope of SOA implementations expands from limited in scope departmental implementations to enterprise-wide undertaking the issues of enterprise data access are quickly starting to become one of the most important implementation issues. If not architected correctly from the very beginning, enterprise data access can become a major problem down the road. Design patterns presented in this article define different approaches to dealing with the enterprise data in the SOA environment along with the drawbacks and advantages of each approach.
Snapshots from SOA Governance: Artifacts, People, Processes, Repositories
Introducing the SpringSource Application Platform
Info 2.0: IBM's vision for the world of Web 2.0 and enterprise mashups (Webcast)
Delivering a Breakthrough Java Computing Experience
IBM Web 2.0 Developer eKit: Free Tutorials, Webcasts, Whitepapers
Boris Lublinsky has over 25 years experience in software engineering and technical architecture. For the last several years he focused on Enterprise Architecture, SOA and Process Management. Throughout his career, Dr. Lublinsky has been a frequent technical speaker and author. He has over 40 technical publications in different magazines, including Avtomatika i telemechanica, IEEE Transactions on Automatic Control, Distributed Computing, Nuclear Instruments and Methods, Java Developer’s Journal, XML Journal, Web Services Journal, JavaPro Journal, Enterprise Architect Journal and EAI Journal. Currently Dr. Lublinsky works for the large Insurance Company where his responsibilities include developing and maintaining SOA strategy and frameworks. He can be reached at blublinsky@hotmail.com
1 Steve Jones, Mike Morris, "A Methodology for Service Architectures"
2 Ali Arsanjani, "Service-oriented modeling and architecture Developworks", Nov. 2004
3 Boris Lublinsky, Dimitry Tyomkin, "Dissecting Service-Oriented Architectures", Business Integration Journal, Oct. 2003,
4 Michael Rosen, Boris Lublinsky, "Service-Oriented Integration: Aligning SOA with enterprise integration", Cutter Executive Report, Jan 2005
5 Pat Helland, Data on the Outside vs. Data on the Inside. An Examination of the Impact of Service Oriented Architectures on Data.
6 John Evdemon, "Principles of service design: Service patterns and anti-patterns". MSDN, August 2005.
7 James R. Borck,"Service Buses hit the road". InfoWorld, July 2005,
8 IBM Information Server
a Although this statement is true in general there are plenty of exceptions. There are situations where CRUD - type services are well aligned with the business functionality, for example, GetPoliciesForACustomer(customer), is an example of business meaningful CRUD service.
b I want to emphasize that when I am talking NOT about any particular product, but rather about enterprise service bus pattern.
c Despite of appearance of new products, when I am talking about data service bus I am talking purely about the pattern.
d For example, integration to the legacy rate policy implementation provides a typical case of the functional integration. On another hand it can be viewed as a consumer of policy information and producer of rate information.
e Additional rational for this approach is that regardless of the type of integration, data or functional, both input and output data needs to be transformed between semantic data model and legacy representation. Treating any integration as a data access allows for consolidation of this transformation.
"You can always handle complex problems by layering".That's true.
"Because any of the service implementation, in this case, has an access to any of the enterprise data it requires, such implementation allows to significantly reduce coupling between service - service invocation contains only data references (key), which change extremely rarely, while the actual data access is implemented by the service itself using enterprise data bus. This means that if the service implementation requires additional data for its processing, it can access it directly without impacting its consumers." Can you talk more about the "data references(key) mapping to actual data"? How does the service use the key to get the actual data through Enterprise Data Bus?
In Pattern 1 I'm pretty sure the so-called business services will include at least some services that Boris would regard as data services in other circumstances. I don't mind that, except that it undermines what follows. In Pattern 2 If only some data access routines are presented as business services, then pattern 2 is no different from pattern 1. If *all* data access routines are presented as business services, that seems like a pointless academic exercise. Pattern 3 This seems to add another tier in the platform, meaning extra message passing and network use, and impose another a layer on all applications, meaning extra dev and test effort. For what? I see the benefit to vendors - more service bus sales. I see the benefit to enterprise architects - one technical architecture imposed on everybody. The benefits to app dev teams are obscure. Extra tiers and layers can complicate more than they simplify. Missing Pattern 4 Where BEA sell to an enterprise both an ESB (enterprise service bus) and a DAT (data abstraction technology), then what is to stop the enterprise implementing some "data services" on the ESB and some "business services" on the DAT? Nothing, unless Boris can redefine for us a data service so as to distinguish it from a business service which (directly or indirectly) accesses enterprise data. Can you tell the difference when you look at the invocation/reply interface? If you can tell, then how? If you can't tell, then how can you judge whether somebody has implemented any of these patterns or not?
Thanks Graham for detailed response. One of the things that was important to me when I was writing this article was to try to distinguish purely data service from the business services (I probably did not do it clear enough) Business services are autonomous and are designed to minimize coupling, where coupling has many many facets, including temporal one. This means that asynchronous invocation is preferred interaction paradigm for business services invocation. Data services, especially data retrieval often play by completely different rules, they are often synchoronous in nature and require very fast responce time. This alone makes you want to logically separate the two. The other issue, typical with update services is requirement for multilevel transactional support, which is not the major strength of services implementations. These two alone vouch for trying to approach data services differently from business services.
Related post (mine): Data Services
A new article by I. Drobiazko and R. Zubairov introduces v. 5 of the Apache Tapestry component-oriented web framework. The tutorial shows how to create a component and covers IoC in Tapestry and Ajax.
In this interview, Burton Group consultant Pete Lacey talks to Stefan Tilkov about his disillusionment with SOAP, his opinion on REST, and addresses some of the perceived shortcomings REST vs. WS-*.
Jay Fields presents his concept of Business Natural Languages - a type of Domain Specific Languages geared towards being readable by domain experts.
Adoption and interest for Distributed Version Control Systems is constantly rising. We will introduce the concept of DVCS and have a look at 3 actors in the area: git, Mercurial and Bazaar.
Deborah Hartmann interviewed Segundo Velasquez about his experience as customer with an Agile team during the initial phase of software design of a product.
David Cooksey shows how to fine grained versioning to a ClickOnce deployment using an HttpHandler written with ASP.NET, making partial rollouts to a test audience much easier.
Windows workflow (WF) is an excellent framework for implementing business processes, but lacks support for human activities. This article describes a completely generic approach for changing this.
In this interview taken during OOPSLA 2007, Markus Voelter talks about the importance of documenting the software architecture, and gives some good and also bad examples on how it could be done.
5 comments
Reply