Why Web Services?

 Overview

Component-based programming has become more popular than ever. Hardly an application is built today that does not involve leveraging components in some form, usually from different vendors. As applications have grown more sophisticated, the need to leverage components distributed on remote machines has also grown.

Why Web Services?

An example of a component-based application is an end-to-end e-commerce solution. An e-commerce application residing on a Web farm needs to submit orders to a back-end Enterprise Resource Planning (ERP) application. In many cases, the ERP application resides on different hardware and might run on a different operating system.

The Microsoft Distributed Component Object Model (DCOM), a distributed object infrastructure that allows an application to invoke Component Object Model (COM) components installed on another server, has been ported to a number of non-Windows platforms. But DCOM has never gained wide acceptance on these platforms, so it is rarely used to facilitate communication between Windows and non-Windows computers. ERP software vendors often create components for the Windows platform that communicate with the back-end system via a proprietary protocol.

Some services leveraged by an e-commerce application might not reside within the datacenter at all. For example, if the e-commerce application accepts credit card payment for goods purchased by the customer, it must elicit the services of the merchant bank to process the customer's credit card information. But for all practical purposes, DCOM and related technologies such as CORBA and Java RMI are limited to applications and components installed within the corporate datacenter. Two primary reasons for this are that by default these technologies leverage proprietary protocols and these protocols are inherently connection oriented.

Clients communicating with the server over the Internet face numerous potential barriers to communicating with the server. Security-conscious network administrators around the world have implemented corporate routers and firewalls to disallow practically every type of communication over the Internet. It often takes an act of God to get a network administrator to open ports beyond the bare minimum.

If you're lucky enough to get a network administrator to open up the appropriate ports to support your service, chances are your clients will not be as fortunate. As a result, proprietary protocols such those used by DCOM, CORBA, and Java RMI are not practical for Internet scenarios.

The other problem, as I said, with these technologies is that they are inherently connection oriented and therefore cannot handle network interruptions gracefully. Because the Internet is not under your direct control, you cannot make any assumptions about the quality or reliability of the connection. If a network interruption occurs, the next call the client makes to the server might fail.

The connection-oriented nature of these technologies also makes it challenging to build the load-balanced infrastructures necessary to achieve high scalability. Once the connection between the client and the server is severed, you cannot simply route the next request to another server.

Developers have tried to overcome these limitations by leveraging a model called stateless programming, but they have had limited success because the technologies are fairly heavy and make it expensive to reestablish a connection with a remote object.

Because the processing of a customer's credit card is accomplished by a remote server on the Internet, DCOM is not ideal for facilitating communication between the e-commerce client and the credit card processing server. As in an ERP solution, a third-party component is often installed within the client's datacenter (in this case, by the credit card processing solution provider). This component serves as little more than a proxy that facilitates communication between the e-commerce software and the merchant bank via a proprietary protocol.

Do you see a pattern here? Because of the limitations of existing technologies in facilitating communication between computer systems, software vendors have often resorted to building their own infrastructure. This means resources that could have been used to add improved functionality to the ERP system or the credit card processing system have instead been devoted to writing proprietary network protocols.

In an effort to better support such Internet scenarios, Microsoft initially adopted the strategy of augmenting its existing technologies, including COM Internet Services (CIS), which allows you to establish a DCOM connection between the client and the remote component over port 80. For various reasons, CIS was not widely accepted.

It became clear that a new approach was needed. So Microsoft decided to address the problem from the bottom up. Let's look at some of the requirements the solution had to meet in order to succeed.

Interoperability The remote service must be able to be consumed by clients on other platforms.

Internet friendliness The solution should work well for supporting clients that access the remote service from the Internet.

Strongly typed interfaces There should be no ambiguity about the type of data sent to and received from a remote service. Furthermore, datatypes defined by the remote service should map reasonably well to datatypes defined by most procedural programming languages.

Ability to leverage existing Internet standards The implementation of the remote service should leverage existing Internet standards as much as possible and avoid reinventing solutions to problems that have already been solved. A solution built on widely adopted Internet standards can leverage existing toolsets and products created for the technology.

Support for any language The solution should not be tightly coupled to a particular programming language. Java RMI, for example, is tightly coupled to the Java language. It would be difficult to invoke functionality on a remote Java object from Visual Basic or Perl. A client should be able to implement a new Web service or use an existing Web service regardless of the programming language in which the client was written.

Support for any distributed component infrastructure The solution should not be tightly coupled to a particular component infrastructure. In fact, you shouldn't be required to purchase, install, or maintain a distributed object infrastructure just to build a new remote service or consume an existing service. The underlying protocols should facilitate a base level of communication between existing distributed object infrastructures such as DCOM and CORBA.

Given the title of this book, it should come as no surprise that the solution Microsoft created is known as Web services. A Web service exposes an interface to invoke a particular activity on behalf of the client. A client can access the Web service through the use of Internet standards.

Web Services Building Blocks

The following graphic shows the core building blocks needed to facilitate remote communication between two applications.

Let's discuss the purpose of each of these building blocks. Because many readers are familiar with DCOM, I will also mention the DCOM equivalent of each building block.

Discovery The client application that needs access to functionality exposed by a Web service needs a way to resolve the location of the remote service. This is accomplished through a process generally termed discovery. Discovery can be facilitated via a centralized directory as well as by more ad hoc methods. In DCOM, the Service Control Manager (SCM) provides discovery services.

Description Once the end point for a particular Web service has been resolved, the client needs sufficient information to properly interact with it. The description of a Web service encompasses structured metadata about the interface that is intended to be consumed by a client application as well as written documentation about the Web service including examples of use. A DCOM component exposes structured metadata about its interfaces via a type library (typelib). The metadata within a component's typelib is stored in a proprietary binary format and is accessed via a proprietary application programming interface (API).

