SlideShare a Scribd company logo
Windows communication foundation
Polymorphism
Encapsulation
Subclassing
Message-based
Schema+Contract
Binding via Policy
1980s
2000s
Interface-based
Dynamic Loading
Runtime Metadata
1990s
Object-Oriented
Service-Oriented
Component-Based
SOA can be simply defined as an architectural
concept or style that uses a set of “loosely
coupled services” to achieve the desired
functionality.
 Boundaries are Explicit.
 Services are Autonomous
 Services share schema and contract, not class
 Service compatibility is determined based on
policy
 Services are secure
 Services leave the system in a consistent state
 Services are thread-safe
 Services are reliable
overview
 WCF is a programming model that enables
developers to build service solutions that are
reliable and secure, and even transacted.
 WCF simplifies development of unified,
simplified and manageable distributed
systems
ASMX
Interoperable
WSE
Interoperable
Secure
Remoting
Fast
Secure
‘Objects’
COM+
Fast
Secure
Transactions
MSMQ
Queued
Secure
Transactions
Interoperability across platforms
Service –oriented development
Unification of existing distributed technology
 Programming model type
1. You can use the object model programmatically.
2. You can use configuration files.
3. You can use declarative programming
(attributes).
 The order in which settings are applied is as
follows:
1. Attributes are applied.
2. The configuration is applied.
3. The code runs.
Client
SOAP Request
SOAP Response
Service
Metadata
Message (SOAP)
Headers: Addressing, Security, etc
Body: Payload
What do I send?
Where do I send it?
How should I send it?
Contract
Address
Binding ServiceClient
Endpoint Endpoint
a network address
indicates where the service
is located.
specifies how a client can
communicate with the
endpoint
identifies what operations
are available to the
clients
 WCF Service Library
◦ WCF Test Client
◦ WCF Configuration Editor
◦ Output is dll
◦ Has app.config file
 Website Project Template
◦ Has web.config
◦ Used over asp.net webservice
◦ Has a .svc file
 Address
 Binding
 Contract
 It contains information about what a service
does and the type of information it will make
available.
 There are three types of contracts:
 Data Contract
 Message Contract
 Service Contract
 Operation Contact
16
[ServiceContract]
public interface IHello
{
[OperationContract]
string Hello(string name);
}
public class HelloService : IHello
{
public string Hello(string name)
{
return “Hello, ” + name;
}
}
 The service contract expresses the “methods”
that are exposed to the outside world.
using System.ServiceModel;
namespace MyFirstWCF
{
[ServiceContract(Namespace =
"http://Ebusiness30/WCF")]
interface IService
{
[OperationContract]
Operation1( );
[OperationContract]
Operation2( );
}
}
class MyService :
IMyContract
{
public string
MyMethod( )
{
return "Hello WCF";
}
}
 Define the custom types that you will use as a
