Download - WCF for begineers
![Page 2: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/2.jpg)
What definition you get on web ?
2Microsoft Innovation & Practice Team, MSCoE
Service Oriented programming model to develop connected applications
SDK to develop and deploy services on windows
Unifies the existing suite of .Net distributed technologies into a single programming model.
![Page 3: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/3.jpg)
Getting Started with WCF
Developer Evangelist Telerik
Microsoft MVP
Mindcracker MVP
@debug_mode
fb.com/debugmode.net
Delhi User Group
C-Sharp corner User Group
![Page 4: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/4.jpg)
Services and Clients
Service ClientMessage
![Page 5: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/5.jpg)
Let us start with a Demo
![Page 6: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/6.jpg)
Endpoints
Client Service
MessageEndpoint Endpoint
Endpoint
![Page 7: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/7.jpg)
End Points
7
A B C E
![Page 8: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/8.jpg)
End Points
End Point
Binding
AddressContracts
8
![Page 9: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/9.jpg)
End Point
9
ADDRESS •Where
BINDING •How
CONTRACT •What
![Page 10: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/10.jpg)
Address (A)Every service is associated with a unique
address.
10
Location of
the Servi
ce
Transport
protocol used
in service
Address of the
Service
![Page 11: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/11.jpg)
Address (A)
11
Address specifies where the service is residing.
This is an URL( Uniform Resource Locator).
Address URL identifies , location of the service
Address should follow the Web Service Addressing(WS-Addressing) standard.
![Page 12: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/12.jpg)
Address (A)
12
WS Addressing
Scheme Machine Port Path
![Page 13: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/13.jpg)
Address (A)
13
•This is top level portion of the address. This is not as same as of protocols.Scheme•This identifies the machine name. This can be a public URL or a local identifierMachine•This is port number. This is an optional part.Port•This is used to locate the path. This gives path of the service.Path
![Page 14: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/14.jpg)
Address (A)
14
HTTP •http://localhost:8001/Dell•http://localhost/Dell
TCP •net.tcp://localhost:800/Dell•net.tcp://localhost/Dell
MSMQ •net.msmq/private/MyService•Net.msmq/://localhost/Dell
IPC •net.pipe://localhost/MyPipe
Peer network •Net.pipe://localhost.MyService
![Page 15: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/15.jpg)
Binding (B)
15
Describes how a service communicates.
This specifies which Protocol to be used.
This specifies the encoding method to format the message content.
This specifies the Security requirements
This specifies the message exchange format.
This specifies message session mode.
Developer could create custom Binding also.
![Page 16: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/16.jpg)
Binding (B)
16
Transport Protocol
Message Encoding
Communication Pattern
Security
Transaction Property
Inter Operability
![Page 17: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/17.jpg)
Binding (B) Choosing Binding
17
WCF To
WCF
DisconnectedCalls
LegacyASMX
CrossMachine
WS Basic IPC TCP MSMQ
No
Yes
Yes
Yes
Yes
NoNo
No
![Page 18: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/18.jpg)
Binding (B)Binding Classes
18
Binding Name as of class Transport Encoding Interoperable
BasicHttpBinding HTTP/HTTPS Text,MTOM YesNetTcpBinding TCP Binary NoNetPeerBinding P2P Binary NoNetNamedPipeBinding IPC Binary NoWSHttpBinding HTTP/HTTPS Text,MTOM YesWSFederationHttpBinding HTTP/HTTPS Text,MTOM YesWSDualHttpBinding HTTP Text,MTOM YesNetMsmqBinding MSMQ Binary NoMsmqIntegrationBinding MSMQ Binary Yes
![Page 19: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/19.jpg)
Binding (B)Configuring Binding
19
<endpoint address="Calculator" bindingSectionName="basicProfileBinding" bindingConfiguration="Binding1" contractType="ICalculator" />
<bindings> <basicProfileBinding> <binding configurationName="Binding1" hostnameComparisonMode="StrongWildcard" transferTimeout="00:10:00" maxMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" </binding> </basicProfileBinding></bindings>
![Page 20: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/20.jpg)
Service Contract (C)
20
A WCF Contract is a collection of Operations
All WCF services exposes contract.
This is a platform neutral and standard way to say , what the service will do.
Defines , what a Service communicates.
![Page 21: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/21.jpg)
Contract (C)
Types of Contracts
21
21
Service Contract • Describes which operation client can perform on the services.
Data Contract • Defines which Data Type are passed to and from
the services. It provides built-in contract for implicit type.
Fault Contract • Which error raise by service and how service propagates and handles error to its client.
Message Contract • Allow the service to interact directly with the
message . Message contract can be typed or un typed. This can be used for interoperability.
![Page 22: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/22.jpg)
Contract (C)Service Contract
22
A Service Contract reflects specific business
Describe which operations client can perform
Maps CLR types to WSDL
![Page 23: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/23.jpg)
Contract (C)Service Contract
23
Interfaces are used to explicitly define a Contract
Classes may also be used to define a Contract.
[ServiceContract] attribute is being used by interface/class to qualify them as a contract.
ServiceContract are implicitly public.
![Page 24: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/24.jpg)
Contract (C)Service Contract
24
// Define a service contract. [ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")] public interface IDataContractCalculator { [OperationContract] ComplexNumber Add(ComplexNumber n1, ComplexNumber n2); [OperationContract] ComplexNumber Subtract(ComplexNumber n1, ComplexNumber n2); [OperationContract] ComplexNumber Multiply(ComplexNumber n1, ComplexNumber n2); [OperationContract] ComplexNumber Divide(ComplexNumber n1, ComplexNumber n2); }
![Page 25: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/25.jpg)
Contract (C)Data Contract
25
These are the contractual agreement about the format and structure of the payload data in message exchange between a service and its consumer.
Defines which Data types are passed to and from the service.
Its specifies CLR type to XML schema.
![Page 26: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/26.jpg)
Contract (C)Data Contract
26
DataContract are preferred WCF way to enable Serialization.
WCF defines implicit contract for built in types like int and string.
Developer has to explicitly expose complex types as Data Contract.
[DataContract] and [DataMember] attribute are used to define a type as Data Contract.
![Page 27: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/27.jpg)
Contract (C)Data Contract
27
[DataContract] public class ComplexNumber { [DataMember] public double Real = 0.0D; [DataMember] public double Imaginary = 0.0D; }
![Page 28: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/28.jpg)
Contract (C)Message Contract
28
It gives control over SOAP message structure on both header and body content.
Developer can designate optional SOAP headers.
It provides additional control over the WSDL generation.
It is used to interoperate with another non- WCF service.
It is used to control security issue at level of message.
![Page 29: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/29.jpg)
Contract (C)Fault Contract
29
This translates .Net Exception to SOAP fault propagated to consumer
This can be applied to operation only.
This is not Inheritable.
This can be applied multiple times.
This enables developer to declare which faults a given service operation might issue if things goes wrong.
![Page 30: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/30.jpg)
Creating End Point
30
Could be created declaratively in configuration file.
Could be created imperatively through code.
Any thing done through code can be done with configuration file and vice versa.
It is considered good practice to use configuration file to specify End points. This accommodates changes without recompiling the code.
![Page 31: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/31.jpg)
Defining Endpoints
<?xml version="1.0" encoding="utf-8" ?><configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> <system.serviceModel> <services> <service serviceType="CalculatorService"> <endpoint address="Calculator" bindingSectionName="basicProfileBinding" contractType="ICalculator" /> </service> </services> </system.serviceModel></configuration>
![Page 32: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/32.jpg)
Multiple End Point
32
For service exposed to multiple clients ; it makes sense to specify more than one End point.
This enables client to use the endpoint that is most applicable for them.
When creating multiple endpoints each client must have unique address
If two client uses the same address , error will raise at service load time.
![Page 33: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/33.jpg)
Multiple End Point
33
• <endpoint address="http://localhost:8890/a" binding="wsHttpBinding" contract="HotsingSamples.IService1"/>
• <endpoint address="http://localhost:8000/b" binding="basicHttpBinding" contract="HotsingSamples.IService1"/>
• <endpoint address="net.tcp://localhost:8001/c" binding="netTcpBinding" contract="HotsingSamples.IService1"/>
![Page 34: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/34.jpg)
Hosting
34
WCF services can not exist in void.
It must be hosted.
WCF services are hosted in windows process called host process.
A single host process can host multiple service.
A same service can be hosted in multiple host process.
![Page 35: WCF for begineers](https://reader035.vdocuments.net/reader035/viewer/2022081420/5562d817d8b42a6c498b51da/html5/thumbnails/35.jpg)
WCF basic task cycle
1. Defining Service
Contract 2.
Implementing
Service Contract
3. Configuri
ng Services
4. Hosting Services
5 . Building Clients
35