WCF wince的应用
目前.NET CF3.5预定义的仅支持BasicHttpBinding和WindowsMobileMailBinding两种方式:
1) BasicHttpBinding,从本质上来讲,基本和原来调用Web Service的方式一样,因为它支持在http下进行传统的C/S互操作,客户端只需发出一个服务请求并等待回应。
2) WindowsMobileMailBinding,这是一个Compact WCF中全新的通信方式,它使用Email作为消息传输的载体,提供了一个全双工的通讯信道,允许进行非可靠的双向异步通信
cf3.5不支持net.tcp的应用,故有些相关的TCP协议就必须通过传统的方式进行代码的编写了。
代理类
对于cf3.5的webservice的代理类,可以通过添加web服务引用,然后把References.cs这个类提取出来获得
而对于wcf我们就只能借助使用Power Toys的NetCFSvcUtil.exe工具生成客户端代理类。Power Toys下载地址http://115.com/file/be1mgii1
安装Power Toys后,可以在cmd下
C:\Program Files\Microsoft.NET\SDK\CompactFramework\v3.5\bin\netcfsvcutil.exe
这样我们就可以用
netcfsvcutil.exe /language:cs http://127.0.0.1/web.svc来生成代理类
这样就能生成两个文件CFClientBase.cs和web.cs两个文件
这2个文件中就包含接口方法的调用.
此工具不会像桌面 svcutil.exe 工具那样生成 App.config 文件,cf3.5不支持通过配置文件对 WCF 进行配置,因此服务的所有端点信息都需要在代码中。
客户端可以创建一个静态方法用来返回对于服务器的调用
public static WebClient GetSvc()
{
System.ServiceModel.Channels.Binding bind = WebClient.CreateDefaultBinding();
string remoteAddress = WebClient.EndpointAddress.Uri.ToString();
EndpointAddress endpoint = new EndpointAddress(remoteAddress);
WebClient= new WebClient(bind, endpoint);
return client;
}
//调用GetString方法
public static string GetString()
{
return GetSvc().GetStriing();
}