Indigo 101: - bruce's LAPD See

Download Report

Transcript Indigo 101: - bruce's LAPD See

A Lap Around the Windows
Communication Foundation
Omri Gazitt
COM202
Group Program Manager
Connected Systems Division
Microsoft Corporation
1
PRESENTATION
Presentation Framework
System.Windows (3.0)
DATA
ASP.NET
ADO.NET
System.Web (2.0)
Compilation
Configuration
Handlers
Hosting
Mail
Management
Security
UI (2.0)
Util
System.Data
Common
Odbc
OleDb
OracleClient
Sql
SqlClient
Annotations
Automation
Controls
Data
Documents
Ink
Interop
Navigation
Resources
Serialization
Shapes
Printing Subsystem
Threading
System.Printing (3.0)
System.Windows.Media (3.0)
GDI+
3D
System.Drawing
Animation
Design
Imagine
Drawing2D
Windows Forms
Printing
System.Windows.Forms (2.0)
Design
Layout
VisualStyles
COMMUNICATION
Language Integrated Query
System.Query (F)
System.Data.DLinq (F)
System.Xml.XLinq (F)
System.Expressions (F)
Windows File System
System.Storage (F)
Windows Communications Foundation
System.ServiceModel (3.0)
Channels
Configuration
Diagnostics
Integration
System.ServiceModel.Security(3.0)
Core
Audio
ASP.NET Data Management
Calendar
System.Web
Contacts
Caching
Documents
Profile
Image
SessionState
Media
Messages
XML Data
Rules
System.Xml
Sync
Schema
Video
Serialization
XPath
XPS Documents
Xsl
System.Windows.Xps (3.0)
System.IO.Packaging (3.0)
Protocols
Tokens
Windows Workflow Foundation
System.Workflow (3.0)
System.Workflow.Activities (3.0)
Rules
System.Workflow.ComponentModel (3.0)
Complier
Desinger
Serializaztion
System.Workflow.Runtime (3.0)
Hosting
Messaging
Network Class Library
System.Net
Cache
Mail (2.0)
Network Information (2.0)
Security (2.0)
Sockets
ASMX Web Services
System.Web.Services
Identity Management
Microsoft.InfoCards (3.0)
MSMQ
.NET Remoting
System.Messaging
System.Runtime.Remoting
Directory Services
.NET Remoting
System.DirectoryServices
System.Runtime.Remoting
Speech Integration
System.Speech (3.0)
Recognition
Synthesis
FUNDAMENTALS
BASE CLASS
LIBRARIES
System
System.Text
System.CodeDom
System.ServiceProcess
System.Resrouces
System.Text
AccessControl
Managed Add-In
Framework
(2.0)
System.Addins (F)
Cryptography (2.0)
Contact
Permissions
Microsoft.Build (2.0)
System.Configuration Policy
Principal (2.0)
System.EnterpriseServices
System.Transactions (2.0)
System.ComponentModel System.Threading
System.Timers
System.Diagonostics
System.IO (2.0)
System.Text
Generic (2.0)
System.Reflection
Email
System.Runtime
CompilerServices
ConstrainedExecution(2.0)
InteropServices
Hosting
Serialization
Versioning
“ClickOnce” Deployment
System.Deployoment (2.0)
KEY
(2.0) (3.0) - New
WINDOWS VISTA
(2.0) - Substantially Improved
- Windows Presentation Foundation
(formerly codenamed “Avalon”)
- Windows Communication Foundation
(formerly codenamed “Indigo”)
2
- Windows Workflow Foundation
Windows Communication Foundation
The unified programming model for rapidly building serviceoriented applications on the Windows platform
Unification
Unifies today’s distributed technology stacks
Appropriate for use on-machine, cross
machine, and cross Internet
Service
Orientation
• Codifies best practices for building distributed
applications
Integration
Interoperates with applications running on other
platforms
Integrates with our own distributed stacks
3
Programming WCF 101
4
Clients and Services
Client
Service
Message
5
Endpoints
Client
Service
Message
Endpoint
Endpoint
Endpoint
Endpoint
6
Address, Binding, Contract
Client
Service
Message
C
B
A
A
B
C
A
B
C
A
B
C
Address
Binding
Contract
Where?
How?
What?
Endpoint
7
Creating Endpoints
Client
Service
Message
C
B
A
ClientChannel
A
B
C
A
B
C
A
B
C
ServiceHost
8
“Hello World” with WCF
9
Contract & Service Definition
[ServiceContract]
public interface IHello
{
[OperationContract]
string Hello(string name);
}
public class HelloService : IHello
{
public string Hello(string name)
{
return “Hello, ” + name;
}
}
10
Service Hosting
Self-host
class HelloHost
{
static void Main(string[] args)
{
ServiceHost host =
new ServiceHost(typeof(HelloService));
host.Open();
// Wait until done accepting connections
Console.ReadLine();
host.Close();
}
}
WAS/IIS-host
http://localhost/HelloService/HelloService.svc
<%@ Service Language=“C#” Class=“HelloService” %>
11
Service Configuration
<?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>
12
Client Implementation
class Client
{
static void Main()
{
IHello proxy = ChannelFactory.
CreateChannel<IHello>(“HelloEndpoint”);
string r = proxy.Hello(“Omri”);
Console.WriteLine(r);
}
}
<system.serviceModel>
<client>
<endpoint configurationName=“HelloEndpoint"
address="http://localhost/HelloService"
binding="basicHttpBinding"
contract="IHello" />
</client>
</system.serviceModel>
13
Programming WCF 102
Contracts
Bindings
Metadata
Behaviors
14
Indster
Amazon
WSDL
R/R
C
B
A
B
C
A
Basic
Indster Client
Indster Client
C
B
A
DuplexContract
Peer
C
B
Tcp
A
A
C
Peer
A
Request/Reply, OneWay
B
B
C
Tcp
Indster Service
C
B
WS
A
A
B
C
R/R
15
Contracts
16
Contracts in WCF
public class Order
{
public int orderID;
public int partNumber;
public int price;
public string info;
public void Process();
public GetInfo();
}
[DataContract]
public class Order
{
[DataMember]
public int orderID;
[DataMember]
public int partNumber;
[DataMember]
public int price;
[DataMember]
public string info;
}
[DataContract]
public class Query
{
[DataMember]
public int orderID;
}
[ServiceContract]
public interface
IOrderService
{
[OperationContract]
void Process(Order o);
[OperationContract]
Info GetInfo(Query q);
}
[DataContract]
public class Info
{
[DataMember]
public string info;
}
17
Describing Messages
Untyped
(“universal”)
Typed
Message
Parameters:
shorthand for
[MC]
void Chat(Message m)
{
}
void Chat(ChatRequest m)
{
}
[MessageContract]
public class ChatRequest {
[MessageHeader] public string Me;
[MessageBody]
public string Text;
}
void Chat(string name, string text)
{
}
18
Describing Messages
wsdl:message
wsdl:part
xsd:element
[MessageContract]
public class MyRequest {
[MessageBody] public UnitInfo Info;
[MessageBody] public bool IsInUse;
}
[DataContract]
public class UnitInfo {
[DataMember] public int ID;
[DataMember] public string Name;
}
19
Data Contracts and Types
Indster Client
Indster Client
C
B
A
Peer
C
B
Tcp
A
DataContract,
Parameters
A
C
Peer
A
Stream
B
B
C
Tcp
20
Describing Message Exchanges
ServiceContract ties
together multiple
operations
[ServiceContract]
wsdl:portType
wsdl:operation
OperationContract
ties together
Message Contract,
Action
public interface MyContract {
[OperationContract(
Action="urn:DoIt",
ReplyAction="urn:Done")]
MyReply DoIt(MyRequest request);
[OperationContract(
Action="urn:DoItAgain",
ReplyAction="urn:DoneAgain")]
Message DoIt(Message request);
}
21
Describing Message Exchanges
Request/Reply
[OperationContract]
string Echo(string text);
One-way
Message
[OperationContract(IsOneWay = true)]
void Chat(string text);
Duplex
Contracts
[ServiceContract(CallbackContract =
typeof(IChat)]
public interface IChat {
[OperationContract(IsOneWay = true)]
void Chat(string text);
}
Actions control
Dispatch
[OperationContract(
Action = “Foo”,
ReplyAction = “FooResponse”)]
Message Foo(Message request);
“*” matches all
actions
[OperationContract(Action = “*”)]
void Dispatch(Message request);
22
Request/Reply and Asynchrony
One-way messages modeled using
OneWay=true operation contracts
[OperationContract(IsOneWay = true)]
void Chat(Message request);
Correlated Request/Reply modeled either as
synchronous method
[OperationContract]
Message Chat(Message request);
or using IAsyncResult pattern
[OperationContract(AsyncPattern=true)]
IAsyncResult BeginChat(Message request,
AsyncCallback cb, object state);
Message EndChat(IAsyncResult call);
23
Service/Operation Contracts
Indster Client
Indster Client
C
B
A
Peer
C
B
Tcp
A
DuplexContract
A
C
Peer
A
Request/Reply
OneWay
B
B
C
Tcp
24
Contract Features
Service and Operation Contracts
Duplex, Sessionful MEPs
One-Way, Request-Reply, First/Last
Operation, Faults
MEP Versioning
Message and Data Contracts
Message Schema
Schema Versioning
Fine-grained Control
Action, Direction, Headers, Body,
Wrapped/Bare, RPC/Doc, Literal/Encoded
25
Bindings
26
Inside Bindings
Binding
HTTP
Transport
Text
Security
RM
TX
Protocol
Encoders
TCP
HTTP
Text
Security
RM
MSMQ
IPC
Binary
TX
.NET
Custom
Custom
Custom
27
Standard Bindings
Session
Transactions
T
T|S
T|S
T|S
T|S
T|S
T|S
X
X
X
X
X
X
X
X
X
X
X
X
X
Streaming
Security
BP 1.1
WS
WS
.NET
.NET
.NET
.NET
Duplex
Interop
BasicHttpBinding
WsHttpBinding
WsDualHttpBinding
NetTcpBinding
NetNamedPipesBinding
NetMsmqBinding
NetPeerTcpBinding
O
O
X
T = Transport Security | S = WS-Security | O = One-Way Only
28
Integration using Bindings
WCF
*
Binding
Binding
Http/WS
Binding
Java
WCF
WS-* Protocols
Http/WS
Binding
WCF
WS-* Protocols Http/WS
WCF
WS-* Protocols
Java
MSMQ Protocol
MSMQ
Binding
WCF
ASMX/WSE3
Binding
MSMQ
WCF
*
Binding
WS-* Protocols Http/WS
ASMX/WSE3
WCF
WS-* Protocols
MSMQ Protocol
MSMQ
Binding
WCF
MSMQ
29
Choosing Bindings
Bindings have semantics
Session, Duplex, Transaction Flow,
Transacted Read, Queued Delivery, Ordered,
Assurances
Asserting Semantic Requirements in Code
[ServiceContract]
[BindingRequirements]
30
C
B
A
Basic
Bindings
Indster Client
C
Peer Channel
COM311
Sandeep Singhal
Tue 2:45pm
WCF 4 XML-heads
COM326
Doug Purdy
Thu 5:15pm
B
A
Peer
C
B
Tcp
C
B
WS
A
A
“Under the Hood”
COM416
Steve Swartz
Wed 5pm
Writing Channels
COM424
YasserS / KennyW
Thu 3:45pm
31
Binding Features
Encoding
Text, Binary, Custom
Transport selection
TCP, HTTP, Named Pipes, P2P, MSMQ, Custom
End-to-end Security
Confidentiality, integrity, authN, authZ, federation
Credentials: X509, User/Pwd, Kerberos, SAML, InfoCard, Custom
End-to-end Reliable messaging
Transport independent QoS (in order, exactly once)
Volatile and durable queues for availability
Transactions
Shared transactions for “synchronous” operations
Transactional queues for “asynchronous” operations
32
Metadata
33
Describing Endpoints
Client
Service
GetMetadata
WSDL
Proxy.cs
C
B
A
C
B
A
A
B
C
A
B
C
app/web.config
34
Generating Proxies Using Svcutil
Amazon
WSDL
R/R
C
B
A
B
C
A
Basic
Indster Client
Interoperability
COM423
Kirill G / Simon G
Thu 2:15pm
35
Behaviors
36
Behaviors
Client
Service
Message
C
B
Be
Client
Behavior
A
A
B
C
A
B
C
A
B
C
Be
Service
Behavior
37
Example: Security
Secure Apps
COM312
Martin Gudgin
Wed 1:45pm
Client
Service
Message
C
B
A
Be
A
B
C
A
B
C
A
B
C
Be
Bindings Insert
Claims in
Messages
Infocards
COM321
Andy Harjanto
Thu 11:30am
Behaviors
Implement
Security Gates
Extending Security
COM430
Doug Walter
Fri 8:30am
38
Example: Reliable Messaging
Client
Service
Message
C
B
A
Bindings do
Ordering,
Sessions,
Guarantees
A
B
C
A
B
C
A
B
C
Reliable, TX Apps
COM307
Shy Cohen
Wed 3:15pm
39
Example: Transactions
Client
Service
Message
C
B
A
Be
A
B
C
A
B
C
A
B
C
Be
Bindings Flow
Transactions
Behaviors
AutoEnlist and
AutoComplete
Reliable, TX Apps
COM307
Shy Cohen
Wed 3:15pm
40
Using Behaviors
“Under the Hood”
COM412
Steve Swartz
Thu 10am
Extending SM
COM429
Mike Vernal
Fri 10:30am
41
Behavior Features
Concurrency, Instancing, Throttling,
Thread-Binding
Faults, Exceptions
Metadata customization
Instance Pooling and JITA
Impersonation, Protection, Authorization
AutoEnlist, Isolation, AutoComplete
42
Features Summary
Address
Binding
http://...
HTTP
Transport
net.p2p://...
Peer
Transport
net.tcp://...
net.pipe://...
net.msmq://...
xxx://...
WS-Security
Protocol
WS-RM
Protocol
NamedPipe
Transport
WS-Coord
Protocol
Custom
Transport
Request/
Response
Behavior
Instancing
Behavior
Concurrency
Behavior
Throttling
Behavior
TCP
Transport
MSMQ
Transport
Contract
Metadata
Behavior
One-Way
Error
Behavior
Transaction
Behavior
Custom
Behavior
Security
Behavior
Duplex
Channel
Duplex
Custom
Protocol
Externally visible,
per-endpoint
Opaque, per-service,
endpoint, or operation
43
More Resources
20 WCF or WCF-related sessions
Identity/Access
COM214
John Shewchuk
Wed 3:15pm
COM+/MSMQ
COM305
Andy Milligan
Wed 11am
Managing Services
COM308
Alex Weinert
Wed 1:45pm, 5pm
Hosting Services
COM413
Steve Maine
Fri 1pm
WCF Tips&Tricks
COM415
John Justice
Thu 10am
ASMX/WSE
COM432
Mark Fussell
Fri 8:30am
11 WCF Hands-on Labs
Communications Track Lounge
[email protected]
www.gazitt.com/blog (Indster code)
44
Please Fill Out An Eval!
© 2005 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
45