【问题标题】:Monotouch WCF (wshttpbinding)Monotouch WCF (wshttpbinding)
【发布时间】:2012-09-02 02:03:35
【问题描述】:

我没有发现关于 monotouch 的 wcf 支持。我需要使用用户身份验证为 iphone 创建 Web 服务。我想使用 wshttpbinding。

monotouch 是否支持 wcf wshttpbinding?如果没有,我如何通过身份验证创建 Web 服务,在寡妇 (C#) 上创建服务器端,在 iphone 上创建客户端 (monotouch)

非常感谢

【问题讨论】:

  • 如果 Web 服务是基于服务器的,为什么在客户端上也需要同样的服务?

标签: xamarin.ios


【解决方案1】:

Mono 目前不支持 WSHttpBinding,这是一项正在进行中的工作,而且支持非常参差不齐。

您可以通过 HTTPS 使用普通 SOAP(来自 .NET 1.0 和 .NET 2.0 的 Web 服务堆栈)。

但是由于您刚刚开始,您不妨使用带有 JSon 或 XML 返回值的 REST 服务。许多人现在使用 Json 作为这种连接的通用语言,因为它具有额外的优势,您可以使用相同的网桥来创建基于 HTML 的应用程序,因为 Json 输出可以直接馈送到浏览器上的 javascript。

对于服务器,你可以使用 ServiceStack 之类的东西:

http://www.servicestack.net

对于客户端,您可以使用 System.Json 手动解析 Json,这是一个非常低级的准系统堆栈,或者您可以使用 Newtonsoft 的 Json 解析器,它带有完整的反序列化器和对象映射器。

【讨论】:

    【解决方案2】:

    在最新版本的 Monotouch 中,它确实可以工作。您需要使用 Silverlight 4.0 SDK 生成一个 WCF 类,如果您有 Visual Studio,它将在您的 Windows PC 上。

    这是我用来生成 TimeSheet 类的内容(在 Windows 的 CMD shell 中运行):

    slsvcutil.exe http://localhost/QQQQQ/Timesheet.svc?wsdl /namespace:"*,General"  /d:z:\desktop /noConfig  /ser:DataContractSerializer
    

    然后将其复制到您的 Monotouch 项目中并像这样调用它:

    BasicHttpBinding binding = new BasicHttpBinding (settings.WCFBasicHttpSecurityMode ());
    var svc = new TimesheetServiceClient (binding, new EndpointAddress (settings.AddressServiceUrl ()));
    

    请注意,所有服务调用都是异步的。您需要像这样订阅他们的事件回调:

    svc.GetTimesheetsCompleted += GetTimeSheetsComplete;
    

    【讨论】:

    • 我对在 HTTPS 上运行服务并进行一些身份验证时如何设置凭据有疑问。并且当我尝试您的解决方案时,我在应用启动时得到“模块中的类无法加载”。
    • 当我尝试该方法时,我得到“内容类型 text/xml;charset=utf-8 不受服务支持”:-)
    【解决方案3】:

    我也在尝试将 WCF 实现到 MonoDroid 中。我认为它和 MonoTouch 没有太大区别。而且经过研究,除了BasicHttpBinding之外,我找不到任何其他WCF绑定模式的支持。

    老实说,我一点也不擅长 WCF,所以我只是随机尝试了一些方法。我可以使用字符串和字节 [] 等从服务器获取消息,但是当我想上传大数据时,例如。图片或音频,上传的包含大字节[]的消息必须限制在8192字节以下。这导致我上传失败。

    现在我必须想其他方法来解决手机上传大文件的问题。

    而且不让所有动作都完全在 WCF 编码中实现真的是一个很大的遗憾和问题。

    希望 Mono 改进它。如果有任何帮助,欢迎和赞赏。

    【讨论】:

      【解决方案4】:

      我建议使用 asp mvc 创建您的 Web 服务,并提供一个 XML 文件作为输出,您可以使用 monotouch 解析该文件。 您可以使用 ASP 攻击您从头开始创建的 webService 并获取流 XML

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-09
        • 2011-09-25
        • 1970-01-01
        相关资源
        最近更新 更多