Microsoft .NET Web Services Solutions

aboardarmServers

Dec 4, 2013 (3 years and 6 months ago)

143 views


Solutions
Technical Guide




February 2002

168Z
-
0202A
-
WWEN

Prepared by:

Internet & E
-
Commerce Solutions

Compaq Computer Corporation

Contents

Introduction

................................
.

3

What is a Web Service?

..............

3

Microsoft .NET

.............................

3

Microsoft Web Services

..............

4

.NET Technologies Used to
Develop an XML Web
Service

................................
.......

4

Deployment of XML Web
Services

................................
.....

6

Consuming a .NET Web
Service

................................
.......

7

Private Web Services

................

8

Public .NET Web Services

.........

9

Performance Considerations

...

10

Security Consideratio
ns

...........

10

Discoverable Web Service
(UDDI)

................................
.....

14

Management of Web
Services

................................
...

16

DISA and a Web Services

.........

20

The DISA Architecture

.............

20

DISA Key Principles

.................

21

Conclusion

................................
.

22

APPENDIX A
-

Microsoft’s
CLR

................................
.............

23

APPENDIX B
-

Example

............

25

Overview of a B2B Web
Serv
ice Demonstration

............

25

Sample Web Service
Processing Flow

......................

29

Files and Code Samples of
Sample Process Flow

..............

31

APPENDIX C
-

System
Software

................................
.....

35

APPENDIX D


References

.......

37

APPENDIX E
-

Glossary

............

43


Microsoft
.NET Web Services
Solutions

Abstract:


This document identifies the technologies associat
ed with
Microsoft XML Web Services and documents best practices for
developing, deploying, consuming, securing, and managing a Web
service. This document also discuses the performance, scaling, and
availability concerns of Web Services. .NET is Microsoft’s

implementation of an Internet application development platform
using a suite of technologies, tools, products, and standard protocols.
The .NET Platform is used to develop XML Web Services (or .NET
Web Services), which are Microsoft’s implementation of We
b
services. An XML Web Services prototype example, with associated
source code, is provided in an appendix of the document.

The target audience of this document is any individual who needs a
better understanding on how to develop, deploy, consume, secure,

or
manage a Web service. The reader should already understand
Microsoft’s .NET and Web Services concepts.




Microsoft
.NET Web Services Solutions

2


168Z
-
0202A
-
WWEN

Notice

This publication does not constitute an endorsement of the product or products that were tested. The
configuration or configurations tes
ted or described may or may not be the only available solution. This test
is not a determination of product quality or correctness, nor does it ensure compliance with any federal,
state or local requirements.

Compaq, the Compaq logo, ActiveAnswers, Compaq
Insight Manager, SmartStart, SoftPaq, and ProLiant
are trademarks of Compaq Information Technologies Group, L.P. in the U.S. and/or other countries.

The .Net logo, Microsoft, Windows, Windows NT, BizTalk, SharePoint, Visio, Visual Basic, Visual C#,
Visual
Studio, Win32, and Visual C++
are trademarks of Microsoft Corporation
in the U.S. and/or other
countries
.

All other product names mentioned herein may be trademarks of their respective companies.

Compaq shall not be liable for technical or editorial errors

or omissions contained herein. The information
is provided “as is” without warranty of any kind and is subject to change without notice. The warranties for
Compaq products are set forth in the express limited warranty statements accompanying such products
.
Nothing herein should be construed as constituting an additional warranty.

©
2013

Compaq Information Technologies Group, L.P.

Microsoft
.NET Web Services Solutions

Solutions Guide

prepared by
Internet & E
-
Commerce Solutions

First Edition (February 2002)

168Z
-
0202A
-
WWEN



Microsoft
.NET Web Services Solutions

3


168Z
-
0202A
-
WWEN

Introduction

Today most businesses on the Internet revolve around websites, which typic
ally do a good job of
providing information to a user. These websites can support transactions and commerce using the
Internet. Typically, these websites fall into two general categories: a static or brochure type of
site, or a dynamic or commerce site.

Other types of businesses on the Internet include non
-
website
-
centric businesses like Business
-
to
-
Business (B2B) and market exchanges. These types of businesses are still evolving and are a
fertile ground for the technology referred to in this document.

For these businesses to evolve on the Internet, they must use methods to interact with one another
as well as with users, other applications and systems.

Web services represent the evolution of the website. Taking the modular aspects of modern
software ap
plications and allowing them to communicate through standard Internet protocols,
such as XML
1

and SOAP
2
, Web services offer a direct means by which business processes can
interact. Applications hosted internally, as well as on remote systems, can be stitch
ed together,
allowing businesses to program the Web

quickly and economically creating specialized
solutions that meet unique business needs.

Compaq enhances Microsoft .XML Web Services by providing an implementation and
deployment blueprint as well as a se
t of recommended best practices based on years of experience
deploying the Compaq Distributed Internet Server Array (DISA) architecture. Microsoft XML
Web Services can be readily deployed in a highly available and scalable fashion using the DISA
architectu
re. This document addresses how to decrease both the implementation time and risk
associated with the deployment of Microsoft XML Web Services.

What is a Web Service?

A Web service is a piece of business functionality exposed via Internet protocols. Web se
rvices
are Internet
-
based modular applications that perform a specific business task and conform to a
specific technical format. The modular technical format allows for these self
-
contained business
services (from the same or different companies) to mix an
d match easily to create a complete
business process.

Microsoft .NET

.NET is Microsoft’s implementation of an Internet
-
application
-
development platform using a
suite of technologies, tools, products, and standard protocols. The .NET Platform is used to
develop XML Web Services, which are Microsoft’s implementation of Web services.

There are many definitions for what .NET is (and is not). It is not within the scope of this
document to define .NET, but to discuss Microsoft XML Web Services in the context

of .NET
technologies. Below are just a few of the definitions currently available for Microsoft .NET:




1

An initiative from the W3C defining an "extremely simple" dialect of SGML suitable for use on the World
-
Wide Web.

http://www.w3.org/TR/REC
-
xml.html


2

Simple Object Access Protocol (SOAP) is a lightweight protocol for exchange of information in a decentralized, distributed
environment. It is an XML
-
based protocol that consists of four parts: an envelope that defines a framework for describing what is in
a message and how to process it, a set of encoding rules for expressing instances of application
-
defined data types, a convention for
representing remote procedure calls and responses, and a binding convention for exchanging messages using an underlying pr
otocol.


http://www.w3.org/TR/2001/WD
-
soap12
-
20010709/

http://www.soaprpc.com/mirror/ietf/draft
-
box
-
http
-
soa
p
-
01.txt.html


Microsoft
.NET Web Services Solutions

4


168Z
-
0202A
-
WWEN



“Microsoft .NET is an XML Web services platform that will enable developers to create
programs that transcend device boundaries and fully harness the con
nectivity of the Internet.”
(Source: Microsoft:
Welcome to the MSDN Library
)



“Microsoft’s .NET is a company
-
wide effort to move Microsoft’s developers, p
roducts,
customers, and services from the client
-
server computing model to Microsoft’s vision of the
Web services model” (Source: The Burton Group: Network Strategy Report)



“.NET is an all
-
inclusive Web
-
based software architecture for internal and external

use.
Microsoft browsers, applications and new versions of Windows will be .NET enabled.”

(Source: TechWeb Encyclopedia)



“When you look at the fundamentals about what's happening with .NET, this is the ability to
really create a very rapid deployment at
a much lower cost of Internet applications,’ Michael
Capellas, CEO of Compaq Computer Corp., told reporters during a break in the meeting. ‘It's
freeing our applications developers not to have to worry about all the basic
-
level services. It
lowers the cost

and creates a much better user experience on the front end,’ he added. ‘It
actually finally allows us to really come with a much, much more rapid development process
around Internet applications.’ Calling .NET ‘a major move,’ he emphasized that Compaq is
‘going full
-
bore behind" the strategy.’ ” (Source: BridgeNews Bulletins, Thursday, May 24,
2001)

Microsoft Web Services

Microsoft XML Web Services are Microsoft’s implementation of XML
-
based Web services and
are developed using .NET platform technologies
. This section of the document assists the reader
with some of the infrastructure issues associated with deploying .NET Web Services.

.NET Technologies Used to Develop an XML Web Service



.NET
Enterprise

Servers:



Application Server 2000



BizTalk Server 200
0



Commerce Server 2000



Content Management Server 2001



Exchange Server 2000



Host Integration Server 2000



Internet Security and Acceleration Server 2000



Mobile Information Server 2001



SharePoint Portal Server 2001



SQL Server 2000



Windows 2000 Servers: (
Windows Family Home Page
)



.NET Framework
: (
.NET Framework
). A Windows run
-
time environment that provides an
enhanced set of sys
tem
-
level functionality designed to assist in the development and
management of Microsoft XML Web Services:

Microsoft
.NET Web Services Solutions

5


168Z
-
0202A
-
WWEN



Common Language Runtime (CLR) Managed Code: Provides a richer set of OS Services
than is available to the Win32 OS itself. (Additional information
on Microsoft’s CLR can
be found in the Appendix)



Memory Management (Automatic Garbage collection of Methods and Objects no
longer in use)



Version Management (DLLs, EXEs)



Object Oriented Programming (OOPs) support across languages (same feature sets
across
multiple languages)



Hierarchical Namespace organization



Code Security (built in granular security controls)



Interoperability with COM (uses a Runtime Callable Wrapper (RCW) to run a COM
object from a .NET Client and a COM Callable Wrapper (CCW) to run a .
NET
object from a COM Client.)



ASP.NET (.NET version of Active Server Pages): It includes a tool (.NET Web
Forms), which is an easy to use UI for ASP.



Visual Studio.NET:

(
Microsoft Visu
al Studio: Microsoft Visual Studio

.NET
-

Next
Generation
)



Visual Basic



C++



C#



Other Languages see:
http://msdn.microsoft.com/vstudio/partners/languages/
default.asp



.NET Windows Forms: (
Introducing Windows Forms
) A new forms package that provides an
interface UI design environment for the features of the .NET Framework.

In
addition, there are other standard technologies used by .NET (Reference:
Welcome to the
MSDN Library
):



ADO.NET

-

A
ctiveX
D
ata
O
bjects,

Microsoft's high
-
level interface for data objects.



