1.在使用vs2008开始建立wcf项目的时候,会在项目中出现app.config文件,建立的这个wcf
library是可以直接通过vs2008集成的工具WcfTestClient.exe进行调试的,但是如果使用到
了DataTable等数据类型的话,就不能使用这个工具进行调试了。需要自己写数据契约了。
vs2008很方便,但是带给初学者一个误区就是在契约类库里进行配置,由于上面也说了会自
动出现app.config文件,这个配置应该在host中进行。这里为什么会有app.config呢?由于
需要通过WcfTestClient.exe进行调试,所以建立项目的时候就出现了这个配置。
2.在传递DataTable的时候需要给DataTable的TabelName赋值,或者装在DataSet中进行传输
。
3.在客户端创建代理类的时候有两种方式,第一种就是使用ChannelFactory,第二种就是直
接在项目中进行服务引用,这里具体讲述一下第一种方式:
使用ChannelFactory创建代理需要的条件
(1 服务端点的地址,即在宿主中用程序设置的或是配置文件中设置的。
(2 服务端点的绑定协议。
(3 服务契约的元数据,可以将服务契约复制一份到客户端或是在客户端添加对服务的引用。
下面的代码示例为通过ChannelFactory手动创建代理
EndpointAddress ea =
new EndpointAddress("http://localhost:10000/Service/HelloWorldService");
IHelloWorldService proxy =
ChannelFactory<IHelloWorldService>.CreateChannel(new BasicHttpBinding(),ea);
EndpointAddress:端点地址,该类的实例作为CreateChannel方法的一个参数,实例化
EndpointAddress时给的地址要和宿主中设置的地址一致。
IHelloWorldService:这个是服务契约在客户端的一个副本,不包含具体的实现。
ChannelFactory:一个服务模型类型,可以产生客户代理和基础信道栈,使用该类的
CreateChannel可以生成代理,有两个参数,绑定类型和端点地址,绑定类型和端点地址要和
宿主中设置的一致。
4.EndPoint包含ABC,其中B表示Binding,B中包含了具有各自功能的BindingElement,比如
:安全、消息编码等。BindingElement管理两个对象ChannelFactory和ChannelListener。
5.Wcf中的会话管理有percall,session,single,个人认为可以和asp.net中的开发进行比较
percall看做page,session就看做asp.net的session,不过wcf的sesion是在客户端,
asp.net的session是在服务端,wcf的session进行开始和消亡控制,single可以看做
application