Wednesday, October 17, 2007

Application Blocks

While developing an application, even a very simple logic can be accomplished in variety of approaches. Finally it is up to how effectively or efficiently the logic is implemented. Whether it is a direct approach, has leveraged and squeezed much of the facilities of that programming language and architecture, can withstand and easily provide rooms for changes and enhancements, whether it is easily extensible etc…
In Software development, specific customer segments have common needs at a higher level of abstraction. The platform does not always directly support these without a lot of manual work.

Application Blocks are such code libraries which is build up on optimized design patterns against common programming scenarios which need to be done in almost every application. Thus it provides the platform suitable for a wide variety of application types and architectures.

A good Application block should :

Enforces consistent development patterns

Provide a good level of abstraction between the business logic and the common scenario which is implemented in the current application block, so that we can easily plug this into any application
Should provide extensibility points that let developers tailor the application block to suit their needs. The most common use of extensibility points is to allow developers to use their own providers
It should provide good performance
Provide proper kind of guidance regarding the implementation
So before development choose your appkication block wisely :)

Wednesday, October 10, 2007

Service Oriented Architecture (SOA)

A service-oriented architecture (SOA) is a collection of services which thus lead to automation logic. These services may or may not communicate with each other to accomplish the application task...

When we say services, it refers to a discretely defined set of contiguous and autonomous business or technical functionality. A service is much like a function that is well-defined, self-contained, and does not depend on the context or state of other services. In fact, they just provide/offer a service by it’s own.

The term service oriented approach is not new; it is there from the long olden age of COM /DCOM and still survives and finds its existence in the software architecture space. Recently Microsoft has used this approach to design and implement WCF (Windows Communication foundation formerly known as Indigo) in Microsoft .Net framework 3.0

In an SOA environment independent services can be accessed without knowledge of their underlying platform implementation or other internal details which helps us greatly in interconnection like scenarios.Normally in this scenario, there will be a service consumer or service agent sending a service request message to a service provider. The service provider returns a response message to the service agent. The request and subsequent response connections are defined in some way that is understandable to both the service consumer and service provider
One of the other features of this approach is that the client is not tightly coupled to these services, both the client and services are independent of each other, thus the client is free to interact with whatever services are required