XML

-

Ex
tensible
M
arkup
L
anguage,

a specification developed by the W3C. XML is a
pared
-
down version of SGML, designed especially for Web documents.



HTTP

-

H
yper
T
ext
T
ransfer
P
rotocol
, the underlying protocol used by the

World Wide
Web.



SMTP

-

S
imple
M
ail
T
ransfer
P
rotocol,

a protocol for sending e
-
mail messages between
servers.



TCP/IP

-

T
ransmission
C
ontrol
P
rotocol over
I
nternet
P
rotocol
. TCP is one of the main
protocols in TCP/IP networks. Whereas the IP protocol dea
ls only with packets, TCP enables
two hosts to establish a connection and exchange streams of data.



SOAP



S
imple
O
bject
A
ccess
P
rotocol

(SOAP) is a lightweight protocol for exchange of
information in a decentralized, distributed environment. SOAP relies
on the use of a transport
protocol, and while it is not tied to a particular transport protocol, currently HTTP is the
only

one that has been defined by the W3C.

Microsoft
.NET Web Services Solutions

6


168Z
-
0202A
-
WWEN



UDDI

-

U
niversal
D
escription,
D
iscovery and
I
ntegration

creates a platform
-
independent,
open
framework for describing services, discovering businesses, and integrating business
services.



WSDL


W
eb
S
ervices
D
escription
L
anguage

is an XML format for describing network
services as a set of endpoints operating on messages containing either document
-
o
riented or
procedure
-
oriented information. The operations and messages are described abstractly, and
then bound to a concrete network protocol and message format to define an endpoint. Related
concrete endpoints are combined into abstract endpoints (servic
es). WSDL is extensible to
allow description of endpoints and their messages regardless of what message formats or
network protocols are used to communicate.
Visual Studio.NET has the ability to auto
-
generate proxies of Web services based on WSDL. This fe
ature automatically allows
developers to have an SDK to work with at the object level without having to do string
manipulation to build SOAP Requests.


Note:

Additional information can be found in the Glossary in
APPENDIX E
-

Glossary
.

Deployment of XML Web Services

While a Microsoft XML Web Service (Web Service) can be defined as any URL
-
addressable
resource that provides Web
-
exposed business functionality, there are standards and technologies
that have been devel
oped to facilitate the implementation of Web Services.

Creating and Publishing a Web Service

By publishing a Web Service, an application can be created that exposes functionality to clients
via the Web. Creating a Web Service is similar to creating any c
omponent that provides
programmatic access to its application logic.

To create a Web Service, you need:



Functionality that constitutes the service you wish to expose



A service description that defines how to use the service



A messaging infrastructure to
support request processing and response dispatch

Publishing a Web Service is the process of creating application code that handles requests and
responses as method calls. These method calls take parameters and return values. There are three
basic steps in
volved in Web service creation and publishing:



Create your Web Service



Test the Web Service using remote debugging



Publish your Web Service to the server from which it will be accessible and verify that it is
accessible from a client. Publishing a Web se
rvice involves:



Deploying your solution to the Web server on which it will reside



Creating the necessary discovery mechanisms so that users can find out about your
service and make use of it.

Microsoft
.NET Web Services Solutions

7


168Z
-
0202A
-
WWEN

Web Services are made available to users via a discovery mecha
nism that usually takes the form
of a dynamic discovery document. The discovery document contains a reference to the WSDL
(Web Service Description Language) description location. End users browse the root of the Web
server to locate discovery documents, an
d from these files, they determine what services are
available to them. This discovery document is deployed with the project and placed in the
directory in which the solution is installed on the server. For example, suppose you have a Web
application proje
ct created in Microsoft VisualStudio.NET named
StockServicesSolution

that contains a Web service named
StockServices
. By default, the solution contains a
discovery file called
StockServices.disco
. When you deploy this solution to the server,
the following
structure is created:


\
inetpub


\
wwwroot


\
StockServices


StockServices.disco


StockServices.asmx


Other files for your Web Service


End users can access this discovery file by accessing its URL. In t
his case, the URL would be
http://webserver/StockServices/StockServices.disco
.

The .NET Framework provides the infrastructure on which to develop Web Services. This
infrastructure include
s built in SOAP support, a Web Services Description Language (WSDL)
Tool, a Web Services Discovery Tool, XML Schema Definition Tool, Code Access and Role
Based Security, and built in Web Service support to handle XML, POST, GET and SOAP.

Consuming a .NET W
eb Service

To access a Web Service, you need:



To locate a Web Service that provides needed business functionality



To locate the service description that defines how to use the service



To use a messaging infrastructure to support request processing, and r
esponse dispatch

The location of a Web Service, as well as the service description, is accomplished using UDDI
(Universal Description, Discovery, and Integration). The goal is to create and operate a global
registry for business
-
to
-
business commerce over t
he Internet. The service description is composed
of WSDL (Web Services Description Language). WSDL is an XML
-
based language used to
describe programs accessible via the Internet (or other networks), and the message formats and
protocols used to communicate

with them. WSDL is important because it enables Web Services
to describe their capabilities in a standard way, enabling easier interoperability among Web
Services and development tools.

A Web Service can be consumed via three different methods: HTTP POST
, HTTP GET, or
SOAP. SOAP (Simple Object Access Protocol) is an Internet
-
friendly way of using XML to send
messages and access dynamic Web Services across distributed networks.

Typically, Enterprises will deploy two types of Web Services: secure and publi
c. A secure Web
Service is one published for use by an enterprise’s trusted trading partner or customer. A public
Web Service is published and available for everyone to consume with few privacy or security
requirements.

Microsoft
.NET Web Services Solutions

8


168Z
-
0202A
-
WWEN

Private Web Services

Enterprises wil
l have the need to publish Web Services that are going to be consumed by trading
partners or customers. Since these types of Web Services will be consumed by these
organizations to conduct business, they will become mission critical to all parties involved
. With
mission
-
critical requirements for the Web Services, availability and scalability become critical
attributes of the components within the architecture. Figure 1 shows a typical scenario for hosting
the Web services.



F
igure
1
: Private Web Service consumed by a trusted trading partner.

In this scenario, the Web Service is published and consumed by the trading partners on the DMZ.
An example of this transaction would be the need for the trading pa
rtner to submit SAP orders
into the organization. The port used to access the Web Service is determined by an agreement
between both parties involved


the trading partner and the enterprise. The requests come in the
form of XML documents from the trading
partner. The first step is a farm of Web/application
servers running Microsoft BizTalk Server 2000. Using a farm of servers, rather than a single
server, is done for availability and scalability. In this scenario, BizTalk Server 2000 serves
multiple purpos
es


XML document validation and authentication, aggregation of various XML
schemas to one common scheme, and guaranteed message delivery. Next is the use of the
published Web Service. In this scenario, the Web Service is used to publish data consumed fro
m
another Web Service or as an adapter for a back
-
end ERP system. Using the Web Service as an
adapter eliminates the need for highly customized software and communications components.

Microsoft
.NET Web Services Solutions

9


168Z
-
0202A
-
WWEN

Another use of a Web Service in this scenario is to have an applicatio
n in the DMZ consume data
from a Web Service located in the corporate network. This type of transaction uses Simple Object
Access Protocol (SOAP), eliminating the need to have multiple ports open on the back
-
end
firewall. In all instances, the Web Services

are hosted on farms of Web servers using load
balancing to provide scalability and availability.

Public .NET Web Services

In addition to secure Web Services, enterprises may have occasion to publish data that is to be
consumed by everyone. This type of We
b Service does not require authorization, authentication
or privacy. Examples of these types of Web Services would be ones that provide the company’s
stock price or a current listing of products. Figure 2 shows this type of deployment.



Figure
2
: Public Web Service consumed by anonymous users.

In this scenario, an anonymous user consumes data published from a Web Service within the
company’s DMZ. Since the company wishes to make this available for ever
yone, the request uses
port 80. In this example, the Web Service is used to publish the latest product listings from the
company’s back
-
end ERP system or to publish data that is consumed from an internal Web
Service. In all instances, the Web Services are
hosted on farms of Web servers using load
balancing to provide scalability and availability.

Microsoft
.NET Web Services Solutions

10


168Z
-
0202A
-
WWEN

Performance Considerations

As with most applications, performance should be addressed. When considering performance,
two attributes should be looked at


the Web
Service itself and the platform for the Web Service.

Web Services have the ability to consume and publish data. With this in mind, it is easy to see
that Web Services that are not planned correctly will run into performance issues. For example,
consider
a Web Service that consumes from another Web Service. The performance of the Web
Service that is consuming is dependent on the performance of the Web Service it consumes from.
Further, without knowing the design of the Web Service that you are consuming fr
om, you can
get into a situation where you consume from a Web Service that consumes from a Web Service,
which consumes from yet another Web Service, and so on. This type of daisy chaining may lead
to performance problems. Further, this type of implementati
on leads to availability issues should
one of the Web Services in the chain fail.

The platform for hosting the Web Service should also be addressed when considering the
system’s performance. For this reason, Compaq recommends a
Scale Out

approach when sc
aling
the Web/Application Server resources. Scaling out is often the better approach when applications
can support session state management and/or when load balancing provides a more cost
-
effective
solution and/or when Internet services can be distributed
across multiple servers.

Advantages to scaling out are:



Scalable and highly available services can be deployed, allowing capacity improvements
without interruptions.



Servers can be maintained and supported much more easily since services are not required

to
go down to add or remove a server for repair or replacement.



There are linear and predictable costs associated with scaling out an application across
multiple servers.

Disadvantages to scaling out:



Depending on the application, the cost per server and
the cost of hardware load balancing
may be higher than an implementation on one server.



Software licenses may be higher when licenses are sold on a per
-
server basis.



Management may increase for each server added to the array if appropriate best practices a
re
not defined for the environment.

For a complete discussion on Scaling Up and Scaling Out, see the Compaq white paper titled

Scaling Up and Scaling Out with Compaq
ProLiant

Servers and Microsoft Windows


found at:
http://www.compaq.com/activeanswers
.

Security Considerations

As stated earlier, privacy and security become most important when publishing a Web Service for
doing business with a trading partner or customer.

Microsoft
.NET Web Services Solutions

11


168Z
-
0202A
-
WWEN

Security Technologies

