我的Window Mobile WCF 項目 第二篇 WindowsMobile访问WCF
2009-08-24 20:29
141 查看
.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就搞定啦。
这里开始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就搞定啦。
相关文章推荐
- 我的Window Mobile WCF 項目 第三篇 WM窗体设计
- 我的Window Mobile WCF 項目 第六天
- 我的Window Mobile WCF 項目 第七天
- 我的Window Mobile WCF 項目 第六天 (二)
- 我的Window Mobile WCF 項目 第一篇Mobile开发和WinForm开发的区别
- Microsoft Mobile访问WCF服务的例子
- Microsoft Mobile访问WCF服务的例子
- Silverlight访问Window服务为宿主的WCF跨域问题解决方案.
- linux下搭建svn仓库,window下访问
- window.showModalDialog跨域访问获取返回值
- Android访问WCF服务(上篇)-服务端开发
- 使用WCF数据访问服务(第十九课)
- WCF服务以控制台程序为宿主时的跨域访问问题(附源码) (转载)
- WCF无法访问问题(跨域安全性)
- WCF部署到IIS:证书必须具有能够进行密钥交换的私钥,该进程必须具有访问私钥的权限
- Wcf 可以公网访问的配置文件
- Window server 2008下部署apache-tomcat-5.5.31项目通过localhost可以访问而通过IP无法访问
- WCF客户端无法访问服务原因之二:连接数问题
- 脚本中出现 window.open() access is denied - 拒绝访问 情况一则及分析