Gopalan Suresh Raj
Web Cornucopia
Gopalan's Profile
Archives
« November 2009
SunMonTueWedThuFriSat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
     
       
Today
Click me to subscribe Download Open ESB
Syndication
Search

Table of Contents
Tags
bpel choreography ejb esb http integration javacaps javaee javaone jax-ws jbi management openesb orchestration process-oriented rest sca service-oriented soa soap wsdl xml xsd
Links
 
Referrers

Today's Page Hits: 73

Map of Visitors
Locations of visitors to this page
Caveat Emptor
This is my personal weblog. The contents of this Weblog represent my personal opinion which may differ from the official views of my employer, Sun Microsystems, Inc. or any past employers. I do not speak for my employer or any past employers.
View Gopalan Suresh Raj's profile on LinkedIn
« JBI/SOA Tips: Expose... | Main | JBI/SOA Tips: Do not... »
Tuesday Apr 24, 2007
Apr
24
JBI/SOA Tips: Expose Coarse-Grained Service Interfaces to external Clients

Expose Coarse-Grained Service Interfaces to external Clients. Instead of exposing multiple interfaces that effect small state changes in a system, expose fewer service interfaces that can affect complete state changes in the system. This will reduce the volume of data exchanges between a service and its external clients and will significantly reduce the cost of processing the data and improve the latency of network resources in the process. Always hide the details of the applications the service needs to interact with to get a job done by hiding them behind endpoints that expose coarse-grained interfaces. This will allow you to exchange richer business documents between a service and its external clients

Exposing service interfaces that are fine-grained could kill system performance. You can get into this situation if you blindly go about exposing your existing EJBs or legacy applications as web-services; something that can unintentionally creep in when you do Implementation-First or Code-First development. Your objective is not to expose getters and setters. Remember that unlike Object-Oriented programming where you are exposing objects, in SOA you are exposing services.

Here are some strategies that you could adopt: 

The service that you expose to external clients could perform aggregation on demand and retrieve the data from disparate systems. The Service Interface exposed to the client, when invoked, could aggregate this data from multiple different services and return a consolidated business document to its external clients.

Or better still, the service that you expose to external clients could also perform aggregation by replication. The aggregating service could contact other services during off-peak hours and replicate the data locally if it is possible. Then when external clients invoke the service it could return the aggregated data as a rich business document in real-time.

Like this write-up? Subscribe to receive  more  like it.


 

Posted at 02:18AM Apr 24, 2007 by Suresh Gopalan in A Tip a Day  |  Listen to this article Listen to this entry  |  Comments added Comments[0]

Comments:

Post a Comment:
  • HTML Syntax: NOT allowed

Disclaimer: The contents of this Weblog represent my personal opinion which may differ from the official views of my employer, Sun Microsystems, Inc. or any past employers.



View blog top tags

Enter your email address:

Delivered by FeedBurner

[Valid RSS]