Services and Components

A lot of discussions about Services vs. Components are currently taking place in the blog sphere.
The debate is especially difficult because terms like Component, Service or Widget have a lot of different meanings dependent of whom you ask.
Apart from that I think the phrase Services vs. Components is a bit misleading because this leads to an either-or kind of thinking which is not really helpful.

So please let me add a another kind of definition which uses a more historical approach:

In the very beginning we had Functions. These functions offered raw functionality which was not very organized and therefore often lead to messy code.

Later Objects were invented which gave us the opportunity to model concepts of the real world in our code. Much better but still messy because of tightly bound object systems and white box inheritance and reuse.

In order to solve this Components introduced the notion of explicit interfaces and encouraged black box reuse. Much better but still not open because of platform affinity or complexity, e.g. COM-components, Java-Beans, Corba-Servants.

Now Services add the platform neutral protocols which provide reachability from any platform that supports these protocols.

The main difference between components and services is not the design granularity, although it apparently doesn’t make much sense to create fine grained services. The main difference is openness and reachability.

Conclusion:
A service is a component which is reachable from any platform by using standard protocols.

If you have other definitions which elucidate the subject, please let me know.

TechEd Amsterdam

Third time in a row I am selected as MCT proctor at the TechEd 2005 conference in Amsterdam, The Netherlands from 4.July to 8.July. I will be supporting the conference delegates at the Hands-On-Labs and Ask-the-Expert stand presumably as a subject-matter expert for Biztalk Server 2004 and .NET Development (most likely C++).
I look forward to meeting all the nice guys and IT professionals from throughout the world again.This event is really great as it combines in depth technical information and personal exchange in a unique way. If you are at TechEd this year please let me know.

Platform Independent BPEL Designer

For good reason a lot of people are claiming a contract first approach in terms of Web Service design.
I think it makes perfect sense to use a sound vendor independent format to describe important resources like for instance Web Service interfaces.
But this approach is not limited to WSDL only. It applies to Business Process Execution Language (BPEL) as well as business processes are very valuable resources for every company. So if you have to model bunsiness processes for technologies like Microsoft Biztalk Server 2004 or BEA Weblogic Integration you might be good advised to use a BPEL first approach. Two tools that might help you are: Oracle BPEL Designer and
Cape Clear Orchestrator Beta. Both are Eclipse plug-ins and create plain BPEL 1.1 which in turn can be imported to the application of your choice.

Suggested Reading For Biztalk Server 2004

The documentation for Biztalk Server 2004 ist still somewhat limited. While developing Biztalk Server solutions I found a lot useful resources on the web. I collected them mainly for the delegates of my Biztalk 2004 courses. But if you are interested in Biztalk technology you might also be interested in Wolfgang Pleus Suggested Reading For Biztalk Server 2004