2012-03-08 88 views
9

現在,我正在爲簡單的跨平臺移動應用選擇技術。目標系統基本上是iOS,Windows Phone 7.5和Windows 8.在第一步中,它將成爲本地無線局域網應用程序。HTML5網絡應用 - 選擇服務器端技術

有現有的服務器(使用.net/WCF)有我想要顯示的所有數據。該應用程序將每隔幾秒輪詢一次,並對數據進行實時查看。我不會直接訪問數據服務器,但必須在兩者之間創建我自己的應用程序服務器。

對於客戶端,我選擇了HTML5,CSS,JavaScript(JQuery)方法,使其可以在任何現代瀏覽器中運行。所以我必須通過http進行通信。

我的問題是哪個技術用於我的應用程序的服務器端。我必須接收http請求,從另一臺服務器獲取數據(最好通過WCF)並將其作爲xml或html發送給客戶端。 (我不是很確定服務器或客戶機是否具有XML數據轉換成HTML轉換)

搜索我想通了兩種可能的方法網頁:

  • ASP.net
  • 建設自己的簡單的HTTP服務器使用WCF

縱觀一些ASP.net的文檔和例子給我的印象是,它只是工作,我從PHP等認識路......(客戶端發送請求時,服務器運行一個腳本/ PROGRAMM,服務器發送響應,程序終止)我無法保留對象在內存中並運行獨立於客戶端請求的代碼。或者至少它不是這樣設計的。那是對的嗎?

這將迫使我建立我自己的非常簡單的服務器,可以回答幾個特定的​​http請求。

所以我的問題是:

  • 是我對ASP.net的假設是否正確?還是我錯了?
  • 會是自己的http服務器的路要走嗎?
  • 你能推薦任何其他方法(在Microsoft/.net世界中)嗎?

在此先感謝...

+1

爲了提高速度,簡化測試和簡化集成,我認爲您不可能在MVC上犯太多錯誤。 開發Web服務也非常出色 – 2012-03-08 09:48:27

+0

您對服務器端技術的看法雖然正確,但很窄。有許多像PHP,Java,Python等服務器端技術。我從來都不是ASP .Net的粉絲,因爲許可的原因很簡單。我不想混淆你,但是在完成你的服務器端技術之前,你應該做更多的研究。 – 2012-03-08 10:20:34

+0

我個人會用Node.js或Ruby EventMachine去創建我自己的web服務器(也有像Rails或Sinatra這樣的機架框架[推薦])。我不喜歡ASP.Net出於同樣的原因@juzerali提到。除了Web服務器之外,您可以創建一個網絡套接字服務器,這比輪詢更好。 – omninonsense 2012-03-08 17:30:28

回答

2

有跡象表明,可能做,而是脫穎而出對我來說,事情是這樣的無數的Web技術:

有現有的服務器(使用.NET/WCF)有我想要顯示的所有數據。

因此,你已經得到了.NET的支持,我不禁想到從.net/WCF服務器獲取數據的最快方式是使用.net/WCF客戶端。

僅僅因爲這個原因,我會去與asp.net MVC。爲您提供了一個快速簡單的途徑來獲取您的數據,同時爲您處理「V」部分(直接HTML頁面,帶有xml數據或json等的ajax)提供了很大的靈活性。

上個月asp .net mvc是在Apache 2.0開源許可下發布的。

爲您的使用情況,我會保持從asp.net web表單和asp.net阿賈克斯得好遠

編輯:

我不能保持獨立客戶端的內存和運行代碼的對象要求。或者至少它不是這樣設計的。那是對的嗎?

ASP.net(想了很多的應用程序服務器)同時具有會話和應用範圍可以存儲數據。 您還可以創建後臺線程來的標準請求 - >應答lifycycle外執行工作。

0

我可以說的是:

總是使用開源技術:-)。 有幾十個庫/框架來編寫非常好的web服務器,但如果您需要高cuncurrency,我可以建議使用基於事件的框架,而不是基於線程/進程的框架。

Node.js(如@withadot所說)還有Python Tornado是一個不錯的選擇。

3

您可以看看APE (Ajax push Engine),因爲您的應用程序需要輪詢。它建立在JavaScript之上,像Comet服務器一樣。

另外,您也可以使用付費服務的一個推(所以,你不應該打擾太多關於服務器技術)

1)Pusher

(從推主頁:推杆是託管API快速,輕鬆且安全地添加可擴展實時功能,網絡和移動應用。

2)UrbanAirship

由於@Fabio提到Python Tornado可以替代地用於輪詢。它是一個COMET服務器,並且建立了許多實時Web應用程序。有許多教程可用於輪詢NodeJs。一個簡單的谷歌搜索導致我這個article.

3

通過移動設備訪問數據的成本很高。所以,我寧願使用JSON/XML通過電線發送數據。將使用RESTful方法以.NET堆棧中的WCF Restful services/ASP.NET Web API檢索數據。另外,如果你會考慮電池使用情況,你應該避免輪詢,並應使用信令框架。在.NET堆棧中,我們有SignalR這是做的。這將在新數據可用時通知客戶端,並且客戶端將啓動一個新請求來獲取數據。

如果您想嘗試新技術,我會建議在服務器端使用node.js,並使用socket.io從客戶端與信令邏輯進行通信。另外,我寧願使用手機差距編寫客戶端應用程序& javascript,以便它可以輕鬆移植到各種平臺。