目前,我正在为简单的跨平台移动应用程序选择技术。目标系统基本上是iOS,Windows Phone 7.5和Windows 8.第一步,它将成为本地无线局域网应用程序。
现有服务器(使用.net / WCF)具有我想要显示的所有数据。该应用程序将每隔几秒进行一次轮询,并对数据进行实时查看。我不会直接访问数据服务器,但必须在两者之间创建自己的app-server。
对于客户端,我选择HTML5,CSS,JavaScript(JQuery)方法使其在任何现代浏览器中运行。所以我必须通过http进行沟通。
我的问题是我的应用程序的服务器端使用哪种技术。我必须接收http请求,从另一台服务器获取数据(最好通过WCF)并将其作为xml或html发送到客户端。 (我不太确定服务器或客户端是否必须将xml数据转换为html)
在网上搜索我找到了两种可能的方法:
看一些ASP.net文档和示例我得到的印象是它只是按照我从PHP等方式知道的方式工作...(客户端发送请求,服务器运行脚本/程序,服务器发送响应,程序终止)I无法将对象保留在内存中并独立于客户端请求运行代码。或者至少它的设计不是那样的。这是对的吗?
这将迫使我构建自己的非常简单的服务器,可以回答一些特定的http请求。
所以我的问题是:
提前致谢...
答案 0 :(得分:3)
您可以查看APE (Ajax push Engine),因为您的应用需要轮询。它建立在javascript之上,就像Comet服务器一样。
或者您也可以使用其中一种付费服务进行推送(这样您就不必担心服务器技术了)
1)Pusher
(来自pusher主页: Pusher是一个托管API,可以快速,轻松,安全地为网络和移动应用添加可扩展的实时功能。)
正如@Fabio所提到的,Python Tornado可以替代地用于轮询。它是一个COMET服务器,并且在此基础上构建了许多实时Web应用程序。使用 NodeJs 进行轮询时,可以使用许多教程。一个简单的谷歌搜索引导我进入article.
答案 1 :(得分:3)
通过移动设备访问时的数据成本很高。所以,我更愿意使用JSON / XML通过网络发送数据。将使用RESTful方法在.NET堆栈中使用WCF Restful services / ASP.NET Web API检索数据。此外,如果您考虑使用电池,则应避免轮询,并应使用信令框架。在.NET堆栈中,我们有SignalR这样做。这将在新数据可用时通知客户端,客户端将发起新请求以获取数据。
如果您想尝试新技术,我建议在服务器端使用node.js并在socket.io使用客户端进行信令逻辑通信。此外,我更愿意使用手机差距&编写客户端应用程序。 javascript所以,它可以很容易地移植到各种平台。
答案 2 :(得分:2)
有无数的网络技术可以做到这一点,但对我而言最突出的是:
现有服务器(使用.net / WCF)包含我想要显示的所有数据。
所以你已经开始使用.net了,我不禁想到从.net / WCF服务器获取数据的最快方法是使用.net / WCF客户端。
仅仅因为这个原因,我会选择asp.net MVC。为您提供快速简便的数据获取途径,同时为您提供处理“V”部分(直接HTML页面,带有xml数据的jjax或json等)的灵活性。
就在上个月,asp.net mvc是在Apache 2.0开源许可下发布的。
对于你的用例,我会远离asp.net webforms和asp.net ajax
编辑:
我无法将对象保留在内存中并运行独立于客户端请求的代码。或者至少它的设计不是那样的。这是对的吗?
ASP.net(与许多应用程序服务器一样)具有可以存储数据的会话和应用程序范围。 您还可以创建后台线程以执行标准请求之外的工作 - >响应lifycycle。
答案 3 :(得分:0)
我能说的是:
使用ALWAYS开源技术:-)。 有很多库/框架可以编写非常好的Web服务器但是如果你需要高功能,我可以建议使用基于事件的框架而不是基于线程/进程的框架。
Node.js(由@withadot说)但是Python Tornado也是一个不错的选择。