How to host WCF services in ASP.NET

advertisement

Agenda

What Is the Windows Communication

Foundation?

How Does It Work?

How Do I Use and Deploy It?

Bindings

Addresses

Contracts

How to host WCF services in ASP.NET

How WCF works inside of ASP.NET

WCF is

Our next-generation platform for distributed systems

A set of extensions to the Microsoft.NET Framework

2.0

Build WCF services in Visual Studiousing any .NET

Language

Intelligent code editing, IDE Extensions for WCF, debugging, re-factoring, code snippets, etc.

Visual Basic .NET, Visual C#, etc.

Runs on

Microsoft Windows Vista

Microsoft Windows XP

Microsoft Windows Server 2003

.NET at the core

The Unified Framework For Rapidly Building

Service-Oriented Applications

WCF combines the functionality from ASP.NET

Web Services , .NET Remoting, Message Queuing and

Enterprise Services.

Windows Communication Foundation (WCF) ASP.NET Web Service

WCF supports multiple bindings HTTP, WSHTTP, TCP, MSMQ.

WCF supports Atomic Transactions*.

ASP.NET Web Services supports only HTTP binding.

ASP.NET Web Services does not support Atomic Transactions*.

By default WCF uses SOAP for sending and receiving the messages. But WCF can support any kind of message format not only SOAP.

ASP.NET Web Services can send and receive messages via the SOAP only.

The System.Runtime.Serialization.DataContract and

System.Runtime.Serialization.DataMember attributes of the WCF's

System.Runtime.Serialization assembly can be added for .NET types to indicate that instances of the type are to be serialized into XML, and which particular fields or properties of the type are to be serialized.

ASP.NET Web Services uses XmlSerializer to translate the XML data (Message

Send or received) into .NET objects.

Windows Communication Foundation

• Unifies today’s distributed technologies

• Lets you develop/deploy/manage one model

• Visual Studio.NET integration

• Broad support for Web services

(WS-*) specifications

• Compatible with existing Microsoftdistributed application technologies

• Enables development of loosely-coupled services

• Config-based communication

Unified Programming Model

ASMX

Interop with other platforms

Attribute-

Based

Programming

Enterprise

Services

WS-*

Protocol

Support

WSE

.NET

Remoting

Extensibility

Location transparency

Message-

Oriented

Programming

System.Messaging

Agenda

What Is the Windows Communication

Foundation?

How Does It Work?

How Do I Use and Deploy It?

Bindings

Addresses

Contracts

How to host WCF services in ASP.NET

How WCF works inside of ASP.NET

How does it work?

Endpoints

Client

Endpoint Message

Service

Endpoint

Endpoint

How does it work?

Address, Binding, Contract

Endpoints - All communications with the WCF service will happen via the endpoints.

