【问题标题】:HTML5 web app - Choosing serverside technologyHTML5 Web 应用程序 - 选择服务器端技术
【发布时间】:2023-03-26 20:57:01
【问题描述】:

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

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

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

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

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

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

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

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

所以我的问题是:

  • 我对 ASP.net 的假设是否正确?还是我做错了什么?
  • 是否可以使用自己的 http 服务器?
  • 您能否推荐任何其他方法(在 Microsoft / .net 世界中)?

提前谢谢...

【问题讨论】:

  • 为了速度、易于测试和易于集成,我认为 MVC 不会出错。它也非常适合开发 Web 服务
  • 您对服务器端技术的看法虽然正确,但非常狭隘。有许多服务器端技术,如 PHP、Java、Python 等。出于许可的简单原因,我从来都不是 ASP .Net 的粉丝。我不想让您感到困惑,但在最终确定您的服务器端技术之前,您应该做更多的研究。
  • 我个人会使用 Node.js 或 Ruby EventMachine 并创建自己的 Web 服务器(还有像 Rails 或 Sinatra 这样的机架框架[推荐])。我不喜欢 ASP.Net 的原因与@juzerali 提到的相同。除了 web 服务器,你还可以做一个 web-socket 服务器,这比轮询更好。
  • 是的,你可以认真考虑一下 Node,但要谨慎行事,它还很年轻,还不是 beta。

标签: javascript asp.net .net wcf web-applications


【解决方案1】:

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

或者,您也可以使用其中一种付费服务进行推送(这样您就不应该过多关注服务器技术)

1)Pusher

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

2)UrbanAirship

正如@Fabio 提到的,Python Tornado 也可以用于轮询。它是一个 COMET 服务器,许多实时 Web 应用程序都是基于此构建的。有许多关于使用 NodeJs 进行轮询的教程。一个简单的谷歌搜索带我到这个article.

【讨论】:

    【解决方案2】:

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

    如果您想尝试新技术,我建议在服务器端使用node.js,并在客户端使用socket.io 进行通信以获取信号逻辑。另外,我更喜欢使用 phone gap 和 javascript 编写客户端应用程序,以便可以轻松移植到各种平台。

    【讨论】:

      【解决方案3】:

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

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

      所以您已经开始使用 .net,我不禁想到从 .net/WCF 服务器获取数据的最快方法是使用 .net/WCF 客户端。

      仅出于这个原因,我会选择 asp.net MVC。为您提供获取数据的快捷方式,同时让您在处理“V”部分(直接 HTML 页面、带有 xml 数据或 json 的 ajax 等)方面具有很大的灵活性

      就在上个月,asp.net mvc 在 Apache 2.0 开源许可下发布。

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

      编辑:

      我无法将对象保存在内存中并独立于客户端请求运行代码。或者至少它不是为那样工作而设计的。对吗?

      ASP.net(与许多应用服务器一样)具有会话和应用范围,您可以在其中存储数据。 您还可以创建后台线程来执行标准 request->response lifycycle 之外的工作。

      【讨论】:

        【解决方案4】:

        我能说的是:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-03-23
          • 1970-01-01
          • 2013-12-27
          • 1970-01-01
          • 2011-02-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多