【问题标题】:How to make an Asynchronus call to WCF service from a smart device application?如何从智能设备应用程序对 WCF 服务进行异步调用?
【发布时间】:2012-06-20 00:53:34
【问题描述】:

我正在开发一个智能设备应用程序,它将通过 wi-fi 与 wcf 服务进行通信。由于无法将服务引用添加到智能设备项目中,我决定使用 NetCFSvcUtil.exe。一切都很好!

但是……

最后我明白了应用程序必须在后台与服务交互。 阅读了这篇文章Microsoft .NET Compact Framework Background Processing Techniques。我决定使用异步 Web 服务调用。 http://msdn.microsoft.com/ru-ru/library/aa347733.aspx 我找到了 /async 参数,但它似乎不适用于 NetCFSvcUtil.exe。

如何为我的智能设备应用程序获取异步代理?有没有办法生成它,或者我应该用我自己的双手将异步方法添加到接口中?也许.Net CF 适合使用 SvcUtil.exe 在我的情况下生成异步代理?

【问题讨论】:

  • 为我自己发现了一个使用来自网站的 Web 引用的机会,它代表 wcf 服务。尚未测试...但它会限制我在 IIS(或 smth)上托管服务吗?最初的想法是将其托管在 Windows 服务中。目标系统不会有 IIS,并且不会因为管理而变得复杂。
  • 您使用的是什么版本的设备,是什么开发工具(Visual Studio?)和版本?
  • 我们使用 Visual Studio 2008(因为 VS 2010 不支持智能设备项目)。我不知道确切的设备,但它的操作系统将是 Windows Mobile 6

标签: c# wcf asynchronous windows-mobile compact-framework


【解决方案1】:

更多信息,例如您使用哪个平台来构建您的智能手机应用程序会有所帮助。

我做过黑莓开发并使用过网络服务。您可以通过两种方式构建 Web 服务

  1. RestFul 服务 - 使用 Web 服务将非常容易。由于多部分表单数据在 Wcf - Rest Starter Kit 中作为流发布,因此发布数据可能会有些麻烦

  2. Soap 服务 - 如果您决定使用 SOAP,那么对于黑莓和 Android,您必须使用预先验证的 KSOAP -2 在您的应用程序和 Web 服务之间发送和接收肥皂消息。如果您决定使用 KSOAP -2 ,请返回 ASMX 服务。不知何故,WCF 服务不与 KSOAP -2 通信(由于 SOAP 版本或其他东西的变化),而简单的 ASMX 服务工作得非常顺利。有几十篇文章可供您学习如何使用 KSOAP

他最初的想法是将其托管在 Windows 服务中...

Windows 服务永远不会面向 Web。如果你想让任何东西面向网络,你需要一个网络服务器!

【讨论】:

  • 客户端的目标平台是 Windows Mobile。应用程序类型是-windows forms..该服务将被相关客户端使用。问题是我想生成服务的异步操作。
  • 看看这个。看起来很有希望redigokaj.com/…
  • Web 不是目标,它似乎是只生成那些异步操作的手段。但这可能会导致其他一些限制,不是吗?我的意思是,我是否可以只使用 IIS 来为我的智能设备项目添加 Web 引用,然后将服务部署到其他地方(控制台应用程序、Windows 服务等)?那么客户端能与之通信吗?
  • 哎呀,从我现在的位置,很遗憾不能看视频,只能过一段时间了..
  • 如果我对您的问题的理解有误,请纠正我。有一些任务,您想在后台执行。您希望将此任务删除到某些服务,因为您不想让手机过载。我能问一个问题吗?您要执行的此处理任务是什么。有一些方法可以直接在 Windows Mobile 的后台线程中执行操作,这样 UI 就不会幸灾乐祸。此外,如果您想要服务,那么它必须在网络上,否则远程定位的其他聪明人将无法与它通信
【解决方案2】:

最终成功了。 “添加 Web 引用”工具使用 Begin/End 异步方法创建了一个代理,并且该代理通过代理的 URL 属性与由简单控制台应用程序(后来的 Windows 服务)托管的 wcf 服务交互。

【讨论】:

    猜你喜欢
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    相关资源
    最近更新 更多