|
Dynamic Service-Oriented Architecture
An SOA framework provides the innovation for building loosely coupled interfaces and cool composite applications
by Ted Farrell and Raghu Kodali
October 4, 2005
In today's technology environment, enterprises implement and manage increasingly complex business needs. These requirements are changing continually as markets shift because of global competitive pressures. To address the changing needs of the enterprise in a cost-effective and timely manner, a flexible and dynamic IT environment is needed. Let's look at an approach that allows you to manage complex enterprise business processes.
Creating a flexible IT environment can be achieved by using a service-oriented architecture (SOA). SOA is a technology architecture approach that enables the creation and assembly of services. These services are functionality exposed through an abstract interface that can be shared and reused across any number of applications. The shared and reusable nature of these services has given rise to the term loosely coupled. A collection of these loosely coupled services can be assembled into what are known as composite applications.
Developing a composite application can address the flexibility needs of an enterprise by enabling developers to assemble loosely coupled services to create a wide variety of applications, or extend existing applications. If used properly, these services offer substantial benefits to the enterprise. Loosely coupled applications promise to be easier to modify and update while still retaining the scalability and robustness of traditional applications. However, deploying loosely coupled applications requires consideration beyond the services of an SOA.
One of the most commonly overlooked aspects of composite application development is how to expose those services to the end user. While each of the individual services of an SOA is important in its own right, the true value is realized in the front end of the application. As with any application, the difference between a good composite application and an ungainly one often resides in the user interfaces. Therefore, a simplified SOA requires not only a standard way to create and expose loosely coupled services, but also a means to bind the data from these services into the user interface.
Dynamic Delivery
In typical service-oriented applications, heterogeneous back-end applications, systems, or services are exposed through standard service-oriented interfaces using Web Services Description Language (WSDL) with different types of bindings. While WSDL abstractions work nicely for Web services, few of them employ user interfaces that consume Web services directly through a WSDL interface. Most user interfaces are typically interacting with back-end business systems that directly contain business logic or communicate through specific adapters that bind to the data coming from the back end and invoke the business methods. As a result, most composite applications have user interfaces that are tightly coupled to the back-end business logic, thus limiting the flexibility that is expected from SOAs.
The correct approach to building user interfaces for composite applications would be accessing the back-end business logic not exposed as Web services. There have been attempts to address this approach by using templates or frameworks that would provide some loose coupling to back-end systems. However, most of these templates and frameworks are not scalable enough to meet the requirements of heterogeneous, back-end systems. On the other hand, standard enterprise development platforms, including J2EE 1.4, do not offer a solution either.
Historically, software frameworks have been viewed as proprietary solutions that bypass the complexity of sophisticated enterprise platforms such as J2EE. However, these frameworks were often based on proprietary technologies implemented by a single vendor, and concerns about vendor lock-in limited their success. Some open source projects such as Apache Struts have enjoyed substantial adoption for simplifying Web development but still do not fully address the needs of building user interfaces for composite applications in a large enterprise.
Back to top
|