Presentation is loading. Please wait.

Presentation is loading. Please wait.

Mahesh Krishnan, Senior Consultant, Readify Slide 1.

Similar presentations


Presentation on theme: "Mahesh Krishnan, Senior Consultant, Readify Slide 1."— Presentation transcript:

1 Mahesh Krishnan, Senior Consultant, Readify Slide 1

2 Agenda  Introduction to WCF What is it? Why use it? Fundamentals and the ABCs of WCF Hosting  Tooling Support  Passing data around in WCF  Handling faults

3 Slide 3

4 What is WCF?  Stands for Windows Communication Foundation  One of the 4 pillars of.NET 3.0  Microsoft’s unified programming model (the service model) for building Service-Oriented Applications

5 Windows Communication Foundation  WCF provides: an SDK for creating SOA a runtime for running Services on Windows  Services send and receive messages  All messages are SOAP messages  WCF takes care of all the plumbing Slide 5

6 Why use WCF?  Interoperable and Standards based Supports WS-* protocols  Unified Programming Model Unifies previous models like.NET Remoting, ASMX web services, COM+ etc  Productive Programming Model Declarative Imperative Configuration based Slide 6

7 WCF: How does it work?

8 WCF End points

9 Every service has  Address Where the service is  Binding How to talk to the service  Contract What the service can do Slide 9

10 The EndPoint Anology AddressBindingContract Slide 10

11 Address  Combination of transport, server name, port & path  Transport is determined by the binding  Examples http://localhost:8001 net.tcp://localhost:8002/MyService net.pipe://localhost/MyPipe net.msmq://localhost/private/MyService net.msmq://localhost/MyService Slide 11

12 Bindings  Transport HTTP TCP MSMQ  Message formats and encoding Plain text Binary Message Transmission Optimization Mechanism (MTOM)  Communication security No security Transport security Message security Authenticating and authorizing callers Slide 12

13 Out of the box Bindings  BasicHttpBinding  WSHttpBinding  WS2007HttpBinding  WSDualHttpBinding  WSFederationHttp Binding  WS2007FederationHttp Binding  NetTcpBinding  NetNamedPipeBinding  NetMsmqBinding  NetPeerTcpBinding  WebHttpBinding  MsmqIntegrationBinding Slide 13

14 Contracts  Service contracts Defines operations, communications and behaviours.  Data contracts Defines data entities and parameter types.  Fault contracts Defines error types  Message contracts Defines message formats Slide 14

15 Service Contracts  [ServiceContract] – Defines a ‘set’ of operations  [OperationContract] – Defines a single method Slide 15 [ServiceContract] public interface IService { [OperationContract] string GetData(int value); } public class ConcreteService : IService { public string GetData(int value) {... } public string OtherMethod() {... } }

16 Data Contracts  [DataContract] – Specifies type as a data contract  [DataMember] – Members that are part of contract Slide 16 [DataContract] public class CustomType { [DataMember] public bool MyFlag { get; set; } [DataMember] public string MyString { get; set; } }

17 Metadata Exchange  Service can also expose endpoint for Metadata Exchange (MEX)  It provides a mechanism for clients to find out about: Address of other end points Bindings that are used Contracts used – Service, Operation, Data, etc Slide 17

18 Hosting  IIS HTTP only  WAS (Windows Activation Service) Can use any transport Vista and Windows Server 2008 only  Self hosting Can use any transport Can be hosted within Console, WinForms, etc Applications Slide 18

19 Slide 19

20 Tooling Support  Visual Studio Separate projects for WCF “Add Service reference” menu WCF Configuration Editor WCF Service Host WCF Test Tool  SvcUtil – To generate proxies  SvcTraceViewer – To view logs Slide 20

21 Demonstration Slide 21

22 Slide 22

23 Passing data around  To pass data across boundaries, they need to be serialized .NET Framework already contains an attribute for serialization Slide 23 [Serializable] public class Person { public string LastName; public string FirstName; }