parameter or return in your operation
contract
[DataContract(Namespace=" Ebusiness30WCF")]
public class Customer
{
[DataMember(Name=“CustomerName")]
public string Name;
[DataMember(Name=“NID")]
public int id;
[DataMember(Name=“Type")]
private string type;
}
 use message contracts to control how
properties of your types map to the SOAP
headers and SOAP body
[MessageContract(Namespace=" Ebusiness30/WCF")]
public class Customer
{
[MessageBody(Name=“CustomerName")]
public string Name;
[MessageBody(Name=“NID")]
public int id;
[MessageHeader(Name=“Type")]
private string type;
}
WCF Fundamentals
 Http-Based Binding
◦ BasicHttpBinding-wsBinding-wsDualHttpBinding-
wsFederationHttpBinding-
 TCP-Based Binding
◦ netNamedPipeBinding-netPeerTcpBinding-
netTcpBinding
 MSMQ-Based Binding
◦ msmqIntegrationBinding-netMsmqBinding
 Bindings are the mechanism by which communication
details are specified to make connecting to a service’s WCF
endpoint possible
 A binding defines how you can communicate with the
service
 The binding controls the following:
◦ The transport (HTTP, MSMQ, Named Pipes, TCP)
◦ The channels (one-way, duplex, request-reply)
◦ The encoding (XML, binary,MTOM)
◦ The supported WS-* protocols (WS-Security, WS-Federation, WS-
reliability, WS-Transactions)
 Using bindings is a two-step process, as follows
◦ Select the binding from the predefined list of WCF bindings that
you will use for a particular endpoint.
◦ Create an endpoint that utilizes the binding that you have selected
or created.
Binding Name
Transport
Encoding
Interop
Security
Session
Transaction
Duplex
Streaming
BasicHttpBinding HTTP/S Text.MTOM BP 1.1 T X
WsHttpBinding HTTP/S Text.MTOM WS T | S X X X
WsDualHttpBinding HTTP/S Text.MTOM WS T | S X X X X
NetTcpBinding TCP Binary .NET T | S X X X X
NetNamedPipesBinding IPC Binary .NET T | S X X X X
NetMsmqBinding MSMQ Binary .NET T | S X
NetPeerTcpBinding P2P Binary .NET T | S X
MsmqIntegrationBinding MSMQ Binary MSMQ T X
T = Transport Security | S = WS-Security
 It specifies the communication details required to connect to the
endpoint.
ServiceClient
Message Message
Transactions
Security
Transport
Transactions
Security
Transport
Channels
Configuration
Configuration
Configuration
Transport Channel (HTTP, TCP, etc)
Configuration
WCF Fundamentals
An address basically declares “here I am” to the
outside world.
Example
http://localhost/myservice/
protocol domain Service path
 HTTP
◦ http://domain [:port]/path
 HTTPS
◦ https://domain[:port]/path
 TCP
◦ net.tcp://domain/path
 MSMQ
◦ net.msmq://domain/queue name
 Named pipe no port not cross-machine
◦ net.pipe://localhost/path
 IIS
◦ http://domain[:port]/virtual directory[.svc file]
 Base address
◦ enables you to host multiple endpoints under the same
base address
◦ [transport]://[host name][:optional port]/[optional path]
 Endpoint address
◦ Endpoint address is where the service is actually listening.
 Mex address
◦ Used to obtain metadata of the service
◦ [transport]://[host name][:optional port]/[optional path]
MyServiceMex
<host>
<baseAddresses>
<add
baseAddress="http://localhost:8080/QuickReturns"/>
<add
baseAddress="net.tcp://localhost/QuickReturns"/>
</baseAddresses>
</host>
<endpoint
name="BasicHttpBinding"
address="Exchange"
bindingsSectionName="BasicHttpBi
nding"
contract="IExchange" />
<endpoint
name="NetNamedPipeBinding"
address="Exchange"
bindingsSectionName="NetName
dPipeBinding"
contract="IExchange" />
This allows you to define the following endpoints:
 Custom .exe (self hosting )
 IIS
Windows Service
WCF Fundamentals
 IIS 6 (ASPNET_WP.EXE / W3wp.exe)
◦ Activation on demand upon client request.
◦ Only supports HTTP/S transport.
 Self Hosting
◦ Can be any managed application, i.e. Console or
WinForms application.
◦ Low-level but flexible.
 Windows Activation Service (WAS)
◦ Supports all transports.
◦ Will ship with IIS 7 on Vista and Longhorn Server.
 Managed Windows Services (NT Services)
33
class HelloHost
{
static void Main(string[] args)
{
ServiceHost host =
new ServiceHost(typeof(HelloService));
host.Open();
// Wait until done accepting connections
Console.ReadLine();
host.Close();
}
}
<%@ Service Language=“C#” Class=“HelloService” %>
http://localhost/HelloService/HelloService.svc
Self-host
WAS/IIS-host
34
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service type=“HelloService"
<endpoint address=“http://localhost/HelloService"
binding=“basicHttpBinding"
contract="IHello" />
</service>
</services>
</system.serviceModel>
</configuration>
 Create a service host
 Open the host to allow calls in
 Close the host to gracefully exit
◦ Calls in progress complete.
◦ Host refuse any further calls even if host process is still
running.
public static void Main ()
{
Uri baseAddress = new Uri ("http://localhost:8000");
using (ServiceHost serviceHost =
new ServiceHost (typeof(MyService), baseAddress))
{
serviceHost.Open ();
// The service can now be accessed.
Console.WriteLine ("Press <ENTER> to terminate service.");
Console.ReadLine ();
}
}
 Application hosting
◦ App.Config
<system.serviceModel>
<services>
<service name = "MyNamespace.MyService" >
<endpoint
address = "http://localhost:8000/MyService"
binding = "wsHttpBinding"
contract = "MyNamespace.IMyContract">
</endpoint>
</service>
</services>
</system.serviceModel>
Exposing Metadata
 Using svcutil.exe
 Using visual studio 2008
 Client uses a proxy to consume the service
 The proxy
◦ Is CLR interface and class representing the service.
◦ Provides the same operations as service.
◦ Has additional methods for managing the proxy and the
connection.
 Generate the proxy
◦ SvcUtil.exe <Base Address> [/out:<file>] [/config:<file>]
◦ When hosted in IIS/WAS
SvcUtil http://localhost/MyService/MyService.svc /out:Proxy.cs
◦ When self-hosting
SvcUtil http://localhost:8000/MyService/ /out:Proxy.cs
SvcUtil net.tcp://localhost:8001/ /out:Proxy.cs
SvcUtil net.pipe://localhost/MyPipe/ /out:Proxy.cs
◦ HTTP transport
Add Service Reference to the project in VS 2005
 Client Configuration
◦ Application: App.Config
<system.serviceModel>
<client>
<endpoint name="MyEndpoint"
address="http://localhost:8000/MyService"
binding="wsHttpBinding"
contract="MyNamespace.IMyContract" />
</client>
</system.serviceModel>
 Client needs to instantiate proxy object
◦ Provide the constructor with endpoint
◦ Endpoint section name from config file
 Use service methods
 Close proxy instance
using (MyContractProxy proxy = new MyContractProxy
("MyEndpoint") )
{
proxy.MyMethod ();
}
 No Proxy Client
◦ Work directly with channel
ChannelFactory<IMyContract> factory =
new ChannelFactory<IMyContract> ("MyEndpoint");
IMyContract channel = factory.CreateChannel();
channel.MyMethod ();
factory.Close ();
 Need to know the contract interface
upfront
Advanced topics
 in this section you will learn how
1. Handle exceptions in the client applications and
services
2. Specify the exception that a WCF can raise
3. Propagate information about exceptions form
service to client
4. Learn about services state
5. Recover service that has failed
6. Detect unrecognized messages sent to the service
by the client application
 Why SOAP fault and not CLR exception
◦ Simply , CLR exceptions are specific to the.NET
framework, java client application would not
understand the format of a CLR exception raised by
a WCF service
 So, Interoperable services built by using the
WCF should convert .NET Framework
exceptions into SOAP faults and follow the
SOAP specification for reporting these faults
to client applications.
WCF Service
WCF
runtime
Client
Throws FaultException
Object
Generate Soap fault
message
ServiceMthod{
Try{
service logic that may
generate an exception
}
catch(Exception e )
{
throw new
FaultException(
e.message,
new
FaultCode(“FaultName”)
}
Catching Client side
SeviceCall{
Try{
calling serviceMethod()
}
catch(FaultException e )
{
print e.code.name,
print e.Reason
}
 Strongly typed exception
◦ A SOAP fault message that contains a sufficient
detail about the exception in order to enable the
user, or an administrator, to understand the reason
for the exception and if possible take any necessary
corrective action.
◦ Use FaultContract attributes in a service contract
◦ Note you cannot use it with one way operations
WCF Fundamentals
 Configure the WCF service to send details
of Unanticipated exceptions
◦ Configuration file
 In the <serviceBehaviors> section of the App.config file add this tag in
the <behavior> section
 Setting the includeExceptionDetailInFaults attribute to true causes WCF
to transmit the full details of exceptions when it generates SOAP faults
for unanticipated errors.
◦ Programmatically
<serviceDebug includeExceptionDetailInFaults="true"/>
[ServiceBehavior(IncludeExceptionDetailInFaults=true)]
public class ServiceImpl : IService {}
 May I decide to make it a self study topic or
research that must be given in lab
 Or give them a hint about it
 Or decide to give it with no examples
 Or decide to give it with examples
 Summary if I didn’t give it I won’t be upset s
 when a ServiceHost object enters the Faulted state it triggers Faulted
event . You should subscribe to this event, and provide a method
that attempts to determine the cause, and then abort and restart the
service.// ServiceHost object for hosting a WCF service
ServiceHost HelloworldServiceHost;
HelloworldServiceHost = new ServiceHost(…);
// Subscribe to the Faulted event of the productsServiceHost object
HelloworldServiceHost.Faulted += new
EventHandler(faultHandler);
// FaultHandler method Runs when productsServiceHost enters the
Faulted state
void faultHandler(object sender, EventArgs e)
{
// Examine the properties of the HelloworldServiceHost
object
// and log the reasons for the fault
// Abort the service
HelloWorldServiceHost.Abort();
// Recreate the ServiceHost object
HelloWorldServiceHost = new ServiceHost(…);
// Start the service
HelloWorldServiceHost.Open();
 If a client application sends a message specifying an action that
the service does not recognize, the service host application
raises the UnknownMessageReceived event. The host application
can catch this event and record the unrecognized message, like
this// ServiceHost object for hosting a WCF service
ServiceHost HelloWorldServiceHost;
HelloWorldServiceHost = new ServiceHost(…);
// Subscribe to the UnknownMessageReceived event of the
HelloWorldServiceHost object
HelloWorldServiceHost.UnknownMessageReceived += new
EventHandler<UnknownMessageReceivedEventArgs>(unknownMessag
e);
// UnknownMessageReceived event handler
void unknownMessage(object sender,
UnknownMessageReceivedEventArgs e)
{
// Log the unknown message
// Display a message to the administrator
MessageBox.Show("A client attempted to send the message
" +
e.Message.Headers.Action);

More Related Content

What's hot (20)

PPT
Web Service Presentation
guest0df6b0
 
PPT
Soap Vs Rest
sreekveturi
 
PDF
Spring Web Services: SOAP vs. REST
Sam Brannen
 
PPTX
Ajax presentation
Bharat_Kumawat
 
PPTX
Windows Communication Foundation (WCF)
Betclic Everest Group Tech Team
 
PPT
Java Script ppt
Priya Goyal
 
PPT
DOT Net overview
chandrasekhardesireddi
 
PPT
Introduction to JavaScript (1).ppt
MuhammadRehan856177
 
PDF
Introduction to HTML-CSS-Javascript.pdf
DakshPratapSingh1
 
PPTX
New Elements & Features in CSS3
Jamshid Hashimi
 
PPTX
Introduction to Spring Framework
Serhat Can
 
PPTX
Soap vs rest
Antonio Severien
 
PDF
Introduction to Spring Boot!
Jakub Kubrynski
 
PPT
XSLT.ppt
KGSCSEPSGCT
 
PPTX
CSS Animations & Transitions
Edward Meehan
 
PPTX
Synchronous vs Asynchronous Programming
jeetendra mandal
 
PDF
JavaScript - Chapter 13 - Browser Object Model(BOM)
WebStackAcademy
 
PDF
Bootstrap
Jadson Santos
 
Web Service Presentation
guest0df6b0
 
Soap Vs Rest
sreekveturi
 
Spring Web Services: SOAP vs. REST
Sam Brannen
 
Ajax presentation
Bharat_Kumawat
 
Windows Communication Foundation (WCF)
Betclic Everest Group Tech Team
 
Java Script ppt
Priya Goyal
 
DOT Net overview
chandrasekhardesireddi
 
Introduction to JavaScript (1).ppt
MuhammadRehan856177
 
Introduction to HTML-CSS-Javascript.pdf
DakshPratapSingh1
 
New Elements & Features in CSS3
Jamshid Hashimi
 
Introduction to Spring Framework
Serhat Can
 
Soap vs rest
Antonio Severien
 
Introduction to Spring Boot!
Jakub Kubrynski
 
XSLT.ppt
KGSCSEPSGCT
 
CSS Animations & Transitions
Edward Meehan
 
Synchronous vs Asynchronous Programming
jeetendra mandal
 
JavaScript - Chapter 13 - Browser Object Model(BOM)
WebStackAcademy
 
Bootstrap
Jadson Santos
 

Viewers also liked (20)

DOC
WCF tutorial
Abhi Arya
 
PPTX
WCF (Windows Communication Foundation)
ipower softwares
 
PPTX
Windows Communication Foundation (WCF) Best Practices
Orbit One - We create coherence
 
PDF
Wcf development
Binu Bhasuran
 
PPTX
Web API or WCF - An Architectural Comparison
Adnan Masood
 
PPTX
Jug muenchen bpmn in der praxis
camunda services GmbH
 
PDF
2011 10-26 bpm-tools
camunda services GmbH
 
PDF
WJAX 2012: BPMN in der Praxis
camunda services GmbH
 
PPT
WFC #1
Hoangminh Nguyen
 
PPTX
There is time for rest
SoftServe
 
PPTX
RESTful WCF Services
Harish Ranganathan
 
PPTX
A presentation on WCF & REST
Santhu Rao
 
PPTX
REST in the shade of WCF
SzymonPobiega
 
PPTX
Advanced WCF
Jack Spektor
 
PPS
Wcf Transaction Handling
Gaurav Arora
 
PPTX
Wcf for the web developer
Codecamp Romania
 
PPTX
WCF for Dummies (Parte II)
Will.i.am
 
PDF
Camunda BPM 7.2: Tasklist and Javascript Forms SDK (English)
camunda services GmbH
 
PPTX
The Full Power of ASP.NET Web API
Eyal Vardi
 
WCF tutorial
Abhi Arya
 
WCF (Windows Communication Foundation)
ipower softwares
 
Windows Communication Foundation (WCF) Best Practices
Orbit One - We create coherence
 
Wcf development
Binu Bhasuran
 
Web API or WCF - An Architectural Comparison
Adnan Masood
 
Jug muenchen bpmn in der praxis
camunda services GmbH
 
2011 10-26 bpm-tools
camunda services GmbH
 
WJAX 2012: BPMN in der Praxis
camunda services GmbH
 
There is time for rest
SoftServe
 
RESTful WCF Services
Harish Ranganathan
 
A presentation on WCF & REST
Santhu Rao
 
REST in the shade of WCF
SzymonPobiega
 
Advanced WCF
Jack Spektor
 
Wcf Transaction Handling
Gaurav Arora
 
Wcf for the web developer
Codecamp Romania
 
WCF for Dummies (Parte II)
Will.i.am
 
Camunda BPM 7.2: Tasklist and Javascript Forms SDK (English)
camunda services GmbH
 
The Full Power of ASP.NET Web API
Eyal Vardi
 
Ad

Similar to WCF Fundamentals (20)

PPT
introduction to Windows Comunication Foundation
redaxe12
 
PPTX
Lunch Learn - WCF Security
Paul Senatillaka
 
PPT
Session 1: The SOAP Story
ukdpe
 
PPT
Overview of Windows Vista Devices and Windows Communication Foundation (WCF)
Jorgen Thelin
 
PDF
Beginning with wcf service
Binu Bhasuran
 
DOCX
Web services in java
maabujji
 
PPTX
WCF 4 Overview
Mariano Omar Rodriguez
 
PPT
WCFPresentation.ppt WCFPresentation.ppt WCFPresentation.ppt
yatakonakiran2
 
PPTX
Web services
aspnet123
 
PPTX
Windows communication foundation ii
Swamy Gowtham
 
DOCX
58615764 net-and-j2 ee-web-services
homeworkping3
 
PDF
Webservices in SalesForce (part 1)
Mindfire Solutions
 
PPT
WCF
Duy Do Phan
 
PPT
Interoperability and Windows Communication Foundation (WCF) Overview
Jorgen Thelin
 
PDF
All About Microservices and OpenSource Microservice Frameworks
Mohammad Asif Siddiqui
 
PPT
Mule and web services
Manav Prasad
 
PDF
Jasigsakai12 columbia-customizes-cas
ellentuck
 
PDF
PRIVATE CLOUD SERVER IMPLEMENTATIONS FOR DATA STORAGE
Editor IJCTER
 
PPT
Introduction To Dot Net Siddhesh
Siddhesh Bhobe
 
introduction to Windows Comunication Foundation
redaxe12
 
Lunch Learn - WCF Security
Paul Senatillaka
 
Session 1: The SOAP Story
ukdpe
 
Overview of Windows Vista Devices and Windows Communication Foundation (WCF)
Jorgen Thelin
 
Beginning with wcf service
Binu Bhasuran
 
Web services in java
maabujji
 
WCF 4 Overview
Mariano Omar Rodriguez
 
WCFPresentation.ppt WCFPresentation.ppt WCFPresentation.ppt
yatakonakiran2
 
Web services
aspnet123
 
Windows communication foundation ii
Swamy Gowtham
 
58615764 net-and-j2 ee-web-services
homeworkping3
 
Webservices in SalesForce (part 1)
Mindfire Solutions
 
Interoperability and Windows Communication Foundation (WCF) Overview
Jorgen Thelin
 
All About Microservices and OpenSource Microservice Frameworks
Mohammad Asif Siddiqui
 
Mule and web services
Manav Prasad
 
Jasigsakai12 columbia-customizes-cas
ellentuck
 
PRIVATE CLOUD SERVER IMPLEMENTATIONS FOR DATA STORAGE
Editor IJCTER
 
Introduction To Dot Net Siddhesh
Siddhesh Bhobe
 
Ad

Recently uploaded (20)

PDF
UiPath vs Other Automation Tools Meeting Presentation.pdf
Tracy Dixon
 
PDF
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
PDF
Upgrading to z_OS V2R4 Part 01 of 02.pdf
Flavio787771
 
PDF
Empowering Cloud Providers with Apache CloudStack and Stackbill
ShapeBlue
 
PDF
Smart Air Quality Monitoring with Serrax AQM190 LITE
SERRAX TECHNOLOGIES LLP
 
PDF
Are there government-backed agri-software initiatives in Limerick.pdf
giselawagner2
 
PPTX
Darren Mills The Migration Modernization Balancing Act: Navigating Risks and...
AWS Chicago
 
PDF
Arcee AI - building and working with small language models (06/25)
Julien SIMON
 
PDF
Meetup Kickoff & Welcome - Rohit Yadav, CSIUG Chairman
ShapeBlue
 
PDF
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
PPTX
Extensions Framework (XaaS) - Enabling Orchestrate Anything
ShapeBlue
 
PDF
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 
PPTX
MSP360 Backup Scheduling and Retention Best Practices.pptx
MSP360
 
PDF
Ampere Offers Energy-Efficient Future For AI And Cloud
ShapeBlue
 
PDF
Women in Automation Presents: Reinventing Yourself — Bold Career Pivots That ...
DianaGray10
 
PPT
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
PPTX
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
PDF
Upskill to Agentic Automation 2025 - Kickoff Meeting
DianaGray10
 
PDF
Market Wrap for 18th July 2025 by CIFDAQ
CIFDAQ
 
PPTX
Building and Operating a Private Cloud with CloudStack and LINBIT CloudStack ...
ShapeBlue
 
UiPath vs Other Automation Tools Meeting Presentation.pdf
Tracy Dixon
 
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
Upgrading to z_OS V2R4 Part 01 of 02.pdf
Flavio787771
 
Empowering Cloud Providers with Apache CloudStack and Stackbill
ShapeBlue
 
Smart Air Quality Monitoring with Serrax AQM190 LITE
SERRAX TECHNOLOGIES LLP
 
Are there government-backed agri-software initiatives in Limerick.pdf
giselawagner2
 
Darren Mills The Migration Modernization Balancing Act: Navigating Risks and...
AWS Chicago
 
Arcee AI - building and working with small language models (06/25)
Julien SIMON
 
Meetup Kickoff & Welcome - Rohit Yadav, CSIUG Chairman
ShapeBlue
 
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
Extensions Framework (XaaS) - Enabling Orchestrate Anything
ShapeBlue
 
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 
MSP360 Backup Scheduling and Retention Best Practices.pptx
MSP360
 
Ampere Offers Energy-Efficient Future For AI And Cloud
ShapeBlue
 
Women in Automation Presents: Reinventing Yourself — Bold Career Pivots That ...
DianaGray10
 
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
Upskill to Agentic Automation 2025 - Kickoff Meeting
DianaGray10
 
Market Wrap for 18th July 2025 by CIFDAQ
CIFDAQ
 
Building and Operating a Private Cloud with CloudStack and LINBIT CloudStack ...
ShapeBlue
 

WCF Fundamentals

  • 2. Polymorphism Encapsulation Subclassing Message-based Schema+Contract Binding via Policy 1980s 2000s Interface-based Dynamic Loading Runtime Metadata 1990s Object-Oriented Service-Oriented Component-Based
  • 3. SOA can be simply defined as an architectural concept or style that uses a set of “loosely coupled services” to achieve the desired functionality.
  • 4.  Boundaries are Explicit.  Services are Autonomous  Services share schema and contract, not class  Service compatibility is determined based on policy
  • 5.  Services are secure  Services leave the system in a consistent state  Services are thread-safe  Services are reliable
  • 7.  WCF is a programming model that enables developers to build service solutions that are reliable and secure, and even transacted.  WCF simplifies development of unified, simplified and manageable distributed systems
  • 9. Interoperability across platforms Service –oriented development Unification of existing distributed technology
  • 10.  Programming model type 1. You can use the object model programmatically. 2. You can use configuration files. 3. You can use declarative programming (attributes).  The order in which settings are applied is as follows: 1. Attributes are applied. 2. The configuration is applied. 3. The code runs.
  • 11. Client SOAP Request SOAP Response Service Metadata Message (SOAP) Headers: Addressing, Security, etc Body: Payload
  • 12. What do I send? Where do I send it? How should I send it? Contract Address Binding ServiceClient Endpoint Endpoint a network address indicates where the service is located. specifies how a client can communicate with the endpoint identifies what operations are available to the clients
  • 13.  WCF Service Library ◦ WCF Test Client ◦ WCF Configuration Editor ◦ Output is dll ◦ Has app.config file  Website Project Template ◦ Has web.config ◦ Used over asp.net webservice ◦ Has a .svc file
  • 15.  It contains information about what a service does and the type of information it will make available.  There are three types of contracts:  Data Contract  Message Contract  Service Contract  Operation Contact
  • 16. 16 [ServiceContract] public interface IHello { [OperationContract] string Hello(string name); } public class HelloService : IHello { public string Hello(string name) { return “Hello, ” + name; } }
  • 17.  The service contract expresses the “methods” that are exposed to the outside world. using System.ServiceModel; namespace MyFirstWCF { [ServiceContract(Namespace = "http://Ebusiness30/WCF")] interface IService { [OperationContract] Operation1( ); [OperationContract] Operation2( ); } } class MyService : IMyContract { public string MyMethod( ) { return "Hello WCF"; } }
  • 18.  Define the custom types that you will use as a parameter or return in your operation contract [DataContract(Namespace=" Ebusiness30WCF")] public class Customer { [DataMember(Name=“CustomerName")] public string Name; [DataMember(Name=“NID")] public int id; [DataMember(Name=“Type")] private string type; }
  • 19.  use message contracts to control how properties of your types map to the SOAP headers and SOAP body [MessageContract(Namespace=" Ebusiness30/WCF")] public class Customer { [MessageBody(Name=“CustomerName")] public string Name; [MessageBody(Name=“NID")] public int id; [MessageHeader(Name=“Type")] private string type; }
  • 21.  Http-Based Binding ◦ BasicHttpBinding-wsBinding-wsDualHttpBinding- wsFederationHttpBinding-  TCP-Based Binding ◦ netNamedPipeBinding-netPeerTcpBinding- netTcpBinding  MSMQ-Based Binding ◦ msmqIntegrationBinding-netMsmqBinding
  • 22.  Bindings are the mechanism by which communication details are specified to make connecting to a service’s WCF endpoint possible  A binding defines how you can communicate with the service  The binding controls the following: ◦ The transport (HTTP, MSMQ, Named Pipes, TCP) ◦ The channels (one-way, duplex, request-reply) ◦ The encoding (XML, binary,MTOM) ◦ The supported WS-* protocols (WS-Security, WS-Federation, WS- reliability, WS-Transactions)  Using bindings is a two-step process, as follows ◦ Select the binding from the predefined list of WCF bindings that you will use for a particular endpoint. ◦ Create an endpoint that utilizes the binding that you have selected or created.
  • 23. Binding Name Transport Encoding Interop Security Session Transaction Duplex Streaming BasicHttpBinding HTTP/S Text.MTOM BP 1.1 T X WsHttpBinding HTTP/S Text.MTOM WS T | S X X X WsDualHttpBinding HTTP/S Text.MTOM WS T | S X X X X NetTcpBinding TCP Binary .NET T | S X X X X NetNamedPipesBinding IPC Binary .NET T | S X X X X NetMsmqBinding MSMQ Binary .NET T | S X NetPeerTcpBinding P2P Binary .NET T | S X MsmqIntegrationBinding MSMQ Binary MSMQ T X T = Transport Security | S = WS-Security  It specifies the communication details required to connect to the endpoint.
  • 26. An address basically declares “here I am” to the outside world. Example http://localhost/myservice/ protocol domain Service path
  • 27.  HTTP ◦ http://domain [:port]/path  HTTPS ◦ https://domain[:port]/path  TCP ◦ net.tcp://domain/path  MSMQ ◦ net.msmq://domain/queue name  Named pipe no port not cross-machine ◦ net.pipe://localhost/path  IIS ◦ http://domain[:port]/virtual directory[.svc file]
  • 28.  Base address ◦ enables you to host multiple endpoints under the same base address ◦ [transport]://[host name][:optional port]/[optional path]  Endpoint address ◦ Endpoint address is where the service is actually listening.  Mex address ◦ Used to obtain metadata of the service ◦ [transport]://[host name][:optional port]/[optional path] MyServiceMex
  • 30.  Custom .exe (self hosting )  IIS Windows Service
  • 32.  IIS 6 (ASPNET_WP.EXE / W3wp.exe) ◦ Activation on demand upon client request. ◦ Only supports HTTP/S transport.  Self Hosting ◦ Can be any managed application, i.e. Console or WinForms application. ◦ Low-level but flexible.  Windows Activation Service (WAS) ◦ Supports all transports. ◦ Will ship with IIS 7 on Vista and Longhorn Server.  Managed Windows Services (NT Services)
  • 33. 33 class HelloHost { static void Main(string[] args) { ServiceHost host = new ServiceHost(typeof(HelloService)); host.Open(); // Wait until done accepting connections Console.ReadLine(); host.Close(); } } <%@ Service Language=“C#” Class=“HelloService” %> http://localhost/HelloService/HelloService.svc Self-host WAS/IIS-host
  • 34. 34 <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services> <service type=“HelloService" <endpoint address=“http://localhost/HelloService" binding=“basicHttpBinding" contract="IHello" /> </service> </services> </system.serviceModel> </configuration>
  • 35.  Create a service host  Open the host to allow calls in  Close the host to gracefully exit ◦ Calls in progress complete. ◦ Host refuse any further calls even if host process is still running. public static void Main () { Uri baseAddress = new Uri ("http://localhost:8000"); using (ServiceHost serviceHost = new ServiceHost (typeof(MyService), baseAddress)) { serviceHost.Open (); // The service can now be accessed. Console.WriteLine ("Press <ENTER> to terminate service."); Console.ReadLine (); } }
  • 36.  Application hosting ◦ App.Config <system.serviceModel> <services> <service name = "MyNamespace.MyService" > <endpoint address = "http://localhost:8000/MyService" binding = "wsHttpBinding" contract = "MyNamespace.IMyContract"> </endpoint> </service> </services> </system.serviceModel>
  • 38.  Using svcutil.exe  Using visual studio 2008
  • 39.  Client uses a proxy to consume the service  The proxy ◦ Is CLR interface and class representing the service. ◦ Provides the same operations as service. ◦ Has additional methods for managing the proxy and the connection.  Generate the proxy ◦ SvcUtil.exe <Base Address> [/out:<file>] [/config:<file>] ◦ When hosted in IIS/WAS SvcUtil http://localhost/MyService/MyService.svc /out:Proxy.cs ◦ When self-hosting SvcUtil http://localhost:8000/MyService/ /out:Proxy.cs SvcUtil net.tcp://localhost:8001/ /out:Proxy.cs SvcUtil net.pipe://localhost/MyPipe/ /out:Proxy.cs ◦ HTTP transport Add Service Reference to the project in VS 2005
  • 40.  Client Configuration ◦ Application: App.Config <system.serviceModel> <client> <endpoint name="MyEndpoint" address="http://localhost:8000/MyService" binding="wsHttpBinding" contract="MyNamespace.IMyContract" /> </client> </system.serviceModel>
  • 41.  Client needs to instantiate proxy object ◦ Provide the constructor with endpoint ◦ Endpoint section name from config file  Use service methods  Close proxy instance using (MyContractProxy proxy = new MyContractProxy ("MyEndpoint") ) { proxy.MyMethod (); }
  • 42.  No Proxy Client ◦ Work directly with channel ChannelFactory<IMyContract> factory = new ChannelFactory<IMyContract> ("MyEndpoint"); IMyContract channel = factory.CreateChannel(); channel.MyMethod (); factory.Close ();  Need to know the contract interface upfront
  • 44.  in this section you will learn how 1. Handle exceptions in the client applications and services 2. Specify the exception that a WCF can raise 3. Propagate information about exceptions form service to client 4. Learn about services state 5. Recover service that has failed 6. Detect unrecognized messages sent to the service by the client application
  • 45.  Why SOAP fault and not CLR exception ◦ Simply , CLR exceptions are specific to the.NET framework, java client application would not understand the format of a CLR exception raised by a WCF service  So, Interoperable services built by using the WCF should convert .NET Framework exceptions into SOAP faults and follow the SOAP specification for reporting these faults to client applications.
  • 47. ServiceMthod{ Try{ service logic that may generate an exception } catch(Exception e ) { throw new FaultException( e.message, new FaultCode(“FaultName”) } Catching Client side SeviceCall{ Try{ calling serviceMethod() } catch(FaultException e ) { print e.code.name, print e.Reason }
  • 48.  Strongly typed exception ◦ A SOAP fault message that contains a sufficient detail about the exception in order to enable the user, or an administrator, to understand the reason for the exception and if possible take any necessary corrective action. ◦ Use FaultContract attributes in a service contract ◦ Note you cannot use it with one way operations
  • 50.  Configure the WCF service to send details of Unanticipated exceptions ◦ Configuration file  In the <serviceBehaviors> section of the App.config file add this tag in the <behavior> section  Setting the includeExceptionDetailInFaults attribute to true causes WCF to transmit the full details of exceptions when it generates SOAP faults for unanticipated errors. ◦ Programmatically <serviceDebug includeExceptionDetailInFaults="true"/> [ServiceBehavior(IncludeExceptionDetailInFaults=true)] public class ServiceImpl : IService {}
  • 51.  May I decide to make it a self study topic or research that must be given in lab  Or give them a hint about it  Or decide to give it with no examples  Or decide to give it with examples  Summary if I didn’t give it I won’t be upset s
  • 52.  when a ServiceHost object enters the Faulted state it triggers Faulted event . You should subscribe to this event, and provide a method that attempts to determine the cause, and then abort and restart the service.// ServiceHost object for hosting a WCF service ServiceHost HelloworldServiceHost; HelloworldServiceHost = new ServiceHost(…); // Subscribe to the Faulted event of the productsServiceHost object HelloworldServiceHost.Faulted += new EventHandler(faultHandler); // FaultHandler method Runs when productsServiceHost enters the Faulted state void faultHandler(object sender, EventArgs e) { // Examine the properties of the HelloworldServiceHost object // and log the reasons for the fault // Abort the service HelloWorldServiceHost.Abort(); // Recreate the ServiceHost object HelloWorldServiceHost = new ServiceHost(…); // Start the service HelloWorldServiceHost.Open();
  • 53.  If a client application sends a message specifying an action that the service does not recognize, the service host application raises the UnknownMessageReceived event. The host application can catch this event and record the unrecognized message, like this// ServiceHost object for hosting a WCF service ServiceHost HelloWorldServiceHost; HelloWorldServiceHost = new ServiceHost(…); // Subscribe to the UnknownMessageReceived event of the HelloWorldServiceHost object HelloWorldServiceHost.UnknownMessageReceived += new EventHandler<UnknownMessageReceivedEventArgs>(unknownMessag e); // UnknownMessageReceived event handler void unknownMessage(object sender, UnknownMessageReceivedEventArgs e) { // Log the unknown message // Display a message to the administrator MessageBox.Show("A client attempted to send the message " + e.Message.Headers.Action);

Editor's Notes

  • #3: © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
  • #4: One of the biggest IT topics today has to be the concept of Service-Oriented Architecture (SOA). When you want to understand the meaning of something, you usually go to a place that defines it, such as a dictionary. In this case, we turn to the W3C to understand the definition of SOA. The W3C defines Service-Oriented Architecture as: A set of components which can be invoked and whose interface descriptions can be discovered and published. Service orientation is not a technology but instead is a design concept Service orientation uses the best practices for building today’s distributed applications
  • #5: Tenet 1: Boundaries are Explicit. Based on the underlying concept of encapsulation, this tenet specifies the publishing and consumption of functionality as sets of services that abstract their underlying implementation. With WCF, the attribute-based programming enables developers to explicitly define external service contracts. Without explicitly defining these, nothing within the class will be exposed publicly. In other words, WCF provides an opt-in model for explicitly defining service boundaries. Tenet 2: Services are Autonomous. Autonomy means we design the system to support the inevitable evolution of the service’s implementation over time. As we build our services, we need to assume that their internal implementation will evolve (be versioned) over time and that our services as well as the services on which we depend could change location at (almost) any time. Tenet 3: Services share schema and contract, not class. For those of you who are familiar with ASMX - this is exactly how ASMX works: The service publishes a contract that clients use to generate their own code to call the service. No types are shared between service and its clients by default. In addition, neither Service requires knowledge of each others’ internal workings in order to exchange data – they only need the published schemas & contracts Tenet 4: Service compatibility is determined based on policy. The services communicate through dynamically negotiated communications channels that support the necessary semantics (security, reliability, etc). Service policy statements created automatically based on configuration, class attributes, and method signatures. Client channels automatically configured via retrieved service policy. By “name” means that we reference a well known name in Policy that represents a whole specification of behavior that needs to be used when talking to this endpoint.
  • #6: Services are secure A service and its clients must use secure communication. At the very least, the transfer of the message from the client to the service must be secured, and the clients must have a way of authenticating the service. The clients may also provide their credentials in the message so that the service can authenticate and authorize them. Services leave the system in a consistent state Conditions such as partially succeeding in executing the client's request are forbidden. All resources the service accesses must be consistent after the client's call. A service must not have any leftovers as a result of an error, such as only partially affecting the system state. The service should not require the help of its clients to recover the system back to a consistent state after an error. Services are thread-safe The service must be designed so that it can sustain concurrent access from multiple clients. The service should also be able to handle causality or logical thread reentrancy. Services are reliable If the client calls a service, the client will always know in a deterministic manner if the message was received by the service. The messages should also be processed in the order they were sent, not in the order they were received. Services are robust The service isolates its faults, preventing them from taking down itself or other services. The service should not require the clients to alter their behavior according to the type of error the service encountered. This helps to decouple the clients from the service on the error-handling dimension
  • #13: An Address is a network address indicates where the service is located. A Binding specifies how a client can communicate with the endpoint including transport protocol, encoding, and security requirements. A Contract identifies what operations are available to the clients
  • #16: Data Contract A data contract explicitly stipulates the data that will be exchanged by the service Message Contract A message contract lets you customize the type formatting of parameters in SOAP messages Service Contract A service contract is what informs the clients and the rest of the outside world what the endpoint has to offer and communicate
  • #17: 16
  • #18: ServiceContract Parameters CallbackContract: Gets or sets the type of callback contract. This is useful when using the duplex messaging exchange pattern. ConfigurationName: Defines the name as used in the configuration file to store the related configuration settings. Name: Gets or sets the name for the <portType> element in WSDL. The default value is the name of the .NET interface. Namespace: Gets or sets the namespace for the <portType> element in WSDL. The default value is the namespace of the .NET interface. HasProtectionLevel: Defines a (read-only) value that indicates the protection level of the service. At the operation level, it is possible to define that the messages of the operation must be encrypted, signed, or both. ProtectionLevel: Defines the protection level that the binding must support. SessionMode: Gets or sets a value that defines whether the contract requires the WCF binding associated with the contract to use channel sessions. SessionMode is an enumeration with possible values of allowed, notallowed, and required. The default value is allowed. OperationContract parameters Name: Specifies the name of the operation. The default is the name of the operation. Action: Defines the (WS-Addressing) action of the request message. AsyncPattern: Indicates that the operation is implemented asynchronously by using a Begin/End method pair. IsInitiating: Defines a value that indicates whether the method implements an operation that can initiate a session on the server. IsOneWay: Defines a value that indicates whether an operation returns a reply message. IsTerminating: Defines a value that indicates whether the operation causes the server to close the session after the reply message is sent. ProtectionLevel: Defines a value that indicates the protection level of the operation. You can define that the messages of the operation must be encrypted, signed, or both. ReplyAction: Defines the value of the SOAP action for the reply message of the operation.
  • #19: DataContract parameters Name: Defines the name for the data contract, which will also be the name in the XML schema (XSD, WSDL). The default value is the name you defined in .NET. Namespace: Defines the namespace for the data contract. Use this property to specify a particular namespace if your type must return data that complies with a specific data contract or XML schema. DataMember parameters Name: Defines the name for the data contract, which will also be the name in an XML schema (XSD, WSDL). The default value is the name you defined in .NET. Namespace: Defines the namespace for the data contract. Use this property to specify a particular namespace if your type must return data that complies with a specific data contract or XML schema. IsRequired: Gets or sets a value that instructs the serialization engine that the member must be present. Order: Gets or sets the order of serialization and deserialization of a member. This can be important if clients rely on the order of the fields. EmitDefaultValue: Gets or sets a value that specifies whether to generate a default value of null or 0 for a field or property being serialized.
  • #22: When using the tcp binding the client and the host must be .net applications tcp higher performance netNamedPipe – the fastest across machine
  • #23: WCF provides a default set of bindings that should cover most of your requirements. If the default bindings don’t cover your requirements, you can build your own binding by extending from CustomBinding.
  • #24: Text.MTOM (Message Transmission Optimization Mechanism) is a W3C standard to balance between efficiency and interoperability. The MTOM encoding transmits most XML in textual form, but optimizes large blocks of binary data by transmitting them as-is, without conversion to text. Encoding could be Text, Binary and Text.MTOM
  • #29: WCF supports base addresses, which enables you to host multiple endpoints under the same base address and which shortcuts the duplication of the scheme, host, port, and root path in your configuration.
  • #34: 33
  • #35: 34
  • #48: If an exception occurs, this code creates a new System.ServiceModel.FaultException object with the details of the exception and throws it The FaultCode object identifies the fault, note If you don’t create a FaultCode object, the WCF runtime will automatically generate a FaultCode object itself, with the name “Sender” and add it to the SOAP fault sent back to the client.
  • #49: Throwing a faultexception is very simple and is not useful as it appears , it is not easy to predict what exceptions could occur when invoking WCF service a better solution is to use strongly typed soap faults . A service contract can include information about any faults that might occur when executing an operation. If an operation in a WCF service detects an exception, it can generate a specific SOAP fault message that it can send back to the client application. The SOAP fault message should contain sufficient detail to enable the user, or an administrator, to understand the reason for the exception and if possible take any necessary corrective action. A client application can use the fault information in the service contract to anticipate faults and provide specific handlers that can catch and process each different fault. These are strongly typed faults
  • #50: Service side Create Custom Fault class as a Data contrcat Use the FaultContract(typeof(your custom class))] attribute before the operation that may cause that exception Throw the new type by the line throw new FaultException<your custom error>(custom error object) Client side Catch(FaultException<your custom class>obj) { obj.Detail.(all your class’s fields should appear here) } Summary You should use the generic with the non generic exception handling
  • #51: If you use strongly typed exceptions, you must specify every exception that an operation can throw in the service contract. If a service throws a strongly typed exception that is not specified in the service contract, the details of the exception are not propagated to the client This lack of detail is actually a security feature. In these cases, you should catch the exception in the service, and if you need to send it to the client, raise an ordinary (non-generic) FaultException Note: You can turn the behavior on and off in the configuration file without rebuilding the application If you enable this behavior in code, you cannot disable it by using the application configuration file