• 我的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就搞定啦。

  • 相关阅读:
    考研打卡_Day049
    考研打卡_Day048
    【生活】2017 开始!
    朝花夕拾-android 自定义toast
    朝花夕拾-android 获取当前手机的内存卡状态和网络连接状态
    android media server 解析1-media player service 结构部分
    android binder 进程间通信机制6-Binder进程间通信机制的JAVA接口
    android binder 进程间通信机制5-Service注册和代理对象的获取
    android binder 进程间通信机制4-Service Manager
    android binder 进程间通信机制3-Binder 对象生死
  • 原文地址:https://www.cnblogs.com/cangfriend/p/1553167.html
Copyright © 2020-2023  润新知