HTTP offers s
upport for many security technologies. There are three areas of security in e
-
commerce transactions: authentication, authorization, and privacy. Authentication verifies the
identity of the requestor of services. Authorization verifies that the given identi
ty has access to
the requested services. Privacy guarantees that the message cannot be read, copied, or
manipulated in transit.

Authentication

Authentication can be done with the HTTP protocol and, in the future, in the SOAP message (if a
legal extension t
o the SOAP protocol were made). The IBM Research Center in Tokyo has
submitted a Note to the W3C to propose a legal SOAP extension that is nearly equivalent to the
SSL client
-
certificate approach. The extension uses the SOAP Header to transmit authenticati
on
information and to guarantee
data
-
integrity

at the same time. While this Note has been submitted
to the W3C suggesting an extension to the SOAP protocol, until it is accepted or approved the
only viable option is to let authentication be handled by the
HTTP protocol. The table below lists
the authentication options within HTTP when using Microsoft IIS as the Web server.

Basic

Use for non
-
secure or semi
-
secure identification of
clients, as username and password are sent in plain text.
IIS will authorize a
ccess to the Web Service if the
credentials match a valid user account.

Basic over SSL

Same as Basic authentication except that username and
password are sent over the network with SSL encryption
rather than in plain text. A good option for Internet
scena
rios; however, using SSL has a significant impact
on performance.

Digest

Uses hashing to transmit client credentials in a secure
way. However, not widely supported on non
-
Windows
platforms. IIS will authorize access to the Web Service if
the credentials m
atch a valid user account.

Integrated
Windows
authentication

Useful only for intranet scenarios. Uses NTLM or
Kerberos. It can’t be used across proxy servers or other
firewalls. IIS (or other security application) will authorize
access to the Web Service
if the credentials match a valid
user account.

Client
certificates

Requires each client to obtain a certificate. Certificates
are mapped to user accounts, which are used by IIS (or
other security application) for authorizing access to the
Web Service. A v
iable option for Internet scenarios,
although use of digital certificates is not widespread at
this time.

The Basic, Basic over SSL, Digest, and Integrated Windows authentication (NTLM) methods all
rely on passwords to authenticate a user. However, Basic

authentication sends passwords over
the network in clear text. In certain circumstances, Basic over SSL will also send passwords over
the network in clear text. Basic over SSL can be made relatively secure with additional
modifications that allow the pa
ssword to be encrypted.

Microsoft
.NET Web Services Solutions

12


168Z
-
0202A
-
WWEN

If a password
-
based scheme is not sufficient to authenticate the user, the Secure Sockets Layer
(SSL) architecture allows verifying the identity of users through client certificates. The protocol
known as HTTPS is really HTTP over

SSL. These client certificates are a result of Public Key
Infrastructure (PKI) technology. PKI forms the technology that issues, manages and validates
digital certificates. A digital certificate issued by a certificate authority (CA) binds a public key to

a specific user and details the operations it can be used for, as well as its validity duration. It also
identifies the CA that issued it with the issuer's signature. This public key can be used in concert
with its associated private key to authenticate t
he user and perform cryptographic operations. A
digital certificate can be assigned to a server or to an individual.

Privacy

As with authentication, there are two ways to go about it: by HTTP protocol or by SOAP
extension. The IBM proposal mentioned abo
ve also covers the extension variant for privacy;
however, as this extension has not been approved, only the HTTP protocol options will be
considered in this document.

For HTTP, the choice is obviously HTTP over SSL (HTTPS). HTTPS is a secure protocol tha
t
will encrypt all traffic between client and server. With the recent changes in U.S. legislation, 128
-
bit wide, strong encryptions keys are now available almost anywhere, and SSL is the most widely
deployed privacy infrastructure for e
-
commerce. Because H
TTP's integration with SSL is
transparent for the implementation of HTTP services (although it comes with some cost in
performance and scalability), it can readily be used with any SOAP implementation that sits on
top of an HTTPS
-
aware infrastructure.

Aut
horization

Privacy and authentication can be achieved by using either HTTPS with a password
-
based
scheme or HTTPS with digital certificates. However, possibly the most difficult aspect of security
can be authorization. The use of digital certificates for a
uthorization is extremely inflexible. Each
certificate is issued with V3 attributes that cannot be altered. If a user’s access level changes, a
new certificate must be issued. Either before or after a user is authenticated, you must decide if
the identity
presented is authorized to have access to the requested system, data, or functionality.

The trust policy must be managed and enforced at the application level. The application level
contains the code that accesses and processes all sensitive data such as
purchase orders, prices,
revenues, customers, employees, salaries and so on. This is further emphasized because of the
need for outside B2B users to be given access to a specific application or Web Service.
Applications, which typically have unrestricted a
ccess to pass traffic through a firewall as needed,
are expected to check these users against their own access control list.

Security Strategy

While the SOAP specification does seemingly ignore all security issues, the infrastructure to
deploy SOAP on HT
TPS in a secure way exists
now
. By using all features of SSL (including
client
-
side certificates), authentication, integrity and privacy can be guaranteed for all traffic. For
password
-
based authentication, RFC2617 can replace client
-
certificates and still

be used with
SSL encryption.

In addition, the SOAP extensibility mechanism allows for the extension of the protocol for the
purpose of introducing message integrity, privacy and even authentication within the message
itself in a way that is compliant wit
h the specification but, most importantly, optional.

Microsoft
.NET Web Services Solutions

13


168Z
-
0202A
-
WWEN

Access to secure Web Services published and shared with trading partners should be severely
restricted as these Web Services provide direct access to business logic functionality and data.
Some items t
o consider for restricting this access are:



The inside firewall protecting the Corporate Network should not allow any traffic over port
80.



The inside firewall protecting the Corporate Network should allow HTTPS traffic on a port
not known to the outside

world.



The inside firewall protecting the Corporate Network should restrict HTTPS traffic on a
point
-
to
-
point basis. (For example, a known/trusted IP address to another known/trusted IP
address)



The Web Services should run under a specific local user ac
count thus restricting access to the
COM components or managed classes to that user account. This account will have limited
privileges (no write access, or local admin, etc.)



Digital Certificates are the most secure solution. If certificates cannot be sup
ported, an SSL
encrypted password
-
based authentication scheme should be used.



Authorization should be handled by mapping the user name and password to a local account
on the Web server.



For custom
-
developed Web Services, each Web Service should satisfy onl
y one particular
XML function.



All Web Services should validate the incoming message (SOAP Request) against the schema
before processing the request.



All machines hosting Web Services that use SSL traffic should be equipped with an SSL
acceleration control
ler(s) or other means of accelerating SSL processing. This provides a true
performance increase while using SSL.

Microsoft
.NET Web Services Solutions

14


168Z
-
0202A
-
WWEN

Discoverable Web Service (UDDI)

For Web Services to be utilized, they need to be discoverable to businesses on the Internet.
Therefore, UDDI

is considered an important part of the Web Services protocol stack, and thus an
important aspect of the Microsoft XML Web Services offering.

What is UDDI?

UDDI, which stands for Universal Description, Discovery, and Integration, is a global registry
m
anaged by Microsoft, IBM, and Hewlett Packard that allows any business to discover and be
discovered by other businesses from anywhere around the world so that they may conduct
economic transactions more efficiently. Think of UDDI as the “yellow pages” for

the Internet. In
addition, UDDI not only allows for the discovery of trading partners but also describes services,
whether they are Web Services or manual services.

UDDI is more than a search engine for businesses and the services they provide. Discover
ing
potential partners is only part of the solution. More importantly, a means of communication
among your many varying partners must be inherently defined in a dynamic way regardless of the
platform or application they are using to conduct business. In an

ideal environment, an internal
business application, which will be UDDI aware, will go out on the Web, search the UDDI
registry, identify and download technical specifications to allow seamless integration between the
internal application and the discover
ed external one, and conduct automated transactions with
little to no human intervention.

For example, suppose a company wanted to order auto parts electronically via the Web. An
individual at that company would access an internal service to search the U
DDI global registry, a
Web Service in itself, for all suppliers of auto parts. Once the service has “discovered” all
potential suppliers, the next objective is to identify which suppliers provide an online order entry
Web Service. Finally, once multiple tr
ading partners are identified that expose this service, it
must be determined if the internal business application (electronic invoicing Web service) is
compatible / interoperable with those discovered.

Work is currently underway to provide enterprises w
ith a private implementation of UDDI
Business Registries (UBR). This UDDI implementation would help a large organization register
and manage its internal Web Services, an example being Enterprise Application Integration.
In
this implementation, the entries

are for Web Services provided by departments or groups within
an organization. This type of UDDI implementation is completely hidden from external users
behind an enterprise’s firewall. Publish
-
and
-
find operations are completely restricted to
applications

within the enterprise.

Why use UDDI?

In developing a Web Service, UDDI should be used primarily to stay competitive with other
companies using Web Services. Without adopting the UDDI initiative, the organization runs the
risk of overlooking multiple reven
ue streams from acquiring new trading partners. More
importantly, the business’ existing suppliers / vendors will go else where to conduct business in a
more efficient / automated fashion through UDDI and Web Services. Web Services are the next
logical evo
lutionary step in the Internet space that allows programmable elements to be called by
other applications (Application
-
to
-
Application (A2A) Integration) in a distributed manner.

Microsoft
.NET Web Services Solutions

15


168Z
-
0202A
-
WWEN

Without UDDI, businesses that want to conduct transactions with their tradin
g partners (partners
by choice or coerced partnerships) must either build their own proprietary software or leverage
someone else’s technology, which can become very costly. As the numbers of businesses expand
online, so have the numbers of proprietary sof
tware for A2A integration. This influx of in
-
house
software has created a Web of non
-
standardized forms of communications that has led to a slow
time to market for products and services. With the adoption of UDDI, time to market for services
are reduced, a
nd A2A integrations on independent systems lead to smoother, more efficient
transactions, the way the Internet was meant to be.

What problem does UDDI solve?

No longer do you have to be a fortune 500 company with the financial depth needed to implement
or lease proprietary software in order to conduct B2B e
-
commerce. UDDI essentially levels the
playing field for companies of all sizes


small, medium, and large


to dynamically discover and
be discovered, as illustrated in Figure 3, which relates to high
er profit with little to no additional
cost (marketing). In addition, a standardized specification for doing business will alleviate the
need for many businesses to purchase very expensive proprietary technology
.









