150 likes | 261 Views
Windows Communication Foundation (WCF). Jim Fawcett CSE775 – Distributed Objects Spring 2007. References. Introducing WCF, David Chappell, www.davidchappell.com/IntroducingWCFv1.2.1.pdf Using three diagrams from this reference Programming Indigo, David Pallmann, Microsoft Press, 2005
E N D
Windows Communication Foundation (WCF) Jim Fawcett CSE775 – Distributed Objects Spring 2007
References • Introducing WCF, David Chappell, www.davidchappell.com/IntroducingWCFv1.2.1.pdf • Using three diagrams from this reference • Programming Indigo, David Pallmann, Microsoft Press, 2005 • Pro WCF, Peiris and Mulder, Apress, 2007
What is WCF? • Integration of several Microsoft Technologies: • Web services (ASMX) • Web service extensions (WSE) • WS-Security • WS-Reliability • WS-Addressing • .Net Remoting • MSMQ messaging • COM+ Transactions
Channel Model • WCF supports three types of channel activity: • Asysnchronous one-way • Request, wait for reply • Full duplex two-way
Structure • Service • Contract • Service contract – RPC Interface • Data contract – Type serialization • Message contract – Soap message • Binding • Transport – HTTP, TCP, MSMQ, … • Channel type – one-way, duplex, request-reply • Encoding – XML, binary, MTOM (msg trans optim mech) • WS-* protocols – WS-Security, … • Address • http://someURI • net.tcp://someOtherURI • net.msmq://stillAnotherURI
Channel Interfaces • public interface IOutputChannel : IChannel{ void Send(Message msg); } • public interface IInputChannel : IChannel{ Message Receive(); } • public interface IDuplexChannel : IOutputChannel, IInputChannel {} • public interface IRequestChannel : IChannel{ Message Request(Message msg); } • public interface IReplyChannel : IChannel{ IRequestContext ReceiveRequest(); } • public interface IRequestContext : Idisposable{ Message RequestMessage { get; } void Reply(Message msg); }
Service Contract • <%@ ServiceHost Language=“C#” Service=“MyService” %>[ServiceContract]public interface IMyService{ [OperationContract] string Hello( string name);}public class MyService : IMyService{ public string Hello(string name) { return “Hello “ + name; }}
Hosts • WCF Services can be hosted in: • Internet Information Services (IIS) • Very similar to web services • Windows services • Exposing windows service in style of WS • Console and Winform applications • New style for socket like functionality
Monitoring Services • Message Logging • WCF Performance counters • Calls, CallsOutsantding, CallsErrored, … • SecurityCallsNotAuthenticated, … • TxCommitted, TxAborted, … • RMSessionsStarted, RMSessionsFaulted, … • Windows Management Instrumentation (WMI), a COM technology
Other Topics • WCF Security • Credentials and claims (evidence) • Transport-level security • Message-level security • Federated security model • Authorization • Auditing
Reliable Messaging • ReliableSession enabled • Implemented at the SOAP level not TCP packet • Very similar to TCP functionality • Messages not sent are held in a Transfer Window cache • Will have problems with large messages • MSMQ Binding • Needs microsoft platforms on both ends • Supports store and forward
Other Features • WCF Supports transactions • ACID properties • Atomicity • composite operations treated as a unit • Consistency • Operations succeed or the system is returned to prior state • Isolation • Each transaction is independent and isolated from other transactions • Durability • If an operation succeeds it becomes durable, e.g., committed to a database or other persistant store
Conclusion • Convergence of programming models • Desktop Application • Web Application • Windows Services • Flexible hosting options • Flexible abstractions