Message format In order to exchange data, a client and a server have to agree on a common way to encode and format the messages. A standard way of encoding data ensures that data encoded by the client will be properly interpreted by the server. In DCOM, messages sent between a client and a server are formatted as defined by the DCOM Object RPC (ORPC) protocol.

Without a standard way of formatting the messages, developing a toolset to abstract the developer from the underlying protocols is next to impossible. Creating an abstraction layer between the developer and the underlying protocols allows the developer to focus more on the business problem at hand and less on the infrastructure required to implement the solution.

Encoding The data transmitted between the client and the server needs to be encoded into the body of the message. DCOM uses a binary encoding scheme to serialize the data contained by the parameters exchanged between the client and the server.

Transport Once the message has been formatted and the data has been serialized into the body of the message, the message must be transferred between the client and the server over some transport protocol. DCOM supports a number of proprietary protocols bound to a number of network protocols such as TCP, SPX, NetBEUI, and NetBIOS over IPX.

Web Services Design Decisions

Let's discuss some of the design decisions behind these building blocks for Web services.

Choosing Transport Protocols

The first step was to determine how the client and the server would communicate with each other. The client and the server can reside on the same LAN, but the client might potentially communicate with the server over the Internet. Therefore, the transport protocol must be equally suited to LAN environments and the Internet.

Destocking - Commercial  London

 Destocking - Commercial  Birmingham

 Destocking - Commercial  Liverpool

 Destocking - Commercial  Sheffield

 Destocking - Commercial  Bristol

 Destocking - Commercial  Glasgow

 Destocking - Commercial  Leicester

 Destocking - Commercial  Edinburgh

 Destocking - Commercial  Leeds

 Destocking - Commercial  Cardiff

 Destocking - Commercial  Manchester

 Destocking - Commercial  Stoke-on-Trent

 Destocking - Commercial  Coventry

 Destocking - Commercial  Sunderland

 Destocking - Commercial  Brent

 Destocking - Commercial  Birkenhead

 Destocking - Commercial  Nottingham

 Destocking - Commercial  Islington

 Destocking - Commercial  Reading

 Destocking - Commercial  Kingston upon Hull

 Destocking - Commercial  Preston

 Destocking - Commercial  Newport

 Destocking - Commercial  Swansea

 Destocking - Commercial  Bradford

 Destocking - Commercial  Southend-on-Sea

 Destocking - Commercial  Belfast

 Destocking - Commercial  Derby

 Destocking - Commercial  Plymouth

 Destocking - Commercial  Luton

 Destocking - Commercial  Wolverhampton

 Destocking - Commercial  City of Westminster

 Destocking - Commercial  Southampton

 Destocking - Commercial  Blackpool

 Destocking - Commercial  Milton Keynes

 Destocking - Commercial  Bexley

 Destocking - Commercial  Northampton

 Destocking - Commercial  Archway

 Destocking - Commercial  Norwich

 Destocking - Commercial  Dudley

 Destocking - Commercial  Aberdeen

 Destocking - Commercial  Portsmouth

 Destocking - Commercial  Newcastle upon Tyne

 Destocking - Commercial  Sutton

 Destocking - Commercial  Swindon

 Destocking - Commercial  Crawley

 Destocking - Commercial  Ipswich

 Destocking - Commercial  Wigan

 Destocking - Commercial  Croydon

 Destocking - Commercial  Walsall

 Destocking - Commercial  Mansfield

 Destocking - Commercial  Oxford

 Destocking - Commercial  Warrington

 Destocking - Commercial  Slough

 Destocking - Commercial  Bournemouth

 Destocking - Commercial  Peterborough

 Destocking - Commercial  Cambridge

 Destocking - Commercial  Doncaster

 Destocking - Commercial  York

 Destocking - Commercial  Poole

 Destocking - Commercial  Gloucester

 Destocking - Commercial  Burnley

 Destocking - Commercial  Huddersfield

 Destocking - Commercial  Telford

 Destocking - Commercial  Dundee

 Destocking - Commercial  Blackburn

 Destocking - Commercial  Basildon

 Destocking - Commercial  Middlesbrough

 Destocking - Commercial  Bolton

 Destocking - Commercial  Stockport

 Destocking - Commercial  Brighton

 Destocking - Commercial  West Bromwich

 Destocking - Commercial  Grimsby

 Destocking - Commercial  Hastings

 Destocking - Commercial  High Wycombe

 Destocking - Commercial  Watford

 Destocking - Commercial  Saint Peters

 Destocking - Commercial  Burton upon Trent

 Destocking - Commercial  Colchester

 Destocking - Commercial  Eastbourne

 Destocking - Commercial  Exeter

 Destocking - Commercial  Rotherham

 Destocking - Commercial  Cheltenham

 Destocking - Commercial  Lincoln

 Destocking - Commercial  Chesterfield

 Destocking - Commercial  Chelmsford

 Destocking - Commercial  Mendip

 Destocking - Commercial  Dagenham

 Destocking - Commercial  Basingstoke

 Destocking - Commercial  Maidstone

 Destocking - Commercial  Sutton Coldfield

 Destocking - Commercial  Bedford

 Destocking - Commercial  Oldham

 Destocking - Commercial  Enfield Town

 Destocking - Commercial  Woking

 Destocking - Commercial  St Helens

 Destocking - Commercial  Worcester

 Destocking - Commercial  Gillingham

 Destocking - Commercial  Becontree

 Destocking - Commercial  Worthing

Destocking - Commercial  Rochdale

Comments

Popular posts from this blog

Using Classified Ads

Financial Investment Services

Is There a Safety Issue With Free Online Classified Ads?