24 Passing data around  Serializable Attribute has some limitations – Includes some type information in serialized data – not suited for true SOA Does not support aliases Does not support versioning Does not support ordering Explicit opt-out is needed to leave out some properties that shouldn’t be serialized Slide 24

25 Alternative – DataContract  DataContract: created specifically for WCF to serialize types Attribute contains Name and Namespace properties  DataMember is needed to specify which properties/fields will form part of the contract Contains EmitDefaultValue, IsRequired, Name, Order properties Slide 25

26 DataContract Slide 26 [DataContract(Name="Contact")] public class Person { [DataMember(IsRequired=true, Name="SurName")] public string LastName; public string FirstName; //Not included in contract }

27 Versioning of data contracts  Three different scenarios: New fields have been added Existing fields have been deleted Fields have been renamed Slide 27

28 Alternate way of looking at it:  Older version data [v1] passed to Service accepting newer version of data [v2]  Newer version data [v2] passed to Service accepting older version of data [v1]  New [v2]-> Old [v1]-> New [v2] Slide 28

29 New -> Old -> New Slide 29

30 Proxy code to hold Slide 30 [DataContract] public class MyDataContract : IExtensibleDataObject { public ExtensionDataObject ExtensionData { get; set; }

31 Inheritance with Data Contracts Slide 31 [DataContract] public class Employee {... } [DataContract] public class Manager : Employee {... } [ServiceContract] public interface IEmployeeService { [OperationContract] public void AddEmployee(Employee e); }

32 Inheritance with Data Contracts Slide 32 [DataContract] [KnownType(typeof(Manager))] public class Employee {... } [DataContract] public class Manager : Employee {... } [ServiceContract] public interface IEmployeeService { [OperationContract] public void AddEmployee(Employee e); }

33 Slide 33

34 SOAP Faults  Three main kinds of Exceptions can occur: Communication errors Unexpected error on the service Errors thrown by the service on purpose .NET Exceptions are technology specific  All Exceptions come across the wire as SOAP Faults Slide 34

35 Faults  In WCF, SOAP faults are passed in as FaultException objects  Rather than throwing Exceptions, services should throw FaultExceptions  Or better still FaultException  Throwing FaultExceptions will not fault the proxy and the channel Slide 35

36 FaultContracts  Specifies what kind of Exceptions, an operation can throw Slide 36 [ServiceContract] public interface IEmployeeService { [OperationContract] [FaultContract(typeof(ValidationException))] public void AddEmployee(Employee e); }

37 Server side code  Always throw Exceptions as Fault Exceptions Slide 37 public class EmployeeService { public void AddEmployee(Employee e) {... throw new FaultException (new ValidationException(errorMsg)); }

38 Client side code Slide 38 EmployeeServiceProxy proxy = new EmployeeServiceProxy(); try {... proxy.AddEmployee(emp); } catch(FaultException e) { //Do stuff with exception here } catch(FaultException e) { //Will catch all other types of Fault exceptions... }

39 Exceptions while developing Slide 39 <service name = "EmployeeService" behaviorConfiguration = "Debugging">... <serviceDebug includeExceptionDetailInFaults = "true"/>

40 Summary  WCF provides a runtime for creating Service Oriented Apps  Provides a productive programming model. Takes care of: Messaging and Exchange formats All Plumbing: Transaction, Reliability, Security, etc  Supports Declarative (via attributes), Imperative (via code) and Configuration based (via config files) programming model  ABCs of Endpoints Address: Where to go? Binding: How to get there? Contract: What to do?  Hosting IIS, WAS, Self-hosting

41 Summary (contd)  ServiceContract and OperationContract specify Service and operation information  DataContracts and DataMembers are used for specifying the data that is passed across the wire  Use KnownType attribute for specifying class hierarchy information in Data contracts  FaultContracts specify what Exceptions may be thrown by the operations

42 Slide 42


Download ppt "Mahesh Krishnan, Senior Consultant, Readify Slide 1."

Similar presentations


Ads by Google