我的Window Mobile WCF 項目 第二篇 WindowsMobile访问WCF

.CF.NET2时可以访问WebServer,我还只是写着玩。在学习VS2008是,在看到.net 3.0以后的新东西,WCF,WPF,WF等,WCF还只有一本中文书,Oreilly出版的翻译版,赶快买来,大多数都看不懂,在Oreilly网站上看到,这是比较高级的还有一本初级的LearningWCF,还没有翻译过来(出来后有第一时间买了),赶快从CnBlogs上找初级教程,找了好多,我是从这时才加入CnBlogs的(为了学习WCF才加入的Cnblogs,从此这里是我每次上网必看的地方),HelloWorld搞定后,有继续写怎么访问数据库,由于我之前用的是Delphi,又找怎么用Delphi访问WCF,写了几篇简单的,见我的随笔。

这里开始WM访问WCF.

在WinForm中,有Service References,可以自动感应WCF,就不用写代码访问WCF啦,在WM中没有Service References这个功能,只有Web References,可以自动感应WebService,不能用来访问WCF,(我记得的WCF可以WebService来访问,我用Delphi访问WCF和WebService是同样的方法,只是生成的代理类是不同的,我不知道WM可以不可以通过WebService的访问方式调用WCF,我没有测试,先记下来,随后要测试一下)。

我想在WM用写代码访问WCF,有了CnBlogs就变懒啦,哈哈,直接找找看,搜到好多,还要安装NETCFv35PowerToys.msi才能生成wm可以调用的代理类,从网上找了代码,拷贝过来,HelloWorld成功,哈哈,再写访问数据库。

代码如下

1. 要添加的单元

using System.ServiceModel;

using SMC = System.ServiceModel.Channels;

2. 定义变量

private ImyMobileTestClient client = null;

3. 访问代码

SMC.Binding binding = ImyMobileTestClient.CreateDefaultBinding();

string remoteAddress = ImyMobileTestClient.EndpointAddress.Uri.ToString();

remoteAddress = remoteAddress.Replace("localhost", "192.168.1.101");

EndpointAddress endpoint = new EndpointAddress(remoteAddress);

client = new ImyMobileTestClient(binding, endpoint);

现在就可以访问WCF啦

4. 返回DataSet太大的问题

我好多地方时直接返回数据集DataSet,有前辈说这是不可取的,我从书上看到,中间从最好用到‘移动对象’,我还不能实际应用,这又是一个我学习的目标,各位前辈指点一些代码,不胜感激。

在WinForm中,可以设定服务端和客户端MaxReceivedMessageSize = 9223372036854775807,在WM竟然不支持那么大,我试了一下,给设置成65536000在上边的代码,SMC.Binding binding,不支持MaxReceivedMessageSize我反复测试,修改代码入下

BasicHttpBinding binding2 = new BasicHttpBinding();

binding2.MaxReceivedMessageSize = 65536000;

。。。。。

client = new ImyMobileTestClient(binding2, endpoint);

没想到,被我蒙对啦,就没有了数据集大于65536的问题啦,

5. 补充一下代理类的生成,

安装NETCFv35PowerToys后,有如下C:\Program Files\Microsoft.NET\SDK\CompactFramework\v3.5\bin\NetCFSvcUtil.exe,

在Dos中手工生成代理类NetCFSvcUtil.exe 空格 *****?wsdl,直接在C:\Program Files\Microsoft.NET\SDK\CompactFramework\v3.5\bin生成了2个.cs文件,Copy到WM程式中,通过上面的方法,就可以访问WCF啦,别忘了把WCF启动起来

WM访问WCF就搞定啦。

原文地址:https://www.cnblogs.com/cangfriend/p/1553167.html