WCF开发笔记(一)


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的 C# WCF 服务的例子: 首先,在 Visual Studio 创建一个新的 WCF 服务应用程序项目。然后,在服务契约定义一个简单的操作: ```C# [ServiceContract] public interface IMyService { [OperationContract] string GetMessage(string name); } ``` 这个操作接受一个字符串类型的参数,返回一个字符串类型的消息。 接下来,在服务实现实现这个操作: ```C# public class MyService : IMyService { public string GetMessage(string name) { return "Hello, " + name + "!"; } } ``` 这个实现接受一个字符串类型的参数,返回一个拼接了该参数的消息。 然后,在配置文件定义一个终结点: ```XML <system.serviceModel> <services> <service name="MyService"> <endpoint address="http://localhost:8080/MyService" binding="basicHttpBinding" contract="IMyService"/> </service> </services> </system.serviceModel> ``` 这个终结点定义了服务的地址、绑定和契约等信息。 最后,在 host 启动服务: ```C# ServiceHost host = new ServiceHost(typeof(MyService)); host.Open(); ``` 这个 host 启动了 MyService 类型的服务。 现在,WCF 服务已经启动并且可以接收客户端的请求。在客户端,你可以使用类似下面的代码来调用服务: ```C# ChannelFactory<IMyService> factory = new ChannelFactory<IMyService>( new BasicHttpBinding(), new EndpointAddress("http://localhost:8080/MyService")); IMyService proxy = factory.CreateChannel(); string message = proxy.GetMessage("World"); Console.WriteLine(message); ``` 这个客户端创建了一个 IMyService 类型的代理对象,并调用了它的 GetMessage 方法,将 "World" 作为参数传递,并将返回的消息打印到控制台上。 这就是一个简单的 C# WCF 服务的例子,它展示了如何定义服务契约、实现服务操作、配置服务终结点和启动服务 host。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值