Figure 3.
A UDDI registry no
de exposes the registry contents using a standard, SOAP
-
based API.
Registry nodes also replicate the registry data with one another to ensure changes at the one node
are propagated to all nodes. Source:
www.xmlmag.co
m

As more and more businesses transform their business functions into Web Services, it has
become imperative for companies, small and large, to discover, describe, and integrate
incompatible systems and applications to stay competitive in the B2B marketpl
ace.

In essence, UDDI provides three distinctive types of data:

1.

White Pages data = name of the organization, contact name, phone number, address, and
other general information

Microsoft
.NET Web Services Solutions

16


168Z
-
0202A
-
WWEN

2.

Yellow Pages data = displays multiple categories based on industry
-
standard ta
xonomies such
as NAICS (North American Industrial Classification System), geographic location, and the
products and services that they provide.

3.

Green Pages data = Displays a company’s key business processes such as the applications
supported by their syste
m, payment methods, shipping requirements, billing requirements,
and types of protocols supported. More importantly, it displays or directs you to technical
specifications necessary for applications to locate and consume Web Services with other
companies o
r applications.

With these three types of data, any company can register and indicate the services they provide on
the UDDI registry node. Buyers and vendors will search the UDDI registry for trading partners in
hopes of getting a competitive advantage i
n the market, as illustrated in Figure 4. Company
specifications will be published and accessible by other organizations for system / application
interoperability.



Figure 4: Functionality of UDDI Registration

Management of Web
Services

Maintaining a website and Web Services is as important as maintaining a vehicle. For example,
you can change the vehicle's oil regularly, much the same as updating your system to the latest
revision. Similarly, you could choose not to so do and ex
perience costly downtime that could just
as easily have been prevented with a few minutes worth of work at a minimal cost. Verifying that
resources are not being depleted or that a component in the system is beginning to fail could
provide invaluable insig
ht to the availability required by Web Services.

Microsoft
.NET Web Services Solutions

17


168Z
-
0202A
-
WWEN

Tools and Services

Compaq and Microsoft provide tools that assist in effectively managing Web Services and
monitoring performance to maintain response time and provide consistent availability while
targeting

a lights out operation. Tables 1 and 2 outline many of the various tools and services
available from Compaq and Microsoft. Most of the software
-
based tools from Compaq are
located in the Compaq
SmartStart

and Management CDs provided with every new server
or can
be downloaded from the Compaq website. Most of the tools listed below from Microsoft can be
found on the Windows Server installation CD, or Product Application CD.

Table 1: Compaq and Microsoft Tools and Services Available

Special
Services

Hardware
Management Tools

System Management
Tools

Application
Management Tools

Compaq

Pre
-
Failure
Warranty


Compaq
SmartStart

Compaq Survey Utility

Compaq System
Partition Utilities

Compaq System
Partition Administration

Compaq Automatic
Recovery Server

Compaq
St
andby
Recovery Server

Compaq Integrated
Remote Console

Compaq Remote Insight
Lights
-
Out Edition

Compaq
Asynchronous
Management

Compaq SNMP
3

Agents


Compaq Integration
Server

Compaq Insight
Manager

Compaq Network
Management Software

Compaq Insight
Manager
XE

Compaq Availability
Agents

Microsoft Remote
Access Services (RAS)

Microsoft Dial
-
Up
Networking

Microsoft Netmon

Microsoft Performance
Monitor

Microsoft Terminal
Server

Microsoft SQL
Manager

Microsoft Internet
Information Services
Manager

Microsoft
Manag
ement
Console

Microsoft Application
Center 2000




Table 2: Compaq DISA Architecture Management Components

Component

Hardware
Management Tools

System Management
Tools

Application
Management Tools

Local Management
Console

Compaq
SmartStart

Compaq Survey

Utility

Compaq System
Partition
Administration Utility

Compaq Remote
Integration Server
(repository for
configurations)

Compaq Insight
Manager

Compaq Insight
Microsoft SQL Server
Agent

Microsoft IIS Manager

Microsoft Application
Center 2000





3

SNMP (Simple Network Management Protocol) is a network management protocol that was designed to create a communication
medium between different type networks. The primary functions performed by this protocol are: reading terminal data, se
tting
terminal data, and trap network events, such as terminal startups or shutdowns.


Microsoft
.NET Web Services Solutions

18


168Z
-
0202A
-
WWEN

Component

Hardware
Management Tools

System Management
Tools

Application
Management Tools

Insight Lights
-
Out
Edition

Three (3) Analog
(POTS) lines for dial
-
up access

Compaq SNMP
agents

Ma
nager XE

Microsoft
Performance Monitor

Microsoft Remote
Access Services
(RAS)

Remote Management
Console

Analog (POTS) line
for dial
-
up access

Compaq SNMP
agents

Compaq Ins
ight
Manager

Compaq Insight
Manager XE

Microsoft Dial
-
Up
Networking

Compaq Availability
Agents

Firewall


Compaq
SmartStart

Compaq Survey Utility

Compaq System
Partition
Administration Utility

Compaq Remote
Insight Lights
-
Out
Edition

Analog (POTS) line
for

dial
-
up access

Compaq Insight
Manager

Microsoft
Performance Monitor

Firewall vendor
management tool


Load Balancer

Compaq SNMP
agents


Vendor supplied tools

Web and Application
Server Layer

Compaq
SmartStart

Compaq Survey Utility

Compaq System
Partition

Administration Utility

Compaq Integrated
Remote Console

Compaq Remote
Insight Lights
-
Out
Edition

Analog (POTS) line
for dial
-
up access

Compaq SNMP
agents

Compaq Management
Agents

Microsoft
Performance Monitor

Microsoft Netmon


Microsoft IIS Manager

Micros
oft
Management Console

Compaq Availability
Agents

Microsoft Application
Center 2000


Database Firewall

Compaq
SmartStart

Compaq Survey Utility

Compaq System
Microsoft
Performance Monitor


Firewall vendor
management tool

Microsoft
.NET Web Services Solutions

19


168Z
-
0202A
-
WWEN

Component

Hardware
Management Tools

System Management
Tools

Application
Management Tools

Partition
Administration Utility

Compaq Remote
Insight Lights
-
Out
Edition

Analog (POTS) line
for
dial
-
up access

Data Resources Layer

Compaq
SmartStart

Compaq Survey Utility

Compaq System
Partition
Administration Utility

Compaq Remote
Insight Lights
-
Out
Edition

Analog (POTS) line
for dial
-
up access

Compaq SNMP
agents

Compaq Management
Agents

Microsoft
Performance Monitor

Microsoft Netmon


Microsoft SQL Server
Manager

Compaq Availability
Agents

Network Access
Device

Compaq SNMP
agents

Microsoft Netmon

Network access
device.

Vendor supplied

management tools


Microsoft
.NET Web Services Solutions

20


168Z
-
0202A
-
WWEN

DISA and a Web Services

The Compaq DISA architecture is a natural and complementary architecture with both Web
Services development and the .NET Framework. DISA’s multi
-
layer model is directly
complementary with Microsoft’s three
-
tier
.NET development architecture. The Microsoft
architecture recommends a presentation tier, a business logic tier and a data tier. In Compaq’s
architecture for deployment, Compaq recommends an access and acceleration layer (for load
balancing, firewall and c
aching devices), a Web and application layer, and a data resource layer.
These two architectures provide synergies for design, development and deployment of distributed
applications.

The DISA Architecture

The Compaq
Distributed Internet Server Array (DIS
A)

architecture, illustrated
in Figure 5, is a blueprint and set of recommended best practices for
deploying highly available and highly scalable e
-
commerce/Internet
applications.



Figure 5: DISA Architecture

Access
Clients

Load

Balance
r


Web
Servers

&

Data

Servers

Application

Servers

Internet




Data

Resources


Web &

Application

Resources


Access &

Acceleration

Resources



Clients



Microsoft Windows NT

Load Balanci
ng Service
(WLBS)


Microsoft
.NET Web Services Solutions

21


168Z
-
0202A
-
WWEN

DISA Key Principles

Use multiple application

servers rather than a single server.

When combined with intelligent
load
-
balancing technology, multiple application servers are more scalable and available than a
single server with additional processors and memory. In cases where availability is critical
,
Compaq recommends a minimum of three servers, allowing for a single server to be serviced
offline while keeping a redundant pair of servers online at all times. Application servers may have
one or more processors, depending on the characteristics of the
particular application. By using
appropriate load
-
balancing technology, it may be possible to combine servers with different
processing power and I/O characteristics into a single application server array.

When applicable, data resources, such as static co
ntent and application code, can be
centralized on amply
-
configured, highly
-
available data resources layer servers rather than
replicating them on the application servers in the Web and applications resources layer.

If
appropriate fail
-
over techniques are a
pplied, centralized data resource servers can simplify the
task of managing rapidly changing application resources. Centralizing application resources also
simplifies capacity expansion and failure recovery. To minimize downtime and ensure good
performance
, data resource servers should be amply configured with multiple processors,
sufficient RAM, and redundant components (NICs, power supplies, and fans). Clustering
technologies significantly improve the availability of centralized resources. Again, it shoul
d be
noted that based on business requirements and application support, centralization may not always
be appropriate.

Use redundancy at potential single points of failure.
Fail
-
over configurations are advisable for
load balancers, firewalls, and networking

devices. Intelligent load
-
balancing technology provides
fail over for redundant application servers. Clustering databases and network storage ensures
uptime for data resources. Redundant NICs, power supplies, and fans are advisable to enhance
uptime on da
ta resource servers. Redundant network connectivity through multi
-
homing and an
uninterruptible power supply (UPS) are also advisable. The right degree of redundancy depends
on the underlying business requirement and the available budget.

Build applicati
ons to ensure that user state information is not maintained on a single
application server.
Applications that maintain user state on a single
-
application server may not
function with certain load balancing algorithms. Some load
-
balancing products avoid suc
h
problems by managing load on an individual user basis to ensure that each user stays with the
same application server throughout the session.

It is recommended that data resources servers are scaled up and Web/application servers
are scaled out.

This re
commendation is based on testing that indicates Web/e
-
commerce
applications can handle increased load best when
scaled out

