WCF REST服务和Windows Phone应用程序之间的消息传递

时间:2014-09-21 22:01:44

标签: c# wcf rest session windows-phone

我想为Windows Phone 8.1实现一些类似即时消息的应用程序,我有一个连接到MySQL数据库的WCF REST服务(我知道,SQL Server会更好,但为MySQL租用服务器更便宜......:D),用于存储用户等。

我知道REST是无状态的,但我想实现一些类似于会话的方法,以使我的Web服务能够通过服务立即将传入的消息传递给收件人(向Web服务发送消息/请求不是问题)。

所以我的问题是,你建议我做什么技术/解决方案?

我的基本概念是:

  • 来自WP的用户注册 - 服务将数据保存到db
  • 用户从WP登录 - 我需要一些像数据这样的会话,让服务器知道它应该在哪里发送消息(例如用户的guid,ip地址或其他东西,这些信号指示用户是虽然应用程序暂停并在后台运行,但仍能在线,但仍然可以接收消息)
  • 用户从WP向其他服务发送消息,其中应包含有关发件人的数据(至少是用户的指南,但不想在客户端存储太多关于用户的数据),收件人,内容,时间戳等)通过发送http请求,例如使用如下的uri模板:message/send,并在请求正文中有收件人的ID,内容等
  • 用户添加联系人
  • WCF服务接收请求,处理它,通过它的guid识别发送给接收者,并且出现问题,应该知道关于设备,IP地址或会话或类似的东西
  • 收件人收到邮件。

我希望我能正确描述我的问题,并且会有人能帮助我^^

我很感激任何帮助!

提前致谢!

1 个答案:

答案 0 :(得分:0)

有几种方法可行。

  1. 使用Microsoft的推送通知服务(MPNS)。 Here’s an overview。这是最省电的方式,您的用户甚至可以在您的应用未运行时接收消息。

  2. 使用Microsoft的Windows通知服务(WNS)。它仅在WP 8.1上受支持,但延迟很多更好(AFAIR承诺在5秒内交付时间)。

  3. 或者,您可以使用一些双向协议。选择:

    • WCF服务器+ net-tcp传输:在客户端上,您必须自己实现绑定+框架+ SOAP,协议的更高级别(二进制XML序列化)在框架中。
    • 通过TCP的Google协议缓冲
    • WebSockets:MS支持8.1 SDK,第三方可用于WP Silverlight
    • SignalR:第三方实施可用