简介:
这是一个简单介绍EndPoint的例子。示例是按照Artech(www.cnblogs.com/artech)的讲解操作的。
示例演示了如何将一个服务通过自我宿主程序(通过代码和配置文件)和IIS(通过代码和配置文件)来承载宿主程序、自我宿主程序通过Http和Tcp进行绑定、并演示了如何在客户端通过这三种方式的EndPoint访问服务(通过代码和配置文件)。
Endpoint的结构
Endpoint包含以下4个对象:
* Address: Address通过一个URI唯一地标识一个Endpoint,并告诉潜在的WCF service的调用者如何找到这个Endpoint。
Address解决了Where to locate the WCF Service?
* Binding: Binding实现在Client和Service通信的所有底层细节。比如Client与Service之间传递的Message是如何编码的——text/XML, binary,MTOM;这种Message的传递是采用的哪种Transport——TCP, Http, Named Pipe, MSMQ; 以及采用怎样的机制解决Secure Messaging的问题——SSL,Message Level Security。
Binding解决的是How to communicate with service?
* Contract: Contract的主要的作用是暴露某个WCF Service所提供的所有有效的Functionality。从Message Exchange的层面上讲,Contract实际上是抱每个Operation转化成为相对应的Message Exchange Pattern——MEP(Request/Response; One-way; Duplex)。
Contract解决的是What functionalities do the Service provide?
* Behavior: Behavior的主要作用是定制Endpoint在运行时的一些必要的Behavior。比如Service 回调Client的Timeout;Client采用的Credential type;以及是否支持Transaction等。
我们只有在Client具有一个与Service端完全匹配的Endpoint,我们才能调用这个Service。
而这种匹配是比较严格的,比如从匹配Address方面,Client端和Service端的Endpoint Address不仅仅在URI上要完全匹配Service,
他们的Headers也需要相互匹配。对于Binding, 一般地,Client需要有一个与Service端完全一样的Binding,他们之间才能通信。
Address的结构
* URI:指定的Endpoint的Location。URI对于Endpoint是必须的。
* Identity:当另一个Endpoint与此Endpoint进行消息交互时,可以获取该Identity来Authenticate正在与之进行消息交互的Endpoint是否是它所希望的。Identity对于endpoint是可选的。
* Headers:Address可以包含一些可选的Headers, 这些header最终会加到相应的Soap Message的Header中。Header存放的多为Address相关的信息,用于进行Addressing Filter。
Address的主要作用就是同过Uri为Service提供一个监听Address。但在某些特殊的场景中,我们可以借助Address的Headers提供一些扩展的功能。
在大多数的情况下Client可以直接访问Service,换句话说,如果我们把Message 传递的路径看成是以系列连续的节点(Node)的话,Message直接从Client所在的节点(Node)传递到最终的Service的节点。
但在某些情况下,考虑的实现负载平衡,安全验证等因素,我们需要在Client和最终的Service之间加入一些中间节点(Intermediaries),
这些中间节点可以在Message到达最终Service Node之前作一些工作,比如为了实现负载平衡,它可以把Message Request分流到不同的节点——Routing;为了在Message达到最终Node之前,验证Client是否是一个合法的请求,他可以根据Message存储的Credential的信息验证该请求——Authentication。
这些Intermediaries操作的一般不会是Message Body的内容(大多数情况下他们已经被加密),而是Message Header内容。
他们可以修改Header的内容,也可以加入一些新的Header。所以为了实现Routing,我们需要在Message加入一些Addressing相关的内容,为了实现Authentication我们需要加入Client Credential的信息,
而这些信息都放在Header中。实际上你可以把很多内容加到Header中。
我们可以通过config文件加入这些Header:
服务端:
<service behaviorConfiguration="calculatorServieBehavior" name="Artech.WCFService.Service.DuplexCalculatorService">
<endpoint binding="wsDualHttpBinding" contract="Artech.WCFService.Contract.IDuplexCalculator">
<headers>
<role>admin</role>
</headers>
</endpoint>
<host>
<baseAddresses>
<add baseAddress="http://localhost:7777/DuplexCalculator" />
</baseAddresses>
</host>
</service>
客户端:
<client>
<endpoint address="http://localhost/WCFService/SessionfulCalculatorService.svc"
binding="wsHttpBinding" bindingConfiguration="" contract="Artech.WCFService.Contract.ISessionfulCalculator" >
<headers>
<role>admin</role>
</headers>
</endpoint>
</client>
Binding中的各个层次结构
Layer Options Required
Transactions TransactionFlowBindingElement No
Reliability ReliableSessionBindingElement No
Security SecurityBindingElement No
Encoding Text, Binary, MTOM, Custom Yes
Transport TCP, Named Pipes, HTTP, HTTPS, MSMQ, Custom Yes
没有合适的资源?快使用搜索试试~ 我知道了~
02.EndPoint的概览
共82个文件
pdb:16个
dll:12个
cs:12个
4星 · 超过85%的资源 需积分: 0 5 下载量 121 浏览量
2008-11-18
10:35:11
上传
评论
收藏 96KB RAR 举报
温馨提示
简介: 这是一个简单介绍EndPoint的例子。示例是按照Artech(www.cnblogs.com/artech)的讲解操作的。 示例演示了如何将一个服务通过自我宿主程序(通过代码和配置文件)和IIS(通过代码和配置文件)来承载宿主程序、自我宿主程序通过Http和Tcp进行绑定、并演示了如何在客户端通过这三种方式的EndPoint访问服务(通过代码和配置文件)。
资源详情
资源评论
资源推荐
收起资源包目录
WCFLearn2.rar (82个子文件)
WCFLearn2
Hosting
bin
Debug
Hosting.vshost.exe.config 1010B
MyContract.pdb 8KB
MyService.dll 4KB
Hosting.vshost.exe.manifest 490B
MyContract.dll 4KB
Hosting.exe.config 1KB
MyService.xml 294B
Hosting.XML 132B
Hosting.pdb 14KB
MyService.pdb 12KB
MyContract.xml 290B
Hosting.exe 7KB
Hosting.vshost.exe 14KB
obj
Debug
Hosting.pdb 14KB
TempPE
Hosting.csproj.FileListAbsolute.txt 951B
Hosting.exe 7KB
Properties
AssemblyInfo.cs 1KB
Program.cs 3KB
Hosting.csproj 3KB
App.config 1KB
WCFLearn2.sln 3KB
HostingByIIS
Service.svc 89B
HostingByIIS.csproj 4KB
bin
MyContract.pdb 8KB
MyService.dll 4KB
MyContract.dll 4KB
MyService.xml 294B
HostingByIIS.dll 4KB
MyService.pdb 12KB
MyContract.xml 290B
HostingByIIS.pdb 12KB
Web.config 8KB
obj
Debug
ResolveAssemblyReference.cache 5KB
HostingByIIS.csproj.FileListAbsolute.txt 831B
HostingByIIS.dll 4KB
TempPE
HostingByIIS.pdb 12KB
Properties
AssemblyInfo.cs 1KB
HostingByIIS.csproj.user 1KB
App_Data
Default.aspx 459B
Default.aspx.cs 507B
Default.aspx.designer.cs 835B
Client
bin
Debug
Client.exe 7KB
Client.pdb 18KB
MyContract.pdb 8KB
Client.XML 131B
MyContract.dll 4KB
Client.vshost.exe 14KB
MyContract.xml 290B
Client.vshost.exe.manifest 490B
Client.vshost.exe.config 670B
Client.exe.config 670B
GeneralCalculatorClient.cs 767B
obj
Debug
Client.exe 7KB
Client.pdb 18KB
Client.csproj.FileListAbsolute.txt 719B
TempPE
Properties
AssemblyInfo.cs 1KB
Program.cs 4KB
App.config 670B
Client.csproj 3KB
MyService
bin
Debug
MyContract.pdb 8KB
MyService.dll 4KB
MyContract.dll 4KB
MyService.XML 294B
MyService.pdb 12KB
MyContract.xml 290B
GeneralCalculatorService.cs 400B
obj
Debug
MyService.dll 4KB
Refactor
MyService.pdb 12KB
TempPE
MyService.csproj.FileListAbsolute.txt 686B
Properties
AssemblyInfo.cs 1KB
MyService.csproj 3KB
MyContract
bin
Debug
MyContract.XML 290B
MyContract.pdb 8KB
MyContract.dll 4KB
obj
Debug
MyContract.pdb 8KB
MyContract.csproj.FileListAbsolute.txt 472B
MyContract.dll 4KB
Refactor
TempPE
MyContract.csproj 3KB
Properties
AssemblyInfo.cs 1KB
IGeneralCalculator.cs 365B
WCFLearn2.suo 41KB
说明.txt 4KB
共 82 条
- 1
-LanPei-
- 粉丝: 13
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论2