while database
-
centered applications
scale up

adequately for most of today’s deployments. Compaq recommends proof
-
of
-
concept
testing
in a non
-
production environment using the actual target application as a matter of best
practice for all application deployments. Testing the actual target application in a production
environment is the most effective way to estimate system behavior. For a

detailed discussion on
scaling Compaq
ProLiant

servers, see the white paper titled:
Scaling Up and Scaling Out with
Compaq
ProLiant

Servers and Microsoft Windows

found at
http://activeanswers.compaq.com/ActiveAnswers/Render/1,1027,4808
-
6
-
100
-
225
-
1,00.htm

Additional information about DISA can be found at:

http:/
/activeanswers.compaq.com/ActiveAnswers/Render/1,1027,1573
-
6
-
100
-
225
-
1,00.htm
.

Microsoft
.NET Web Services Solutions

22


168Z
-
0202A
-
WWEN

Conclusion

This document has identified the technologies associated with Microsoft XML Web Services and
discusses best practices for developing, deploying, consuming, securing
, and managing a Web
Service from a Microsoft .NET platform.

This document provided information on how to develop, deploy, consume, secure, and manage a
Web Service.

Microsoft
.NET Web Services Solutions

23


168Z
-
0202A
-
WWEN

APPENDIX A
-

Microsoft’s CLR

The most important component of the .NET Framework is the C
ommon Language Runtime
(CLR). Its functions include:



manages and executes code written in .NET languages



forms the basis of the .NET architecture



activates objects



performs security checks on objects



lays objects out in memory



executes objects



garbage coll
ects objects



The CLR environment includes the following concepts:



the CLR



executables



metadata



assemblies



manifests



the CTS (Common Type System)



the CLS (Common Language Specification)



.NET PE File



.NET PE File


.NET PE File

Common Runtime Language


Figure A
-
1. The CLR environment.

Figure A
-
1 shows the two portions of the .NET environment, with the bottom portion
representing the CLR and the top portion representing the CLR executable or Portable Executable
(PE) files which are .NET assemblies or
basic units of deployable code. The CLR is the runtime
engine that loads required classes, performs just
-
in
-
time compilation on needed methods,
enforces security checks, and accomplishes a number of other runtime functionalities. Microsoft
.NET executables

are different from typical Windows executables in that they carry not only code
and data, but also metadata.

Microsoft
.NET Web Services Solutions

24


168Z
-
0202A
-
WWEN

Metadata is machine
-
readable information about a resource, or "data about data." In .NET,
metadata is a common mechanism or dialect that the runti
me, compilers, and tools can all use.
Microsoft .NET uses metadata to describe all types of machine
-
readable information that are used
and exposed by a particular .NET assembly. In this sense, metadata describes an assembly in
detail, including description
s of its identity (a combination of an assembly name, version, culture,
and public key), the types of data that it references, the types of data that it exports, and the
security requirements for execution. Metadata provides enough information for any runt
ime, tool,
or program to find out literally anything that is needed for component integration. Stated another
way, any application, tool or utility that can read metadata from an assembly can make use of that
assembly.

Metadata provides language interoper
ability, an essential element to .NET, since all languages
must use the same types of data in order to generate a valid .NET PE file. The .NET runtime
cannot support such features as memory management, security management, memory layout, type
checking, deb
ugging, and so on without the richness of metadata. It can safely be said that there
would be no .NET without metadata.

The different types of runtime, tool, component or utility must expose their metadata to allow
tools and programs to access them and ben
efit from their services. Metadata for these items is not
enough. To simplify software plug
-
and
-
play and configuration or installation of the component
or software, we also need metadata about the component that hosts these types of data. This leads
to a
discussion about .NET assemblies (deployable units) and manifests (the metadata that
describes the assemblies).

An assembly is a logical collection of one or more EXE or DLL files containing an application’s
code and resources. An assembly also contains a
manifest,
which is a metadata description of the
code and resources “inside” the assembly. An assembly can be a single file, either EXE or DLL.
Although an assembly often resides in a single file, it can be a logical, non
-
physical collection of
more than
one file residing in the same directory. The manifest specifying the files can reside in
one of the code
-
containing EXE or DLL files of the assembly, or it can reside in a separate EXE
or DLL file that contains nothing but the manifest.

Assemblies can be p
ublic or private, depending on whether they will be used by one application
or several. The .NET framework allows assemblies to be shared by placing them in the
global
assembly cache (GAC)
, which is the
\
\
winnt
\
assembly directory.

Shared assemblies use public
key cryptography to ensure that their names are unique (strong names). The public/private key
algorithm also provides a check on the integrity of the assembly’s files. The .NET Framework
incorporates functionality for versioni
ng using the assembly’s metadata.

Microsoft
.NET Web Services Solutions

25


168Z
-
0202A
-
WWEN

APPENDIX B
-

Example

Overview of a B2B Web Service Demonstration

This demonstration takes Microsoft’s “
Learn BizTalk
” procurement scenario, which ships with
BizTalk Server 2000, and adds one buyer
-
side and two supplier
-
side Web Services. The main
objective of the demonstration was to create a working business scenario using BizTalk Server
2000 and Web Services to automate the process. The demonstration illustrates how a business can
query multiple suppliers for pricing,
pass the quote through predefined business logic, and
complete the purchase automatically using Microsoft .NET technologies.

In this demonstration, BizTalk Server 2000 and Visual Studio .NET are used to create a fully
functional procurement process, inclu
ding multiple supplier quotes. The physical implementation
of this demonstration is illustrated in Figure B
-
1. Web Services handle the initial communication
and logic before the process enters BizTalk, as illustrated in Figure B
-
2, which uses XLANG for
the

logic. SOAP and XML are the standard data formats for the documents and data transfer is
handled via HTTP Posts. Both ASP and ASP.NET are used to place the posts into the business
message queues (MSMQ).

The Learn BizTalk demo provides an excellent overv
iew of the functionality of BizTalk server.
This demonstration added logic in the XLANG schedules, to handle multiple suppliers, and
added/modified the ports and channels. The Web Services were added to complete the process
and create an actual Microsoft X
ML Web Service implementation.









Figure B
-
1: Physical Implementation of Demonstration




Microsoft
.NET Web Services Solutions

26


168Z
-
0202A
-
WWEN


Figure B
-
2: Flow of logic and communication in the d
emonstration

Figure B
-
3 illustrates the processing of the transactions in the demonstration and the transaction
steps are described in the numbered steps that follow Figure B
-
3.

Microsoft
.NET Web Services Solutions

27


168Z
-
0202A
-
WWEN


Figure B
-
3: Flow of transactions in the demonstration

1.

A user from the Buyer company accesses an internal Active Server Page (ASP), then
completes and submits a Purchase Request.

2.

The ASP performs an HTTP Post to an internal Web

Service. This Purchase Request is sent
using a SOAP envelope via HTTP.

3.

The Buyer’s Web Service receives the Purchase Request, process it and sends out a Quote
Request using a SOAP envelope via HTTP to the Web Service of each of the two suppliers,
Supplie
r 1 and Supplier 2.

4.

Each supplier’s Web Service processes the Quote Request and sends a “Quote Response,”
again with a SOAP envelope via HTTP to the Buyer’s Web Service.

5.

Once the Buyer’s Web Service receives all quotes, the Buyer’s Web Service processes
the
quotes and determines which supplier is quoting the lowest cost for the product(s) that the
buyer wants to purchase. The Web Service then creates an XML
-
based Purchase Order (PO)
Request that includes product, quantity, which supplier to purchase from,

and other pertinent
information and places it into an MSMQ Queue.

6.

The Buyer’s BizTalk Server “Receive Function” pulls the XML
-
based PO Request into
BizTalk for processing. BizTalk passes the PO Request to an XLANG schedule for the
business logic to Appro
ve or Disapprove the request and provide BizTalk the answer. If the
PO Request is Disapproved, BizTalk sends an e
-
mail to the individual responsible for the
request indicating that the PO Request has been Disapproved. If the PO Request is Approved,
BizTalk

sends a SOAP envelope “Purchase Order” via HTTP to the supplier determined by
the Web Service. Supplier receives the Purchase Order via an Active Server Page and the
ASP places the PO into an MSMQ Queue.

Microsoft
.NET Web Services Solutions

28


168Z
-
0202A
-
WWEN

7.

The supplier’s Web Service sends an “Acknowledgeme
nt” to the Buyer’s BizTalk Server and
causes the order to be shipped.

8.

The supplier’s BizTalk Server pulls the Purchase Order from the MSMQ Queue for
processing. After processing, the supplier’s Web Service posts an “Invoice” to the Buyer’s
Receive ASP. Ag
ain, the Posting of the ASP uses a SOAP envelope and HTTP as the
transport.

9.

The Buyer’s Web Service processes the Invoice, sends it to Finance, which then sends a
“Payment” to the supplier.

These steps are illustrated, in terms of logical process flow, i
n Figure B
-
4.



Figure B
-
4: Logical Process Flow of transaction in demonstration.

User Input
Requested Data
Accept User
Input - HTTP Post
to Internal Web
Service
SOAP -
Requested
Data
Process
Requested Data
Send out for
Quotes - HTTP
Post to Supplier
Web Service
SOAP -
Requested
Part and
Quantity
Gather Quotes
from Both
Suppliers
Determine
Best Quote
Create XML PO
Request from
Best Quote -
Send to MSMQ
MSMQ
Message-
PO
Request
Receive PO
Request Pass to
XLANG
Schedule
Approve/
Disapprove
Request
Determine
Company to Send
PO
Send PO to
Company - HTTP
Post to .asp page
XML - PO
to Supplier
Receive .asp
sends Request to
MSMQ
MSMQ
Message -
PO
Process PO
through Biztalk
Server - HTTP
Post Invoice to
Northwind's .asp
page
XML -
Invoice
Write File to
Invoice Directory
End
End
Invoice
from
Supplier
User
Interface

Internal Web Site

Internal Web Service

Internal Web Service

Internal Web Service

Produce Quotes
and Return Them
- HTTP Response
to Northwind
Internal Web
Service
Supplier Web Service

.ASP Page

Biztalk Server

Biztalk Server

Biztalk Server

Biztalk Server

.ASP Page

Supplier Biztalk Server

Decline

SOAP -
Quote
Information