The endpoint is composed of 3 parts (collectively called as ABC's of endpoint) as defines below:

Address: The endpoints specify a Address that defines where the endpoint is hosted.

Contract: The endpoints specify a Contract that defines which methods of the Service class will be accessible via the endpoint; each endpoint may expose a different set of methods.

Binding: The endpoints also define a binding that specifies how a client will communicate with the service and the address where the endpoint is hosted.Various

components of the WCF are depicted in the figure below.

Client

C B A Message

A B C Service

A B C

How does it work?

Behaviours and Metadata

Metadata

Bv

Bv

Client

C B A

Proxy

Message

A B C

A B C

Service

Bv

Bv

ServiceHost()

Agenda

What Is the Windows Communication

Foundation?

How Does It Work?

How Do I Use and Deploy It?

Bindings

Addresses

Contracts

How to host WCF services in ASP.NET

How WCF works inside of ASP.NET

How do I use it?

Service

Define

Contract

Client

Generate

Proxy

Implement

Service

Pick

Endpoint

Define

Endpoints

Host

Service

How do I deploy it?

Web Host within IIS:

Self-Host within any .NET process:

• Available for any service

• Console apps, windowed apps, .NET NT Services …

Building a simple service and client

Agenda

What Is the Windows Communication

Foundation?

How Does It Work?

How Do I Use and Deploy It?

Bindings

Addresses

Contracts

How to host WCF services in ASP.NET

How WCF works inside of ASP.NET

All About Bindings

You can choose a pre-defined binding:

<endpoint name=“MyService” address=“MyAddress” binding=“netTcpBinding” contract=“IMyInterface”

/>

Binding

BasicHttpBinding

WsHttpBinding

NetTcpBinding

NetNamePipesBinding

NetMSMQBinding

NetPeerTcpBinding

Purpose

Basic Profile 1.1 Interop and Intergration w/ASMX

Basis for WS-* interop

Supports WS-Security, WS-RM, WS-Tx

.NET

 .NET across processes

Secure, reliable duplexed

.NET

 .NET across processes

Secure, reliable duplexed

.NET

 .NET via MSMQ

.NET Peer  Peer

All About Bindings

You can customize a pre-defined binding:

<services>

<service name=“MyService”>

<endpoint address=“MyAddress” binding=“wsHttpBinding” bindingConfiguration=“MyReliableBinding” contract=“IMyInterface” />

<service/>

</services>

<bindings>

<wsHttpBinding>

<binding name=“MyReliableBinding”>

<reliableSession enabled=“true” ordered=“true”

</binding>

</wsHttpBinding>

</bindings>

All About Bindings

You can define custom bindings:

<services>

<service name=“MyService”>

<endpoint address=“MyAddress” binding=“wsHttpBinding” bindingConfiguration=“MyReliableBinding” contract=“IMyInterface” />

<service/>

</services>

<bindings>

<wsHttpBinding>

<binding name=“MyReliableBinding”>

<reliableSession enabled=“true” ordered=“true”

</binding>

</wsHttpBinding>

</bindings>

Agenda

What Is the Windows Communication

Foundation?

How Does It Work?

How Do I Use and Deploy It?

Bindings

Addresses

Contracts

How to host WCF services in ASP.NET

How WCF works inside of ASP.NET

All about Addresses

An endpoint address is relative to a base address:

<services>

<host>

<baseAddresses>

<add baseAddress="http://localhost:8000/MyBaseAddress"/>

</baseAddresses>

</host>

<service name=“MyService”>

<endpoint address=“MyEndpointAddress” binding=“wsHttpBinding” bindingConfiguration=“MyReliableBinding” contract=“IMyInterface” />

<service/>

</services>

For a Web-Hosted service, the base address is that of its virtual directory

Agenda

What Is the Windows Communication

Foundation?

How Does It Work?

How Do I Use and Deploy It?

Bindings

Addresses

Contracts

How to host WCF services in ASP.NET

How WCF works inside of ASP.NET

All About Contracts

Service Contract: Describes the operations a service can perform. Maps CLR types to WSDL.

Data Contract: Describes a data structure.

Maps CLR types to XSD.

Message Contract: Defines the structure of the message on the wire. Maps CLR types to

SOAP messages.

Agenda

What Is the Windows Communication

Foundation?

How Does It Work?

How Do I Use and Deploy It?

Bindings

Addresses

Contracts

How to host WCF services in ASP.NET

How WCF works inside of ASP.NET

Hosting Services in ASP.NET

Write your service as usual:

[ServiceContract]

[OperationContract] etc.

ServiceHost’s are represented as .svc files:

<% @ServiceHost Service=“HelloService” %>

Service attribute is a CLR type name

Matches <service name=“xxx”> from web.config

Where can I put my service code?

Anywhere you can put code in

ASP.NET:

Inline in the .svc file

In a .cs/.vb in App_Code

In a class library (.dll) located in \bin

WCF plays nicely with ASP.NET’s dynamic compilation system

Which project type should I use?

Services can be built in any project type

Web projects

Class Libraries

Class libraries have benefits

Decouples implementation from hosting environment

Can test services in other hosts (e.g. console apps) during development

However, WCF doesn’t care which project type you use…use what makes sense for you

Hosting WCF in ASP.NET

Agenda

What Is the Windows Communication

Foundation?

How Does It Work?

How Do I Use and Deploy It?

Bindings

Addresses

Contracts

How to host WCF services in ASP.NET

How WCF works inside of ASP.NET

IIS Worker Process

(w3wp.exe)

ASP.NET

w3wp.exe

ASP.NET

Page Framework, UI, Controls,

HTTP Runtime

(System.Web, System.Web.UI)

ASP.NET Managed Hosting Layer

(System.Web.Hosting, System.Web.Compilation) w3wp.exe

ASP.NET

WCF Service Model

Page Framework, UI, Controls,

HTTP Runtime

(System.ServiceModel)

(System.Web, System.Web.UI)

ASP.NET Managed Hosting Layer

(System.Web.Hosting, System.Web.Compilation) w3wp.exe

WCF and the HTTP Pipeline

Service Implementation

Dispatcher

Protocol Channels

HTTP Transport

WCF HttpModule

(grabs *.svc)

Process Host

HTTP

Request

HTTP

Response

Why the split?

Two technologies, different priorities

WCF: consistency across transports and hosting environments

ASP.NET: optimize for HTTP applications hosted in IIS

Becomes very important on IIS7/WAS

WAS == Windows Process Activation

Service

Implications

ASP.NET platform features still work for

ASP.NET

Forms auth

Session state

File/URL authorization

They just don’t apply to WCF by default

Summary

What Is the Windows Communication

Foundation?

How Does It Work?

How Do I Use and Deploy It?

Bindings

Addresses

Contracts

How to host WCF services in ASP.NET

How WCF works inside of ASP.NET

Download