How to host WCF services in ASP.NET

Download Report

Transcript How to host WCF services 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
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.
ASP.NET Web Services supports only HTTP binding.
WCF supports Atomic Transactions*.
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
.NET
Remoting
Interop
with other
platforms
Extensibility
Location
transparency
AttributeBased
Programming
Enterprise
Services
WS-*
Protocol
Support
WSE
MessageOriented
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
Service
Endpoint
Endpoint
Message
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
A
B
C
Service
How does it work?
Behaviours and Metadata
Metadata
Client
Service
Bv
Bv
C
Proxy
B
A
Message
A
B
C
Bv
A
B
C
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
Implement
Service
Client
Generate
Proxy
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
Purpose
Basic Profile 1.1 Interop and Intergration w/ASMX
WsHttpBinding
Basis for WS-* interop
Supports WS-Security, WS-RM, WS-Tx
NetTcpBinding
.NET.NET across processes
Secure, reliable duplexed
NetNamePipesBinding
.NET.NET across processes
Secure, reliable duplexed
NetMSMQBinding
.NET.NET via MSMQ
NetPeerTcpBinding
.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,
(System.ServiceModel)
Can share state
HTTP Runtime
(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
IIS
ASP.NET
WCF
Protocol Channels
HTTP Transport
WCF HttpModule
(grabs *.svc)
Other HttpModule
Other HttpModule
Other HttpModule
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