Logical Process Flow

Microsoft
.NET Web Services Solutions

29


168Z
-
0202A
-
WWEN

Sample Web Service Processing Flow

Figure B
-
5 illustrates a simple example of the demonstration layout that can be used to
demonstrate Web Servi
ce processing flow.


Figure B
-
5: Basic Demonstration Layout illustrating Web Service Process Flow

The steps in this demonstration Web Service proces
sing are as follows:

10.

The client application HTTP posts a SOAP Request call to the sample Web Service
containing the desired transaction name and the required parameters. The client application
waits for the service response.

11.

The sample Web Service initiat
es a connection to the database and queries the hardware unit
price table for the desired hardware price quote.

12.

The sample Web Service receives a response from database

13.

The sample Web Service processes the database response and returns the SOAP response to

the client application via the synchronous HTTP connection.

These steps are shown graphically in Figure B
-
6.

Microsoft
.NET Web Services Solutions

30


168Z
-
0202A
-
WWEN

Sample Web Service Processing Diagram












Receiving Product Name
from Client Application
Find the Unit Price from the
Compaq Hardware Price
Database
Return Hardware Unit Price
to the Client Application
End
Product Name match
database Record?
Yes
Return Not Found Event
No

Figure B
-
6: Web Service Processing F
low in Example


Sample Web Service Processing Input Interface


Request Format

Parameters

Parameter Type

SOAP via HTTP POST

Computer Production Name

String

Sample Web Service Processing Output Interface


Response Format

Parameters

Parameter Type

SOAP via

HTTP
Response

Computer Hardware Unit Price

Float (Single)

Microsoft
.NET Web Services Solutions

31


168Z
-
0202A
-
WWEN

Files and Code Samples of Sample Process Flow


Sample Web Service WSDL file


<?xml version="1.0" encoding="utf
-
8"?>

<definitions xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:http="http://schem
as.xmlsoap.org/wsdl/http/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:s0="htt
p://tempuri.org/"
targetNamespace="http://tempuri.org/"
xmlns="http://schemas.xmlsoap.org/wsdl/">


<types>


<s:schema attributeFormDefault="qualified" elementFormDefault="qualified"
targetNamespace="http://tempuri.org/">


<s:element name="QuoteUni
tPrice">


<s:complexType>


<s:sequence>


<s:element minOccurs="1" maxOccurs="1" name="ProductName"
nillable="true" type="s:string" />


</s:sequence>


</s:complexType>


</s:element>


<s:element name="Quot
eUnitPriceResponse">


<s:complexType>


<s:sequence>


<s:element minOccurs="1" maxOccurs="1" name="QuoteUnitPriceResult"
type="s:float" />


</s:sequence>


</s:complexType>


</s:element>


<s:element name="
float" type="s:float" />


</s:schema>


</types>


<message name="QuoteUnitPriceSoapIn">


<part name="parameters" element="s0:QuoteUnitPrice" />


</message>


<message name="QuoteUnitPriceSoapOut">


<part name="parameters" element="s0:QuoteUnitPr
iceResponse" />


</message>


<message name="QuoteUnitPriceHttpGetIn">


<part name="ProductName" type="s:string" />


</message>


<message name="QuoteUnitPriceHttpGetOut">


<part name="Body" element="s0:float" />


</message>


<message name="Quote
UnitPriceHttpPostIn">


<part name="ProductName" type="s:string" />


</message>


<message name="QuoteUnitPriceHttpPostOut">


<part name="Body" element="s0:float" />


</message>


<portType name="cpqQuoteSoap">


<operation name="QuoteUnitPrice">


<input message="s0:QuoteUnitPriceSoapIn" />


<output message="s0:QuoteUnitPriceSoapOut" />


</operation>


</portType>

Microsoft
.NET Web Services Solutions

32


168Z
-
0202A
-
WWEN


<portType name="cpqQuoteHttpGet">


<operation name="QuoteUnitPrice">


<input message="s0:QuoteUnitPriceHttpGetIn"

/>


<output message="s0:QuoteUnitPriceHttpGetOut" />


</operation>


</portType>


<portType name="cpqQuoteHttpPost">


<operation name="QuoteUnitPrice">


<input message="s0:QuoteUnitPriceHttpPostIn" />


<output message="s0:QuoteUnitPr
iceHttpPostOut" />


</operation>


</portType>


<binding name="cpqQuoteSoap" type="s0:cpqQuoteSoap">


<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document" />


<operation name="QuoteUnitPrice">


<soap:operation soap
Action="http://tempuri.org/QuoteUnitPrice"
style="document" />


<input>


<soap:body use="literal" />


</input>


<output>


<soap:body use="literal" />


</output>


</operation>


</binding>


<binding name="cpqQuoteHttpGe
t" type="s0:cpqQuoteHttpGet">


<http:binding verb="GET" />


<operation name="QuoteUnitPrice">


<http:operation location="/QuoteUnitPrice" />


<input>


<http:urlEncoded />


</input>


<output>


<mime:mimeXml part="Body
" />


</output>


</operation>


</binding>


<binding name="cpqQuoteHttpPost" type="s0:cpqQuoteHttpPost">


<http:binding verb="POST" />


<operation name="QuoteUnitPrice">


<http:operation location="/QuoteUnitPrice" />


<input>



<mime:content type="application/x
-
www
-
form
-
urlencoded" />


</input>


<output>


<mime:mimeXml part="Body" />


</output>


</operation>


</binding>


<service name="cpqQuote">


<port name="cpqQuoteSoap" binding="s0:cpqQuoteSoap
">


<soap:address location="http://localhost/BogusCompaq/cpqQuote.asmx" />


</port>


<port name="cpqQuoteHttpGet" binding="s0:cpqQuoteHttpGet">


<http:address location="http://localhost/BogusCompaq/cpqQuote.asmx" />


</port>


<port na
me="cpqQuoteHttpPost" binding="s0:cpqQuoteHttpPost">


<http:address location="http://localhost/BogusCompaq/cpqQuote.asmx" />


</port>


</service>

</definitions>

Microsoft
.NET Web Services Solutions

33


168Z
-
0202A
-
WWEN

Sample SOAP Request


POST /BogusCompaq/cpqQuote.asmx HTTP/1.1

Host: localhost

Content
-
Type: text/xml; charset=utf
-
8

Content
-
Length: length

SOAPAction: "http://tempuri.org/QuoteUnitPrice"


<?xml version="1.0" encoding="utf
-
8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema
-
instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/en
velope/">


<soap:Body>


<QuoteUnitPrice xmlns="http://tempuri.org/">


<ProductName>string</ProductName>


</QuoteUnitPrice>


</soap:Body>

</soap:Envelope>



Sample SOAP Response


HTTP/1.1 200 OK

Con
tent
-
Type: text/xml; charset=utf
-
8

Content
-
Length: length


<?xml version="1.0" encoding="utf
-
8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema
-
instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/
en
velope/">


<soap:Body>


<QuoteUnitPriceResponse xmlns="http://tempuri.org/">


<QuoteUnitPriceResult>float</QuoteUnitPriceResult>


</QuoteUnitPriceResponse>


</soap:Body>

</soap:Envelope>


Sample Web Services Source Code


<WebMethod()> Public

Function QuoteUnitPrice(ByVal ProductName As String) As
Single


Return GetPrice(ProductName)


End Function



Private Function GetPrice(ByVal ProductName As String) As Single


Dim cpqConnection As SqlConnection


Dim cpqCommand As

SqlCommand


Dim cpqReader As SqlDataReader


Dim cpqSQL As String


Dim ConnectString As String


Dim cpqResult As Single




cpqResult =
-
1


ConnectString = "server=localhost;uid=sa;pwd=;database=BogusCompaq"


Microsoft
.NET Web Services Solutions

34


168Z
-
0202A
-
WWEN



cpqSQL = "SELECT * FROM cpqProduct WHERE (cpqProductName='" +
ProductName + "')"



cpqConnection = New SqlConnection(ConnectString)


cpqConnection.Open()


cpqCommand = New SqlCommand(cpqSQL, cpqConnection)


cpqReader = cpqComm
and.ExecuteReader()



While (cpqReader.Read)


cpqResult = cpqReader("cpqUnitPrice")


End While



Return cpqResult


End Function


Microsoft
.NET Web Services Solutions

35


168Z
-
0202A
-
WWEN

APPENDIX C
-

System Software

System Software for Enterprise Deployments

The following subse
ctions provide useful links, arranged by DISA layer.

Web Servers



Microsoft Windows 2000 Server products. See
http://www.microsoft.com/windows2000/server/default.asp

and
http://www.compaq.com/ActiveAnswers/

for further information on Windows 2000.



Microsoft Windows 2000 Service Pack 2. Windows 2000 Service Pack 2 is available at
http://www.microsoft.com/windows2000/downloads/servicepacks/sp2/default.asp
.



Compaq Support Paq. See
http://www.compaq.com/support/

for further information on
Compaq So
ftPaq support software. The Compaq Support Paq is a collection of Compaq
SoftPaqs that provides support software for Compaq
ProLiant

server deployments.



Microsoft SQL Server 2000, Enterprise Edition, Client Utilities only. See
http://www.microsoft.com/sql/default.asp

for further information.



Microsoft MDAC (most current version). See
http://www.microsoft.com/data/

for further
information.

Application Se
rvers



Microsoft Windows 2000 Advanced Server. See
http://www.microsoft.com/windows2000/server/default.asp

and
http://www.compaq.co
m/ActiveAnswers/

for further information on Windows 2000 Server
and Advanced Server.



Microsoft Windows 2000 Service Pack 2. Windows 2000 Service Pack 2 is available at
http://www.microsoft.com/windows2000/downloads/servicepacks/sp2/default.asp
.



Compaq Support Paq. See
http://www.compaq.com/support/

for further information on
Compaq SoftPaq support software. The Compaq

Support Paq is a collection of Compaq
SoftPaqs that provides support software for Compaq
ProLiant

server deployments.



Microsoft SQL Server 2000, Enterprise Edition, Client Utilities only. See
http:/
/www.microsoft.com/sql/default.asp

for further information.



Microsoft MDAC (most current version). See
http://www.microsoft.com/data/

for further
information.



Microsoft Visio 2000, Standard Edition. See
http://www.microsoft.com/office/visio/

