Techsearchable

Thursday, August 23, 2007

SOA Summer

Last time I ended with a real cliffhanger – Service Oriented Architectures (SOA) and the Semantic Web. We’re around the 60,000-feet level, so before I delve into the aether, let’s backtrack a bit.

What’s behind Web 2.0, widgets, gadgets, IM, wikis, blogs, collaboration, information sharing, etc? Last time, I briefly mentioned XML, Java, and SOAP. There are actually two current market-leading platforms for building service oriented environments – the Java Enterprise Edition (EE) platform running Java code, and the Microsoft-centric .Net platform running C# (pronounced “C-sharp”) code.

Java was first introduced by Sun Microsystems (www.sun.com/java) as an easier alternative to C/C++ programming that would retain an object oriented view (manipulating objects rather than events) and could run on multiple hardware platforms without modifying any code. The Java programming language has evolved in a number of ways, from the desktop to the enterprise. At the desktop level, Java and its latest implementation AJAX (Asynchronous JavaScript Technology and XML) can run on any popular browser-operating system combination (e.g. Internet Explorer and Windows, Firefox and Solaris, or Safari and Mac OS X). AJAX allows web services/browser application to act like thick client applications. I know what you’re thinking, “Hmm… what does that mean?” It means that sections of your browser window can change or update without having to refresh the entire window. Thick clients are characterized by applications that run on your PC, using relatively larger amounts of storage, processor, and memory on your desktop or laptop. A thin client uses the resources of the network and server computers to run applications that mostly display at your desktop or laptop. At the enterprise level, Java can scale to serve applications to many thousands of users.

Microsoft took another direction by developing their .Net (pronounced “dot-net”) Framework (http://www.microsoft.com/net). With their various application servers and programming environments, Microsoft decided to integrate them more closely. The .Net platform allows various programming languages and their associated resources to work together (i.e. shared libraries, components, and communications protocols). The latest version of the .Net Framework 3.0 is built into four technology categories, called Foundations: Presentation (user interface), Workflow (business processes), Communication (service orientation), and CardSpace (security). Where Java simplifies deployment, operations and maintenance of applications on multiple platforms, .Net does so for the Microsoft platform.

How does this fit into the SOA approach? The main principles behind service oriented architectures are the reuse of interoperable components, compliance to standards, and the ability to dynamically publish/subscribe to available services (identify, categorize, provision, deliver, monitor, and track). The two platforms discussed above adhere to these general guidelines. They are not automatically defined as service oriented architectures because satisfying these requirements depends on how these platforms are implemented (e.g. deploying a Java infrastructure does not necessarily mean that you have employed all the security and auditing capabilities available – see more detailed information at the SOA Blueprint site: http://www.soablueprint.com/).

The common implementations of these technologies – that most Internet users would recognize – are mashups. The term is literal; a user and/or developer gather a set of resources (programs, applications, functions, data) and mashes them together to create a new application or function. There are a number of good examples. You can import various types of data into Google Maps, or embed YouTube videos in your web page. At a higher level of complexity are things like shopping cart services. Many vendors publish open interfaces to promote the creation of mashups: Amazon Web Services, a variety of Google services (imagery, maps, digital photography, etc.), del.icio.us. There are also mashup generators now that simplify their creation by novice users. Google Mashup Editor, Microsoft Popfly, and Yahoo! Pipes are all freely available, although they are in either alpha or beta versions (still under development). As an example, here’s a recent Yahoo! Pipes posting:

GeoAnnotated Reuters News
Uses the geonames.org RSS-to-geoRSS web service to add location information to the Reuters newsfeed. The result is displayed using the Yahoo!Maps AJAX API (thanks to Pipes Location Extractor). It can be viewed here:
http://www.80n.dreamhosters.com/

Under a more formal environment, the mashup attributes described above become a well-defined set of components, interfaces, and functions that allow interoperability. Think of your computer screen as a portal into various pools of resources needed to run applications – communications bandwidth, memory, processing power, storage and data. Depending on individual privileges and priorities, you are authorized access to certain resources, both types and amounts, which allow you to accomplish the mission. On the front end, how the mission is accomplished is guided by business processes. On the back end, how well the mission is accomplished is guided by service level agreements.

So, do CACI International Inc. and/or National Solutions Group (NSG) provide any of these capabilities? The answer is yes, in both cases. I’ll give you some examples. In NSG, the Knowledge and Information Management Division (http://www.caci.com/business/systems/doc_mgt/doc_manage.shtml) has developed the HighView platform over a number of years (they are currently on version 5). HighView is built on the .Net environment and its service orientation allows easier integration of a variety of components and third party products. Throughout CACI, there are a number of Java development efforts underway, built on enterprise level environments (Java EE, IBM WebSphere, BEA WebLogic, and others). We have also designed enterprise architectures based on service oriented concepts for several customers. Depending on the customer base, we couch our designs using the appropriate standards and guidelines. For example, the Department of Defense Architectural Framework (DoDAF) has certain graphics and documents that are required to formally and fully describe an enterprise architecture. DoDAF categorizes these deliverables into System Views (SVs), Operational Views (OVs), and Technical Views (TVs). Another framework, which is gaining popularity, is the Federal Enterprise Architecture (FEA). This standard categorizes portions of the architecture into Technical, Data, Service Component, Business, and Performance Reference Models (TRM, DRM, SRM, BRM, and PRM).

Unfortunately, that’s all I have room for this time. I’ve yet to discuss the Semantic Web. Please feel free to post comments on my blog, and suggest future subjects.

Ever curious... George

Contact:
Email: gromas@caci.com
Blog: http://george-romas.blogspot.com
IM: george_romas@yahoo.com, george_romas@hotmail.com, georgeromas@aol.com, romasge@gmail.com

Resources:
http://www.sun.com/java
http://www.microsoft.com/net
http://www.soablueprint.com/
http://www.80n.dreamhosters.com/
http://www.caci.com/business/systems/doc_mgt/doc_manage.shtml