【问题标题】:Xamarin, return WCF data to PCL from specific platform librariesXamarin,将 WCF 数据从特定平台库返回到 PCL
【发布时间】:2016-10-29 13:34:30
【问题描述】:

我正在开发一个客户端/服务器项目,但很难让它工作,主要是因为在 PCL 中无法访问System.ServiceModel

不过没关系,我设法使用从 PCL 调用的DependencyServices 来管理每个特定平台与服务器的连接。

我的问题是,例如,一旦我打电话

var result = DependencyService.Get<Interface>().Operation(param);

这将转到特定于平台的,在那里我正在做绑定、端点并从 WCF 调用真正的操作,即异步,所以从现在开始我不能在这个方法中从 WFC 返回结果,因为这将是操作完成后返回另一个方法。

我的目标是在 PCL 上完成大部分工作,因此我不必为每个平台多次编写界面。因此,在简历中,我需要一种从我的 PCL 中的服务器(WCF 或其他可以使其工作的)返回结果的方法。

【问题讨论】:

  • 你可以使用另一个接口和依赖注入来做到这一点。顺便说一句,我在 PCL 中使用所有 WCF 调用,不知道为什么它不适合你。您使用的是 XForms 还是 Classic?
  • 如果你调用的函数是异步的,如果你等待,结果将返回给同一个调用者。问题是什么?你能分享更多的函数定义和调用代码吗?
  • @YuriS 我正在使用 XForms。当我将 service.cs 放入 MyApp(Portable) 时,我收到类似 名称空间“System.ServiceModel”中不存在类型或名称空间名称“...”的错误...。如果我把它放在 MyApp.Droid 项目上它可以正常工作,所以我认为它在 PCL 中不起作用。希望你能解决这个问题。
  • 我在表格上试了一下,效果很好。你如何生成你的代理?我使用 VS 并且可以正常工作
  • @YuriS 没有太多要分享的代码,我只是创建了一个简单的 Xamarin 项目,我正在尝试管理应用程序和服务器之间的简单连接。我按照Xamarin tutorials 创建了 WCF,它很好,直到它开始使用特定于平台的工作,这是我不想要的。

标签: c# wcf xamarin


【解决方案1】:

使用 VS 在 PCL 中创建 WCF 代理/客户端并避免所有这些问题

如果您的选项中没有服务参考,请检查库设置

【讨论】:

  • 服务参考仅在您未选择 windows phone 8.1 时显示
  • 所以,我使用 silverlight 生成代理的方式也可以,但是您不能针对 Windows 手机,因为如果我这样做,我将无法使用 System.ServeModel
  • silverlight 生成代理也适用于便携式库。这是一个多一点的工作,但可行。我只关心 windows phone 8.0,所以服务参考对我有用
猜你喜欢
  • 2017-07-08
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多