for
further information.



Microsoft BizTalk Server 2000, Enterprise Edition. See
http://www.microsoft.com/biztalk/

and
http://www.compaq.com/ActiveAnswers/

for further information.



Microsoft BizTalk Server 2000 Service Pack 1. This is available at
http://www.microsoft.com/biztalk/downloads/updates/2000/SP1.asp
.


Microsoft
.NET Web Services Solutions

36


168Z
-
0202A
-
WWEN

Data Resources Server

MSMQ Cluster



Microsoft Windows 2000 Advanced Server. See
http://www.microsoft.com/wi
ndows2000/server/default.asp

and
http://www.compaq.com/ActiveAnswers/

for further information on Windows 2000 Server
and Advanced Server.



MSMQ must be installed from the Windows 2000 Advanced Server in
stallation media. See
http://www.microsoft.com/msmq/
.



Microsoft Windows 2000 Service Pack 2. Windows 2000 Service Pack 2 is available at
http://www.microsoft.com/windows2000/downloads/servicepacks/sp2/default.asp
.



Compaq Support Paq. See
http://www.compaq.com/support/

for further information on
Compaq SoftPaq support sof
tware. The Compaq Support Paq is a collection of Compaq
SoftPaqs that provides support software for Compaq
ProLiant

server deployments.

Database Cluster



Microsoft Windows 2000 Advanced Server. See
http://www.microsoft.com/windows2000/server/default.asp

and
http://www.compaq.com/ActiveAnswers/

for further information on Windows 2000 Server
and Advanced Server.



Microsoft Windows 2000
Service Pack 2. Windows 2000 Service Pack 2 is available at
http://www.microsoft.com/windows2000/downloads/servicepacks/sp2/default.asp
.



Compaq Support Paq. See
http://www.compaq.com/support/

for further information on
Compaq SoftPaq support software. The Compaq Support Paq is a collection of Compaq
SoftPaqs that provides support software for Compaq
ProLiant

server dep
loyments.



Microsoft SQL Server 2000, Enterprise Edition, Database engine. See
http://www.microsoft.com/sql/default.asp

for further information.



Microsoft MDAC (most current version). See
http://www.microsoft.com/data/

for further
information.


Microsoft
.NET Web Services Solutions

37


168Z
-
0202A
-
WWEN

APPENDIX D


References

The following are recommendations helpful for the person interested in implementing Web
Services. Summaries of articles, where they are p
rovided below, are identified in quotation marks
and are taken directly from the referenced article or website. Authors of articles are included
below only when identified by the publishing website. Connect to each Web page using the
provided links for mor
e information on the sources of this information.

A Platform for Web Services


Mary Kirtland
-

January 2001

“Summary: This article presents an overview on the Web
Services model for building
applications. It includes a discussion on the definition of Web Services; the generic architecture
of a Web Service and how it relates to Microsoft Windows DNA and .NET; platform
requirements; and some of the tools and technolog
ies provided by Microsoft to implement and
deploy Web Services
.


Web Services Essentials


Summary: This document provides an overview of individual a
rticles on Web Servi
ces
.”

HOW TO: Use Data in Web Services

“Summary: This article shows how Datasets, an XML
-
based way to represent disconnected data,
can be returned

from a Web service method. By exposing Datasets through a service, you can
limit the database connections that your data server is experiencing.”

HOW TO: Write a Simpl
e Web Service

“Summary: This article describes how to write a simple Web service, called MathService, that
exposes methods for adding, subtracting, dividing, and multiplying two numbers.”

Designing the Contract


By Scott Seely

C#: A Message Queuing Application

By Carl Nolan

“Summary:

This article outlines a Windows se
rvice solution designed to process several message
queues, focusing on the application of the Microsoft .NET Framework and C#.”

Message Queuing: A Scalable, Highly Available Load
-
Balancing Solution

By Christopher Baldwin, Carl Nolan

Exposing Existing Code as a Web Service Using the .NET Framework

Building Distributed Applications with .NET

By Steve Kirk and Priya Dhawan

“Summary: This article covers data transformations made to expose existing Microsoft Visual
Basic 6.0 code as a Web Service using ASP.NET. It applies to Beta 2 of the Microsoft .NET SDK
and Microsoft Visual Studio .NET.”

Introducing the UDDI Software Development Kit

December 2000

Microsoft
.NET Web Services Solutions

38


168Z
-
0202A
-
WWEN

“Summary: This paper introduces the Microsoft UDDI SDK for interacting with the UDDI
Business Registry.”

.NET Framework Essentials


“.NET Framework Essentials is a concise and technical overview of the new Microsoft .NET
Framework. Covered here are all of the most important topics: from the u
nderlying Common
Language Run
-
Time (CLR) to its specialized packages for ASP.NET, Web Forms, Windows
Forms, XML and data access (ADO.NET). The authors survey each of the major .NET
languages, including VB.NET, C# and Managed C++.” [Source: O'Reilly & Asso
ciates]

.NET Framework SDK

Building Client Interfaces for .NET We
b Services


“Learn how to create clients to consume them and learn about the importance of proxy objects
and how to create a Web browser, Windows console, and Wireless Access Protocol (WAP)
clients using Microsoft Visual Studio .NET.” [Source: internet.co
m]

Applying .NET to Web Services


