Distributed Application Development Using WCF-An Efficient Solution To An Application Like "House Rental Application"
Distributed Application Development Using WCF-An Efficient Solution To An Application Like "House Rental Application"
Scentist-B
DOEACC Society
Idea Details
A house rental company decides to create a new application for reserving houses. The creators
of this rental house reservation application know that the business logic it implements must be
accessible by other software running both inside and outside their company. Accordingly, they
decide to build it in a service-oriented style, with the application’s logic exposed to other
software through a well-defined set of services. To implement these services, and thus
communicate with other software, the new application will use WCF.
Over its lifetime, the rental house reservation application will likely be accessed by a range of
other applications. When it is designed, however, the architects of the rental house reservation
application know that its business logic will be accessed, as shown in the preceding figure, by
three other kinds of software:
• A call center client application running on the Windows desktops that are used by
employees in the organizations call center. Created specifically for the new reservations
system, this application will also be built using the Microsoft .NET Framework and
WCF. This application is not truly distinct from the new rental house reservation
application, because its only purpose is to act as a client for the new system. From a
service-oriented perspective, it is just another client for the reservation system’s business
logic.
The diverse communication requirements for the new rental house reservation application are not
simple. For interactions with the call center client application, for instance, performance is
important, while interoperability is straightforward, because both are built on the .NET
Framework. For communication with the existing J2EE-based reservation application and with
the diverse partner applications, however, interoperability becomes the highest goal. The security
requirements are also quite different, varying across local Windows-based applications, a J2EE-
based application running on another operating system, and a variety of partner applications
coming in across the Internet. Even transactional requirements might vary, with only the internal
applications being allowed to make transactional requests. How can these diverse business and
technical requirements be met without exposing the creators of the new application to
unmanageable complexity?
WCF is designed for this diverse but realistic scenario and is the default technology for Windows
applications that expose and access services.
The figure shows a view of a WCF client and service. The two interact using SOAP, the WCF
native message representation, so even though the figure shows both parties built on WCF, this is
not required. WCF is built on .NET Framework 2.0.
As the scenario described earlier suggests, WCF addresses a range of challenges for
communicating applications. Three things stand out, however, as the most important aspects of
WCF:
• ASP.NET Web services (ASMX). An option for communicating with the J2EE-based
existing reservation application and with the partner applications across the Internet.
Given that basic Web services are supported today on most platforms, this was the most
direct way to achieve cross-vendor interoperability before the release of WCF.
• .NET Framework remoting. An option for communication with the call center
application, because both are built on the .NET Framework. Remoting is designed
expressly for tightly coupled .NET-to-.NET communication, so it offers a seamless and
straightforward development experience for applications in the local network.
• Enterprise Services. Used by the rental house reservation application for managing object
lifetimes and defining distributed transactions. These functions could be useful in
communicating and integrating with any of the other applications in this scenario, but
Enterprise Services supports only a limited set of communication options.
• WSE. Could be used along with ASMX to communicate with the J2EE-based reservation
application and with the partner applications. Because it implements more recently
defined Web services agreements, known collectively as the WS-* specifications, WSE
allows for more flexible Web services security, as long as all applications involved
support compatible versions of these new specifications.
Built on .NET Framework, the rental house reservation application must use more than one of
these communication technologies to meet its requirements. Although this is technically
possible, the resulting application would be complex to implement and challenging to maintain.
With WCF, the solution is much easier to implement. As the figure shows, WCF can be used for
all the situations previously described. Accordingly, the rental house reservation application can
use this single technology for all of its application-to-application communication. The following
shows how WCF addresses each of these requirements:
• Because WCF can communicate using Web services, interoperability with other
platforms that also support SOAP, such as the leading J2EE-based application servers, is
straightforward.
• You can also configure and extend WCF to communicate with Web services using
messages not based on SOAP, for example, simple XML formats like RSS.
• Performance is of paramount concern for most businesses. WCF is developed with the
goal of being one of the fastest distributed application platform developed by Microsoft
• To allow optimal performance when both parties in a communication are built on WCF,
the wire encoding used in this case is an optimized binary version of an XML
Information Set. Messages still conform to the data structure of a SOAP message, but
their encoding uses a binary representation of that data structure rather than the standard
angle-brackets-and-text format of the XML 1.0 text encoding. Using this option makes
sense for communicating with the call center client application, because it is also built on
WCF, and performance is an important concern.
• Because it supports a large set of the WS-* specifications, WCF helps provide reliability,
security, and transactions when communicating with any platform that also supports these
specifications.
• The WCF option for queued messaging, built on Message Queuing, allows applications
to use persistent queuing without using another set of application programming
interfaces.
The result of this unification is greater functionality and significantly reduced complexity.
• Applications built on other technologies, such as J2EE application servers, that support
standard Web services. These applications can be running on Windows machines or on
machines running other operating systems.
To allow more than just basic communication, WCF implements Web services technologies
defined by the WS-* specifications. All of these specifications were originally defined by
Microsoft, IBM, and other vendors working together. As the specifications become stable,
ownership often passes to standards bodies, such as the World Wide Web Consortium (W3C) or
the Organization for the Advancement of Structured Information Standards (OASIS). These
specifications address several areas, including basic messaging, security, reliability, transactions,
and working with a service’s metadata. Grouped by function, those specifications cover:
• Messaging: SOAP is the foundation for Web services and defines a basic envelope that
contains header and a body sections. WS-Addressing defines additions to the SOAP
header for addressing SOAP messages, which frees SOAP from relying on the underlying
transport protocol, such as HTTP, to housery addressing information. Message
Transmission Optimization Mechanism (MTOM) defines an optimized transmission
format for SOAP messages with large binary data contents based on the XML-binary
Optimized Packaging (XOP) specification.
• Metadata: The Web Services Description Language (WSDL) defines a standard language
for specifying services and various aspects of how those services can be used. WS-Policy
allows specification of more dynamic aspects of a service’s behavior that cannot be
expressed in WSDL, such as a preferred security option. WS-Metadata Exchange allows
a client to directly request descriptive information about a service, such as its WSDL and
its policies, using SOAP.
• Reliability: WS-Reliable Messaging defines additions to the SOAP header that allow
reliable end-to-end communication, even when one or more Web services intermediaries
must be traversed.
The rental house reservation application would likely use several of these more advanced
technologies. For example, WS-Addressing is essential whenever SOAP is used over a transport
mechanism other than HTTP, which might be the case for communication with the .NET
Framework-based call center client application. WCF relies on WS-Policy and WS-Metadata
Exchange to discover whether the system it is communicating with is also using WCF and for
other things. Reliable communication is essential for most situations, so it is likely that WS-
Reliable Messaging would be used to interact with many of the other applications in this
scenario. Similarly, you might also use WS-Security and the related specifications for securing
the communication with one or more of the applications, because all would require some kind of
protection against unauthorized access or message modification and interception. For the
applications that require transaction integration with the rental house reservation system, WS-
Atomic Transaction would be essential. Finally, MTOM could be used whenever an optimized
wire format for binary data is necessary (for instance for pictures of fleet examples), and both
sides of the communication supported this option.
The key point is that WCF implements interoperable Web services complete with cross-platform
security, reliability, transactions, and other services. To provide maximum throughput, WCF-to-
WCF communication can be significantly optimized, but all other communication uses standard
Web services protocols. In fact, it is possible for a single application to expose its services to
both kinds of clients.
For example, both WCF and ASMX use SOAP, so WCF-based applications can directly
interoperate with those built on ASMX. Existing Enterprise Services applications can also be
wrapped with WCF interfaces, allowing them to interoperate with applications built on WCF.
And because persistent queuing in WCF relies on MSMQ, WCF-based applications can
interoperate directly with non-WCF-based applications built using native MSMQ interfaces. In
the rental house reservations application, software built using any of these earlier technologies
could directly connect to and use the new system’s WCF-based services.
REST is just one example of an evolving Web 2.0 technology. In this environment of
experimental programming models and ongoing reinterpretation and refinement of standards,
flexibility is required to cope with unforeseeable changes. WCF is flexible. For example, while
WCF uses SOAP as an underlying structure, it is not bound to using SOAP for wire
communication. In fact, WCF can be configured to process "plain" XML data that is not wrapped
in a SOAP envelope. WCF can also be extended to support specific XML formats, such as
ATOM (a popular RSS standard), and even non-XML formats, such as JavaScript Object
Notation (JSON). This flexibility ensures that code written today will be valid in the future, even
if protocols change or are replaced. Therefore, WCF was designed for the present and the future.