Escolar Documentos
Profissional Documentos
Cultura Documentos
Being eight years ahead of the industry has its benefits, however, it can also create a few issues. Before I
talk of the benefits of Euclid’s Web Oriented Architecture (and explain what it is), let me first disclose
the most common issue that we have faced with our WOA – which is that it is so simple to use and
leverage that some vendors and “techies” have criticized it (granted, just a few, as many have embraced
our approach and achieved tremendous success). It seems that simplicity, rapid implementation, low
maintenance and platform independence is not what everyone wants. The good news for Euclid and its
customers is that over the past couple of years a comprehensive body of independent research has been
released that conclusively finds that Euclid’s approach to web development and web integration is the
most straightforward, most efficient and most successful approach that exists today. In fact, the
evidence is so overwhelming that this year, eight years after we created our WOA, Microsoft has
adopted and is now promoting our web service approach with its new .Net 3.5 Data Services.
So what does “Web Oriented Architecture” mean? The term “Web Oriented Architecture” was coined in
2006 by Nick Gall, a vice president at the Gartner Group, to give a descriptive and meaningful name to a
method of web integration that is based on Representational State Transfer (known by the acronym
REST by forward thinking technologists). Although the term “WOA” is somewhat new, the biggest and
most successful web service providers, including Google, Yahoo and Amazon, have used the concepts
behind REST for many years. Before Mr. Gall created this term, we at Euclid didn’t quite know what to
call our architecture, so we just called it “Euclid’s Web Architecture” – which, unsurprisingly, was not
adopted as an industry standard.
The principles behind REST, which apply to network‐based software architectures, were first published
in 2000 in the doctoral dissertation of Dr. Roy Fielding
(http://www.ics.uci.edu/~fielding/pubs/dissertation/abstract.htm ). This is the same year (2000) that
Euclid built its first web services based upon REST. REST provides a simple and efficient – yet powerful –
set of protocols for requesting, receiving, updating and rendering data via the web. Under REST, web
services are called using URIs (uniform resource identifiers) which then return anything from an XML
data packet to a fully rendered HTML page. REST relies on the standard communication mechanism that
forms the foundation of the World Wide Web, that is, it uses GET, POST, PUT and DELETE calls to
communicate. In real world REST implementations, PUT and DELETE are rarely used, as most
implementations support the GET and POST commands only. Generally, a GET command is used to
retrieve data, while POST commands are used to change it. However, there are many instances where a
POST (e.g., using a search form) is used to retrieve data. On the other hand, a GET command should
rarely if ever be used to update data. These terms may sound complex, but you already use URIs, GETs
and POSTs all the time. For example, the URI http://maps.yahoo.com/ uses a GET command to call
Yahoo’s mapping service and render an HTML page on your browser. By specifying arguments in the URI
request, the web service is able to return more specific information. For example, the URI
http://maps.yahoo.com/map?q1=8120%20Woodmont%20Avenue%20Bethesda%20MD%20%2020814&
mag=5&ard=1#mvt=m&lat=38.991646&lon=‐
77.09698&mag=3&q1=8120%20Woodmont%20Avenue%20Bethesda%20MD%2020814 passes the
location of Euclid’s Bethesda office to the web service which then returns a rendered map on an HTML
page (note: I generated the previous link by clicking on the Map button on the organization record in
ClearVantage).
An example of how Euclid’s WOA implements the REST principles can be seen by calling Euclid’s events
web service. For example, the following URI shows a list of upcoming events for one of Euclid’s clients:
http://gateway.nwppa.org/euclidweb/cgi‐
bin/eventsdll.dll/EventList?ONWEBFLG=Y®ONLINEFLG=Y&SESSIONBEGDATE=%3Egetdate()‐
1&SORT=SESSIONBEGDATE. What the request above is asking for is a list of all events that start today or
after (SESSIONBEGDATE=>GetDate()), should be seen on the web (ONWEBFLG=Y), allow online
registration (REGONLINEFLG=Y), and is sorted by date (SORT=SESSIONBEGDATE). The next example
displays the same information for the current month in a calendar view by adding the CALVIEW=now
argument: http://gateway.nwppa.org/euclidweb/cgi‐
bin/eventsdll.dll/EventList?ONWEBFLG=Y®ONLINEFLG=Y&CALVIEW=now&sort=SESSIONBEGDATE&
RESPONSEHEADERPAGE=main_template.htm. While these Euclid web services are returning full HTML
pages, they can easily return an HTML chunk (e.g., http://gateway.nwppa.org/euclidweb/cgi‐
bin/eventsdll.dll/EventList?ONWEBFLG=Y®ONLINEFLG=Y&CALVIEW=now&sort=SESSIONBEGDATE&
WMT=none) to embed into a content management system or PHP/ASP.NET/Cold Fusion page. The
service can also return XML packets, which are extremely useful for AJAX programming and/or can be
bound to any data control using any web development platform. For example, this link,
http://gateway.nwppa.org/euclidweb/cgi‐
bin/eventsdll.dll/EventInfo?sessionaltcd=080435&WRP=eventinfo.xml&WMT=none, returns a standard
XML data packet.
In addition to easily retrieving information, Euclid’s WOA also makes it easy to add and update
information, even for the most complex processes. For example, you can add a new member, register
her for an event, purchase products, create a membership record, and process her credit card in real
time all in one easy and very fast POST call. The following register.dll web service call (which would be
submitted in the POST format) will register an existing customer for an event (and automatically
determine if customer gets member v. nonmember pricing, the early bird rate, etc), add two functions,
update her home phone, process the credit card, return a confirmation page and send a confirmation
email. Please note that I cannot provide an active URI for this service because we do not want to create
test records in a live database. Furthermore, even if I did provide an active URI, security settings in the
architecture would prevent an unauthorized POST). So again, here is the example call for the
aforementioned registration transaction:
/Register.dll/Post?customercd=103&customer.homephone=2025551212&sessionaltcd=043443&functio
ncdlist=DINNER,BREAKOUT101&paymenttypecd=AMEX&creditrefnum=37324443434334&paymentrefe
xpdate=06/09
The examples shown so far have been direct calls from an URI link. However, many organizations have
existing websites or content management systems that they need to integrate with (e.g., display a list of
featured events inside an existing homepage). How hard is this using Euclid’s WOA? Using the event
service examples above, the following voluminous amount of code is required:
In Perl:
$mycontent = file_get_contents(‘/cgi‐bin/eventsdll.dll/EventList?MINORCAT=Featured
SESSIONBEGDATE=>getdate()‐1&SORT=SESSIONBEGDATE’);
In ColdFusion:
<cfset theURLString = (“/cgi‐
bin/eventsdll.dll/EventList?MINORCAT=Featured&SESSIONBEGDATE=%3Egetdate()‐
1&SORT=SESSIONBEGDATE"/>
<cfhttp url="#theURLString#" method="GET" resolveUrl="false" ></cfhttp>
<cfset mycontent = #cfhttp.FileContent# /> <cfoutput>#mycontent#</cfoutput>
While the examples above are for Perl and ColdFusion, it is just as easy to integrate a website (or a web‐
enabled application) with Euclid’s web services using any platform. For example, now that .Net 3.5 Data
Services support REST (http://astoria.mslivelabs.com/), integrating with Microsoft products such as
SharePoint and ASP.net is now even easier. It should be noted that a web development platform is not
required to effectively utilize Euclid’s WOA – even a novice can create a completely functional website
using plain old HTML. However, for more advanced developers, the possibilities are endless. As a
starting point, a web developer can use her preferred language to dynamically build URI strings to create
a highly personalized online experience for members. For example, a developer could use the
member.dll web service to get a list of a member’s interests and then create a custom list of events and
products on the member’s homepage based upon these interests – all in just a couple of minutes (OK,
maybe an hour).
In the opening paragraph I mentioned that there is a large body of evidence that shows that the
WOA/REST approach to web integration is unsurpassed in flexibility, power and ease of use. The
question of course is “compared to what?” AMS vendors that offer web integration tend to use one of
three approaches. The first is the “Fat Page” approach where business and display logic are combined in
a baseline set of pages that are then customized to meet client needs. This generally requires that a
specific language, such as ASP or ColdFusion, be used to customize the website. In this common
approach, no form of web services are used and all of the site’s logic (including display, data, and
processing) are hard coded into a site that is language dependent, difficult to maintain and almost
impossible to upgrade. The second approach is where a vendor provides a set of proprietary objects that
encapsulate functionality for data access and manipulation. This approach has the benefit of separating
business logic from display logic (hence if a data table’s structure changes or a business rule changes,
you don’t have to recode all the pages that rely on it). The disadvantages to this approach are that the
objects themselves are usually accessible only through a specific language (e.g., to use our web objects
you must use Visual Studio), it generally takes a good bit of expertise to “instantiate, utilize and release”
the objects within the programming language, and the objects themselves don’t provide any tools to
make rendering (displaying) information any easier – a developer usually has to write code to get data
from objects and then bind it row by row and field by field to a visual control. Ouch. The final approach
is the use of traditional SOAP‐based web services (XML‐RPC). This approach is the least commonly used,
although some vendors make a small portion of their functionality available through these services to
tout the use of web services. Rarely, if ever, is all the functionality needed to build a robust and
integrated website available through the SOAP‐based web services that are provided. Hence, when this
third approach is used, it is generally combined with the first approach (Fat Pages) to create the desired
level of online integration and functionality. There are some advantages to SOAP‐based web services –
in fact, we use them quite a bit at Euclid. A significant advantage is that they support UDDI – universal
discovery description and identification – so when they are implemented correctly, these web services
are self documenting. However, there are many disadvantages to this approach as well, the primary of
which being a) you cannot just call a SOAP web service – you must use a programming language to do
so, b) even when using a programming language, you cannot just call a SOAP web service ‐ you must first
import the web service and build a “wrapper” around it so that the program language understands it
(and if the web service changes, it will often have to be re‐imported) and c) SOAP web services require a
lot of unnecessary overhead, making them slower and less scalable. There a quite a few other issues
related to SOAP‐web service integration (see http://hinchcliffe.org/archive/2008/02/27/16617.aspx) –
but the disadvantages can be boiled down to this: doing web integration using SOAP/XML‐RPC is just a
lot harder and slower than it needs to be.
Did I say there were three approaches? Actually, there is a fourth – Euclid’s Web Oriented Architecture
approach. It is built upon the proven foundation of REST and adds numerous enhancements, such as
display templates and centrally applied security settings, to create the industry’s first and best WOA.
However, you need not come to this conclusion based solely on what we think here at Euclid. Like I said,
there is a whole body of evidence out there that supports our view. Here are few tidbits from it (for
more, Google “REST” or “WOA”): 1) Amazon makes all of its web services available through both REST
and traditional XML‐RPC calls (SOAP based web services), giving developers a choice. The result is that
85% of developers choose the REST approach to integrate their applications. I surmise that with
Microsoft now supporting REST (http://astoria.mslivelabs.com/) , this percentage will increase; 2) all of
the biggest web service providers, Amazon, Yahoo and Google (even Microsoft is coming on board) use
WOA/REST as their web service foundation; 3) many organizations have abandoned the SOAP‐based
web service model and moved to the WOA model with tremendous success
(http://hinchcliffe.org/archive/2008/02/27/16617.aspx); and 4) WOA is the chosen platform for Web 2.0
(http://blogs.zdnet.com/Gardner/?p=2631).
So here we are, eight years later, and it seems the world is coming around to the Euclid way of doing
things (e.g., using approaches that work as opposed to pushing a specific technology). This is exciting. I
have barely touched on the extensive functionality available through Euclid’s Web Oriented
Architecture. However, you can see it in use in CV Mobile (a complete AMS available on your iPhone or
Blackberry), CV Member Connect (everything your members need online), CV CLAS (chapter leader
access system) and now even in the ClearVantage 7 smart client (which uses Euclid’s web services to
access data). Exciting times indeed!