“O'Reilly writer Brian Jepson introduces and discusses the .NET Framework in this Web
Techniques article. Microsoft's .NET represents a fresh approach t
o Web development and
provides a rapid application development (RAD) approach to creating Web services.” [Source:
O'Reilly and Associates]

Monitoring in .NET Dist
ributed Application Design



Summary:
Windows Management Instrumentation (WMI) is the preferred monitoring
technology on the Windows platform. This article provides an intro to WMI and discusses the
monitoring process in the context of .NET applications.”

Accessing Message Queues


“Summary: This article describes how to use System.Messaging classes in the Microsoft .NET
Framework to read and write to MSMQ queue
s. The information discussed in this article applies
to Beta 2 of the .NET Framework and Microsoft Visual Studio .NET.”

C#: A Message Queuing Service Application


“Summary: This article outlines a Windows service solution designed to process several message
queues, focusing on the application of the Microsoft .NET Framework and C#.”

A Sneak Peek at New Services from Cold Rooster Consulting


ColdStorage Sample Overview

“The ColdStorage sample was created by the MSDN Arch
itectural Samples Team as an
educational tool. The main goal of the sample is to show how a company might develop both a
set of XML Web services to store data as well as a rich
-
client application that would consume the
Web services.”

ColdStorage Service Design Overview


Summary:
This article describes the application architecture of the XML Web services included
in the ColdStorage sample service.”

ColdStorage Sample Development Overview


Summary:
This article provides an overview of the development of the components included
with the ColdStorage sample, includi
ng two Web services and a rich client application.”

Microsoft
.NET Web Services Solutions

39


168Z
-
0202A
-
WWEN

Microsoft XLANG



Automation of business processes based on Web services requires a notation for the
specification of message

exchange behavior among participating Web services. This document
specifies such a notation. We call it XLANG. XLANG is expected to serve as the basis for
automated protocol engines that can track the state of process instances and help enforce protocol
c
orrectness in message flows.”

Web Services Resources

Web Services Primer


“A review of the emerging XML
-
based Web services platform, examining the core components
of SOAP, WSDL and UDDI
.” [
XML.com
]

MSDN Web Services

(
http://msdn.microsoft.com/webservices/
)

.NET 247 (http://www.dotnet247.com)

WebServices.org


“The vendor
-
neutral Web services portal
-

SOAP,UDDI,.NET,ONE,ebXML...”

Web Services Architect

(
http://www.webservicesarchitect.com/
)

WSDL / SOAP Web Services Search Engine:
SalCentral

(
http://www.salcentral.com/
)

“The

world's largest brokerage for schemas, reviews and quality assurance information on Web
Services. Provides a Web Services search engine.”

XMethods

(
http://www.xmethods.com/
)

Xmethods is a site dedicated to promoting the development, deployment, and use of Web
Services, offers (amongst other things) a directory of Web Services and a discussion forum.
XMethods provides examples of SOAP
-
based Web services, as well as XML info
rmation,
tutorials and tools.

XMLBus.com

(
http://www.xmlbus.com/
)

XMLBus.com is a resource for people who are interested in Web Services and want to learn more
about Web Servic
es technology. XMLBus.com provides online tools to Browse UDDI and to
dynamically test Web Services running on XMLBus.com or elsewhere on the Internet.

developer.*
-

http://www.developerdotstar.com/
index.htm


DevX


http://www.devx.com/

-

multi
-
technology site including items licensed from Fawcette
Publishing

O'Reilly Network .NET DevCenter:
http://www.oreillynet
.com/dotnet/


O'Reilly Network Web Services DevCenter:
http://www.oreillynet.com/webservices/


Web Services Journal


(
http:
//www.sys
-
con.com/webservices/
)

.NET Hosting
-

http://www.brinkster.com/


Flamenco Networks


Web Services Network
-

http://www.flamenconetworks.com/


IBM Webservices Developer Works

(
http://www.ibm.com/developer/webservices/
)

IBM
Web Services Toolkit

IBM Webservices Development Kit


Microsoft
.NET Web Services Solutions

40


168Z
-
0202A
-
WWEN

UDDI

Microsoft UDDI

(
http://uddi.microsoft.com/
)

Microsoft's

UDDI directory, with information about UDDI (and registering for UDDI).

Microsoft UDDI Directory

(
http://uddi.microsoft.com/visualstudio
)

Quer
y the UDDI Business Registry to find companies and production Web Services.

Test Microsoft UDDI Directory
(
http://test.uddi.microsoft.c
om/visualstudio
)

Locate test Web Services to use during development.

Microsoft UDDI SDK

(
http://www.microsoft.com/downloads/release.asp?ReleaseID=30880
)


T
he SDK includes both a .NET class library and a Visual Studio 6.0 library that optimize
interaction with UDDI. It also includes the UDDI Developer Edition, a light
-
weight UDDI
registry

built on the .NET Framework. Now developers can build and test solutions that interact
with a UDDI registry hosted locally.”

Microsoft UDDI Technical Overview

(
http://uddi.microsoft.com/developer/tech_white_paper.doc
)

“Universal Discovery Description and Integration is a specification for distributed Web
-
based
information registries of Web Services…. This pap
er describes the capabilities that these
registries add to the World Wide Web.”

Using WSDL in a UDDI Registry 1.05


“The Web Services Description Language (WSDL) is a gene
ral purpose XML language for
describing the interface, protocol bindings and the deployment details of network services.
WSDL complements the UDDI standard by providing a uniform way of describing the abstract
interface and protocol bindings of arbitrary n
etwork services. The purpose of this document is to
clarify the relationship between the two, describe how WSDL can be used to help create UDDI
business service descriptions.”

SOAP

SOAP 1.1 Specification


World W
ide Web Consortium note describing and specifying the SOAP 1.1 protocol.

SOAP and .NET


O'Reilly Java author Jim Farley continues his commentary on all things .NET by looking at
what's cool and no
t so cool about SOAP.

Microsoft SOAP Toolkit 2.0 SP2

A Busy Developer's Guide to SOAP 1.1

(
http://www.soapware.org/bdg
)

By Dave Winer, Jake Savin, UserLand Software, 4/2/01.

XML Today
-

http://www.xmltoday.com/

XSLT / XML / C#


(
http://www.dotnet247.com/247reference/articles/0/57.aspx
)

“In this article the author shows how to apply XSLT to data coming from a database in XML
format
.”

Microsoft
.NET Web Services Solutions

41


168Z
-
0202A
-
WWEN

WSDL

WSDL 1.0

(
http://www
-
4.ibm.com/software/developer/library/w
-
wsdl.html
)

Web Services Descriptio
n Language version 1.0 specification from the IBM DeveloperWorks
site.

WSDL 1.1

(
http://www.w3.org/TR/wsdl
)

Web Services Description Language

Web Services Description Language (WSDL) Explained


“It has been argued that SOAP does not really need an interface description language to go with
it. If SOAP is a stan
dard for communicating pure content, then it needs a language for describing
that content. SOAP messages do carry type information, and so SOAP allows for dynamic
determination of type. But I cannot call a function correctly unless I know its name and the
number of parameters and the types of each. Without WSDL, I can determine the calling syntax
from documentation that must be provided, or by examining wire messages. Either way, a human
will have to be involved, and so the process is prone to error. With W
SDL, I can automate the
generation of proxies for Web services in a truly language
-

and platform
-
independent way.”

Web Services Description Lang
uage (WSDL) Explained


“Using WSDL, users can automate the generation of proxies for Web services in a truly
language
-

and platform
-
independent way.”

Open Source .NET

.NETUnit


.NETUnit is an imp
lementation of Kent Beck and Erich Gamma's XUnit testing framework

(
http://www.xprogramming.com/software.htm
).


CSUnit


A .NET regression test
ing framework inspired by JUnit (
www.junit.org
).


Dot GNU (.GNU)


The DotGNU Project is really a meta
-
project that will consist of between ten and twenty
subprojects.

The main components of DotGNU are the DotGNU Platform and the DotGNU
Virtual Identities system. DotGNU will be a complete replacement for the .NET strategy
-

it will
not be a Free Software implementation of .NET.

.Net OpenSource


A collection of application building blocks built on top of .NET.

DotNetPCF


A compound file implementation for .NET.

Java.NE
T


Halcyon Software's Java.NET project lets developers either migrate their ASP or Visual Basic
code to JSP or Java, respectively, or to deploy applications on Java
-
based infrastructures.



Microsoft
.NET Web Services Solutions

42


168Z
-
0202A
-
WWEN


Mono


Ximian's Mono proj
ect is an effort to create a free software (sometimes called open source)
implementation of the .NET Development Framework. It will include code and tools that will
enable the .NET Framework (i.e, ASP, ADO, FCL, etc.) to work with Linux and other OS.

NAnt



NAnt is a .NET based build tool. In theory it is kind of like make without make's wrinkles. In
practice it's a lot like Ant.” (
http://jakarta.apache.org/ant/
).”

Nareau Project


Nareau developers do not see the need to create an entire new framework, as is being done by
both Mono and DotGNU. Instead, Nareau plans to make use of the many tools and protocols that
already exi
st. Thus, the project will be built on top of Web services components like: Server
software: Apache, parts of Zope, Jabber, Jakarta Client software: Mozilla, Komodo Protocols:
SOAP, and Kerberos.

NUnit


NUnit i
s a .NET port of Kent Beck and Erich Gamma's JUnit (www.junit.org). NUnit is a
framework for writing repeatable tests in any .NET language.

OpenSMTP.NET


An SMTP component written in C#.

Perl.NET



Perl for .NET Research is the result of a research project, creating a native code compiler for
Perl to the Microsoft .NET Framework. The status of this compiler is experimental;
it also
supports just a subset of the language.”

Portable.NET


A portable .NET implementation.
It will include tools, compilers, and runtime support. For
portability, the runtime will use a
n interpreter instead of a JIT.

Python.NET



Python for .NET Research is currently an exploratory implementation of the Python language
for the .NET Framework. The archive includes ge
neral documentation on the project itself,
documentation and complete source code.”

Sharp Egg


An IRC bot written in C#.

SharpDevelop


A lig
htweight IDE for C#, ASP.NET, ADO.NET, XML, and HTML. It includes a class browser
and syntax highlighting.

X Marks the DOT


A collection of XML
-
related projects written in C#.

Microsoft
.NET Web Services Solutions

43


168Z
-
0202A
-
WWEN

APPENDIX E
-

Glossary


XML

An ini
tiative from the W3C defining an "extremely simple" dialect of SGML suitable for use on the
World
-
Wide Web.

http://www.w3.org/TR/REC
-
xml.html


SGML

Standard Generalized Markup Language (SGML). A generic m
arkup language for representing
documents. SGML is an International Standard that describes the relationship between a
document's content and its structure. SGML allows document
-
based information to be shared and
re
-
used across applications and computer pl
atforms in an open, vendor
-
neutral format. SGML is
sometimes compared to SQL, in that it enables companies to structure information in documents in
an open fashion, so that it can be accessed or re
-
used by any SGML
-
aware application across
multiple platfor
ms.

http://www
-
tei.uic.edu/orgs/tei/sgml/teip3sg/index.html


XSL

XSL is a language for expressing style sheets. An XSL style sheet is, like CSS, a file that describes
how to display

an XML document of a given type. XSL shares the functionality of and is compatible
with CSS2 (although it uses a different syntax).

The Extensible Stylesheet Language (XSL)

CSS

“Cascading Style Sheets (CSS) i
s a simple mechanism for adding style (e.g. fonts, colors, spacing)
to Web documents.”

Cascading Style Sheets

ebXML

Electronic Business Extensible Markup Language (ebXML) is an initiative to provide an XML
-
bas
ed
open technical framework to enable XML to be utilized in a consistent and uniform manner for the
exchange of electronic business (eb) data in application
-
to
-
application, application
-
to
-
human, and
human
-
to
-
application environments


thus creating a singl
e global electronic market.

http://www.ebxml.org/specdrafts/ebXML_TA_v1.0.4.pdf


SOAP
-

Simple
Object Access
Protocol

Simple Object Access Protocol (SOAP) is a lightweight protocol for e
xchange of information in a
decentralized, distributed environment. It is an XML based protocol that consists of four parts: an
envelope that defines a framework for describing what is in a message and how to process it, a set
of encoding rules for express
ing instances of application
-
defined data types, a convention for
representing remote procedure calls and responses, and a binding convention for exchanging
messages using an underlying protocol.

DCOM

Short for Distributed Component Object Model
,

an exte
nsion of the Component Object Model
(COM) to support objects distributed across a network.

http://www.microsoft.com/Com/resources/comdocs.asp


HTTP

Short for HyperText
T
ransfer
Protocol, the underlying protocol used by the World Wide Web. HTTP
defines how messages are formatted and transmitted, and what actions Web servers and browsers
should take in response to various commands.

UDDI

Universal Description, Discovery and Integr
ation (UDDI) creates a platform
-
independent, open
framework for describing services, discovering businesses, and integrating business services using
the Internet, as well as an operational registry that is available today.

www.uddi.org


http://msdn.microsoft.com/library/default.asp?url=/library/en
-
us/dnuddi/html/progguide.asp


Internet

Inter
-
ORB
Protocol (IIOP)

I
nternet Inter
-
ORB Protocol
,

a protocol developed by the Object Management Groupto implement
CORBA solutions over the World Wide Web. IIOP enables browsers and servers to exchange
integers, arrays, and more complex objects, unlike HTTP, which only supports
transmission of text.

RPC

Remote Procedure Call is a protocol that allows a program running on one host to cause code to
be executed on another host without the programmer needing to explicitly code for this. RPC is an
easy and popular paradigm for imple
menting the client
-
server model of distributed computing. An
RPC is initiated by the caller (client) sending a request message to a remote system (the server) to
execute a certain procedure using arguments supplied. A result message is returned to the call
er.
There are many variations and subtleties in various implementations, resulting in a variety of
different (incompatible) RPC protocols.

http://www.ja.net/documents/NetworkNews/Issu
e44/RPC.html


Microsoft
.NET Web Services Solutions

44


168Z
-
0202A
-
WWEN

WSDL

Web Services Description Language WSDL is an XML format for describing network services as a
set of endpoints operating on messages containing either document
-
oriented or procedure
-
oriented
information. The operations and messages are
described abstractly, and then bound to a concrete
network protocol and message format to define an endpoint. Related concrete endpoints are
combined into abstract endpoints (services). WSDL is extensible to allow description of endpoints
and their message
s regardless of what message formats or network protocols are used to
communicate; however, the only bindings described in this document describe how to use WSDL in
conjunction with SOAP 1.1, HTTP GET/POST, and MIME.

CXML

(Commerce XML) is a set of docum
ent type definitions (DTD) for the XML specification. cXML
works as a meta
-
language that defines necessary information about a product. It will be used to
standardize the exchange of catalog content and to define request/response processes for secure
elect
ronic transactions over the Internet. The processes include purchase orders, change orders,
acknowledgments, status updates, ship notifications and payment transactions.

http://www.cxml.org/home/


ADO+

“ADO+ is t
he . . .set of data access services for the .NET Framework. ADO+ is a natural evolution
of ADO, built around n
-
tier development and architected with XML at its core.”

Welcome to the MSDN Library