2010-09-14 99 views
2

支持iPhone/iPad的分佈式應用程序框架(商業還可以)嗎?開發分佈式iPhone/iPad應用程序的框架建議

我正在尋找的框架:

  • 可以讓我專注於應用程序邏輯
  • 我沒有編寫的「低層次」的網絡編程(我已經做了它是我不想太多次做一遍= p)
  • 應積極維護(流行將是很好)

基本上,那麼我就可以發展得更快。

我們計劃開發一個軟實時TCP/IP客戶端/服務器應用程序,其中有許多iPhone/iPad客戶端(30+)通過局域網連接到單個服務器。服務器很可能會運行Windows(除非框架不支持它)。

我一直環顧四周,我看到:(?還是看起來相當原始)

我還沒有決定是否要使用的選項的Objective-C或MonoTouch的,但是傾向於使用MonoTouch,因爲我們將獲得.NET框架,而不是被綁定到Mac世界。

如果我添加了與我的問題無關的任何內容,請隨時發表評論---我是iPhone/iPad世界的新手。

+0

Per Franci的回答如下:是的,我正在尋找RPC風格。此外,我從未使用過POX或JSON,因此我無法對此進行評論。 – sivabudh 2010-09-14 23:07:03

+0

想補充一點,可以使用protbuf-net進行反序列化http://code.google.com/p/protobuf-net/ – sivabudh 2010-09-15 18:41:32

回答

2

我們已經使用WCF/Monotouch取得了巨大的成功 - 有一些f/work的區域不是100%,但是對於大多數情況下,您應該可以在WCF上輕鬆單擊。

在monodroid和monotouch以及wm7之間共享我們所有的數據同步,模型,測試等功能非常酷(有些工作 - 這很容易 - 您需要管理多個prj文件)。

要小心地正確管理對wcf服務的調用,將它們保持在最低限度,保持架構簡單。我們最終得到了一個相當複雜的dto,以最大限度地減少對wcf服務進行同步數據的調用量 - 這非常值得,因爲從頭開始同步設備所需的時間現在只是它的一小部分。

使用SSL與服務器進行通信是PITA,但我認爲這更多的是蘋果管理它的方式。

+0

WCF/MonoTouch可以與Microsoft .NET WCF服務通信嗎?例如Monotouch中編寫的iPhone應用程序能否與運行.NET框架的Windows機器通信? (對不起,如果這是一個愚蠢的問題......我只是新手) – sivabudh 2010-09-17 23:34:25

+1

是的 - 它可以 - 你使用帶noConfig開關的silverlight svcutil創建代理,並在你的monotouch項目中包含生成的類 - 這非常簡單 - 在obj c做類似的事情將是一個完整的不,因爲它只需要這麼多的混亂。 – iwayneo 2010-09-18 09:03:35

2

您需要更清楚地瞭解您的要求。如果您只需通過REST API進行對象序列化(脫水/水合),那麼任何支持POX或JSON的工具都可以正常工作。但是,如果您需要RPC樣式的方法調用,包括身份驗證,加密/數字簽名,事務處理等,那麼您需要上述列出的其中一種框架。

如果您需要一個框架,我個人會傾向於MonoTouch WCF,因爲它使您可以在稍後將客戶端移動到其他平臺(例如Windows Phone 7)。然而,正如你所說的那樣,現在情況有點困難,如果Mono團隊將來決定他們沒有資源來維護它,那麼最終可能會轉向另一個框架。當然,還有一個缺點就是你需要爲你的應用程序使用MonoTouch,並且不能使用Objective-C。誠然,隨着iOS開發者協議最近的變化,這不是什麼大問題,但它仍然值得記住。

(聲明:我曾經在微軟WCF團隊工作,所以我對產品本身有偏)

另一種選擇,我會去的,會是可可分佈式對象。然而,如果服務器也在OS X上運行,那將是我的選擇。我知道Windows上有Bonjour,但我懷疑它是針對服務器場景優化的,我也不知道Apple的RPC實現有多豐富爲Windows平臺。因此,只有當我專門爲Apple平臺構建時,我纔會繼續使用Apple的技術。

請注意,WCF和分佈式對象會給你RPC風格的功能,但它們不會幫助你處理任何特定的情況。如果您需要/希望獲得更高級別的抽象,例如您需要在線信息或多用戶聊天,則您仍然需要自行實施這些信息。在這一點上值得看看爲您提供這些功能的框架。一個例子是RakNet(你在上面列出),它抽象了遠程處理級別並在其上建立了額外的功能。

1

您可以使用Google協議緩衝區來實現RPC,但您仍然需要爲傳輸郵件執行一些網絡編程。它支持C++,Java,Python和Objective-C和.NET的接口生成,因此您可以創建一組RPC消息並獲取代碼,以便在幾乎任何移動平臺上使用它們。移動平臺上的傳輸層您必須實現自己。

http:// code.google.com/apis/protocolbuffers/ - 主Protobuf頁面(C++,Java,Python) http:// code.google.com/p/protobuf-net/ - Protobuf .NET在評論 HTTP的人提到:// code.google.com/p/metasyntactic/wiki/ProtocolBuffers - 爲的Protobuf對象 -

1

您可以使用JSON觸摸+ Vitche PHP Emission Framework它提供了所有服務器端需要。您也可以使用該框架訪問現有的SOAP(WCF,Axis等)服務。