zoukankan      html  css  js  c++  java
  • 我的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就搞定啦。

  • 相关阅读:
    一行代码更改博客园皮肤
    fatal: refusing to merge unrelated histories
    使用 netcat 传输大文件
    linux 命令后台运行
    .net core 使用 Nlog 配置文件
    .net core 使用 Nlog 集成 exceptionless 配置文件
    Mysql不同字符串格式的连表查询
    Mongodb between 时间范围
    VS Code 使用 Debugger for Chrome 调试vue
    css权重说明
  • 原文地址:https://www.cnblogs.com/cangfriend/p/1553167.html
Copyright © 2011-2022 走看看