HTML5网络应用程序-选择服务器端技术

HTML5 web app - Choosing serverside technology

本文关键字:服务器端 技术 选择 网络 应用程序 HTML5      更新时间:2023-09-26

现在,我正在为一个简单的跨平台移动应用程序选择技术。目标系统基本上是iOS、Windows Phone 7.5和Windows 8。在第一步中,它将成为一个本地无线局域网应用程序。

现有的服务器(使用.net/WCF)包含了我要显示的所有数据。该应用程序将每隔几秒钟进行一次轮询,并实时查看数据。我不会直接访问数据服务器,但必须在两者之间创建自己的应用程序服务器。

对于客户端,我选择了HTML5、CSS、JavaScript(JQuery)方法,使其在任何现代浏览器中运行。所以我必须通过http进行交流。

我的问题是我的应用程序的服务器端使用哪种技术。我必须接收http请求,从另一台服务器获取数据(最多通过WCF),并将其作为xml或html发送到客户端。(我不太确定服务器或客户端是否必须将xml数据转换为html)

在网上搜索时,我发现了两种可能的方法:

  • ASP.net
  • 使用WCF构建我自己的简单http服务器

看了一些ASP.net文档和示例,我得到的印象是,它只是按照我从PHP等中了解的方式工作……(客户端发送请求,服务器运行脚本/程序,服务器发送响应,程序终止)我无法将对象保存在内存中,也无法独立于客户端请求运行代码。或者至少它不是这样设计的。这是正确的吗?

这将迫使我构建自己的非常简单的服务器,它可以回答一些特定的http请求。

所以我的问题是:

  • 我对ASP.net的假设正确吗?还是我做错了什么
  • 将是一个自己的http服务器的方式去
  • 你能推荐其他方法吗(在微软/.net的世界里)

提前感谢。。。

您可以查看APE(Ajax推送引擎),因为您的应用程序需要轮询。它建立在javascript之上,就像一个Comet服务器。

或者,你也可以使用一种付费服务来推送(这样你就不必太在意服务器技术)

1) 推进器

(来自推送器主页:推送器是一个托管的API,用于快速、轻松和安全地向网络和移动应用程序添加可扩展的实时功能。

2) UrbanAirship

正如@Fabio提到的那样,Python Tornado也可以用于轮询。它是一个COMET服务器,许多实时web应用程序都是基于此构建的。有许多关于NodeJs轮询的教程。通过简单的谷歌搜索,我找到了这篇文章。

通过移动设备访问数据的成本将很高。因此,我更喜欢使用JSON/XML通过有线发送数据。将使用RESTful方法在.NET堆栈中使用WCF RESTful服务/AASP.NETWeb API检索数据。此外,如果您要考虑电池使用情况,则应避免轮询,并应使用信令框架。在.NET堆栈中,我们有SignalR来执行此操作。这将在新数据可用时通知客户端,并且客户端将发起获取数据的新请求。

如果你想尝试新技术,我建议在服务器端使用node.js和socket.io从客户端进行通信,以获得信号逻辑。此外,我更喜欢使用phone gap&javascript,这样它就可以很容易地移植到各种平台上。

有无数的网络技术可以做到这一点,但对我来说最突出的是:

现有的服务器(使用.net/WCF)包含了我要显示的所有数据。

所以你已经有了.net,我忍不住想,从.net/WCF服务器获取数据的最快方法是使用.net/WCW客户端。

仅凭这个原因,我就选择asp.net MVC。为您提供了一条快速简便的获取数据的途径,同时让您在处理"V"部分(直接的HTML页面、带有xml数据或json的ajax等)方面有很大的灵活性

就在上个月,asp.net mvc在Apache2.0开源许可证下发布。

对于您的用例,我会远离asp.net webforms和asp.net ajax

编辑:

我无法将对象保存在内存中,也无法独立于客户端请求运行代码。或者至少它不是这样设计的。这是正确的吗?

ASP.net(像许多应用程序服务器一样)既有会话作用域,也有可以存储数据的应用程序作用域。您还可以创建后台线程来执行标准请求->响应生命周期之外的工作。

我能说的是:

使用ALWAYS开源技术:-)。有几十个库/框架可以编写非常好的Web服务器,但如果你需要高cuncurrency,我可以建议你使用基于事件的框架,而不是基于线程/进程的框架。

Node.js(正如@withadot所说)和Python Tornado都是不错的选择。