The atomic unit of any service oriented architecture [SOA] is a service. The key technology to develop services in Windows is called the Windows Communication Foundation. This is a part of the .NET Framework 3.0 which released on November 6th, 2006.
Following is an online guide that should help you get familiar with this exciting new technology called WCF -
GET - Installers
LEARN - eLearning
READ - Documentation
USE - Labs
My previous post on What is SOA? was inspired by the first few slides of a detailed slide deck on SOA by David Chappell.
The Wikipedia entry for SOA is a good read for a basic introduction to SOA. A brief article introducing SOA and contrasting SOAP services with REST services is also interesting. A formal definition of SOA is provided as part of the OASIS Reference Model for SOA 1.0. Another formal definition of SOA is provided by CBDI in it's article Understanding Service-Oriented Architecture which differs in some aspects from the OASIS definition. The MSDN Mag has a great article by Aaron Skonnard in the Service Station column on SOA
For those who would rather view than read, the following multi-media is also a good way to begin understanding SOA - Don Box on SOA & part 2 of the same as well as a show on Service Orientation all on MSDN TV. There are also a few webcasts related to patterns & anti-patterns in SOA, on why you can't do SOA without messaging, one on SOA design, & one on developing a business service on the principles of SOA. Also, Steve Swartz on SOA in MSDN's channel 9.
However, by far the most important references in order to understand the themes that will be presented in my blog around Enterprise SOA are -
- A free eBook called Readings in Service Orientation. This provides a clear understanding of SOA within an enterprise architecture. This includes articles on Software Factories, SDM, Workflows, Identity Management, alternate service transports, service versioning & much more by the masters in these fields.
-
Don Smith had mentioned the Zapthink SOA roadmap poster [registration required] in a recent workshop he conducted here in Redmond. This is a nice little snapshot of various SOA related technologies [like RDF, WS*, etc], and how they fit into the bigger Enterprise picture.
For where SOA is heading in the long term, the article on the Semantic Web by Tim Berners-Lee & others provides some tantalizing hints.
SOA stands for Service Oriented Architecture. It is the current generation of distributed application architectures. We can look at the evolution of SOA by contrasting it with past generations of distributed application architectures -
- Terminal-Server where data and business logic were on the same server. Most of the technologies of this era were mainframe [server] centric such as CICS.
- Client-Server where data and some business logic was on the server and other logic was on the client along with a user interface [generally a GUI]. Most of the technologies of this era were PC centric such as Windows. This also was the era when COM, DCOM & other RPC protocols started becoming prevalent for clients to talk to servers. This also saw the evolution of server centric ERPs for specific verticals from SAP, etc.
- Multi-tier or n-tier where data was on a database server cluster, business logic was on an application server cluster and a web server farm rendered web pages onto client browsers. The technologies of this era included MTS [now COM+] for application servers, ASP & IIS for the web servers & Internet Explorer for the client. This was also the generation of EAI [enterprise application integration], messaging workflows & a demand for e-commerce applications as part of the dot com boom, where several application servers for specific areas became popular such as Commerce Server for e-commerce or b2c applications & Biztalk server for b2b, EAI & messaging workflow applications.
- Pre-SOA - Which brings us to the current generation. The problem with all previous generations is that applications built with technologies from each of the previous generations can still be found within any single enterprise as there is no reason to discard perfectly functional and useful applications that have matured and run competently over the years. Also each of the previous generations did provide valuable architectures that are not obsoleted or overridden by each successive generation. The robustness of a CICS application or the uniformity of an ERP or the convenience of a Biztalk based EAI hub cannot be discounted by any enterprise that has invested in any of these technologies to date.
- SOA - Hence SOA is not a disruptive innovation. It's benefits are 2-fold -
- For application developers, it provides for a uniform & standard mechanism to expose or reuse the business logic in a system from within an enterprise or on the web irrespective of the technology it was originally built on.
- For an Enterprise, SOA allows for all business logic in heterogeneous legacy systems to be exposed using interfaces [WSDL] constrained by well-known message types [XSDs or WCF Contracts] in a standard fashion [WS* specs] that can be accessed in a uniform manner [SOAP] from within and outside of the Enterprise.