2011-08-22 116 views
4

雖然我在.NET技術方面有大約8年的經驗,但我對iPhone APP開發和PHP開發都很新穎。我們已經開始開發一款iPhone應用程序,該應用程序將與各種第三方API(例如臉書,推特,四方形,谷歌地理代碼)進行交流。使用Zend框架的iPhone Web服務

現在很多這些交互將不得不從APP內部發生,例如初始認證與Facebook,發佈消息到Facebook等。但我們需要一些交互發生在服務器上的各種原因和因爲我是一名.NET開發人員,所以我能想到的明顯方式就是Web服務。

我們不想因各種原因使用SOAP,我們嘗試使用JSON開發我們自己的Web服務框架,但意識到要在我們正在創建的框架中添加安全性等功能將是一項很大的工作。

因此,我們決定採用像Zend這樣的既定框架,我們可以實現安全和其他功能。我們還必須決定使用Zend Json-RPC和使用Zend REST。我的問題是多方面的,請理解我對PHP開發很新,所以我的一些問題可能是非常基本的。

  1. 我想從誰開發iPhone應用程序的任何一個有很多的互動了解第三方API的多少互動,你是否曾經在服務器以及是否有溝通比其他服務器的任何其他有效的方法使用網絡服務?
  2. 在Zend REST和Zend RPC之間更安全,而且開發工作量更少我猜測Zend REST會更安全,Zend RPC將花費更少的開發工作量。
  3. 使用像Zend這樣的已建立的框架來開發您的開發,我們認爲性能是最重要的將使用Zend在性能方面增加一個頭頂是否是一個好主意?
  4. Zend Json-RPC調用的安全性如何,使用Zend Json-RPC時如何使服務調用更安全。

我是一個.NET開發人員轉換到APP和PHP開發,所以希望得到一些指導方針,我們打算從這些領域的一些經驗中採取的整體方法。

回答

4

讓我們看看如何最好地回答這個問題。

回答1

有沒有做一個iPhone應用程序。在工作中,我建立/維護一個執行大量服務調用的Adobe AIR客戶端應用程序。我的經驗法則是做任何有意義的事情(利用他們的資源),而不是一直嘮叨服務器。通常,我們的應用程序會先從服務器加載所需的所有信息,並且有足夠的數據來處理大量信息。每隔一段時間它需要將這些信息發送回服務器以存儲在安全位置,但大多數情況下工作的邏輯都在客戶端應用程序中。

由於我們使用Adobe技術,我們使用AMF作爲傳輸協議在客戶端和服務器之間來回發送數據。

答到2

安全將是由你來處理。在步驟4中我會詳細討論這個問題。對於REST,您只需傳遞一個get/post/delete/etc以及未隱藏的值。XMLRPC你只是傳遞了一個任何人都可以看到的XML。現在,REST是對它自己的討論。由於沒有真正的標準,很難定義什麼REST是人們談論它的時候。如果你想使用REST,我不認爲Zend_Rest真的處理它good job。有other專注於REST的框架可能對您更好。另外,如果安全性很重要,請使用HTTPS而不是HTTP。

如果您選擇做REST(the right way),我認爲需要很長時間才能實施。

回答到3

這是所有關於你如何建築師它。我使用Zend爲我在上面描述的服務工作。我已經通過一種方式構建了它,可以使用JSONRPC或AMF來創建所有API(並且如果需要,我可以輕鬆添加XMLRPC或其他應用程序)並使用相同的資源。我爲我們的AIR應用程序使用AMF,並且使用JSONRPC來處理我的PHP網站/工具。我更喜歡JSON,因爲我覺得它比xml更輕,對我來說更容易處理。

接下來,我安排了cron作業,每天晚上我會將數千個查詢值的數據從db緩存到內存中。我知道的數據在第二天不會改變,並且會經常使用。任何未被此進程緩存的內容都將被逐個緩存,因爲它是由具有特定到期時間的客戶端請求的。這一切意味着什麼,我所有的服務電話都非常快速和高效。很多時候,我甚至不必擊中數據庫,所以在服務器端處理請求的時間只有一秒鐘。另外,如果你使用Zend,不要使用API​​的框架,只要使用服務器模塊作爲獨立的一塊。不要使用整個MVC堆棧,只需爲要使用的每個協議創建一個獨立文件。我有一個處理JSONRPC請求的json.php和一個處理AMF請求的amf.php文件。這兩個文件都非常輕量級,他們只需要啓動Zend_Json_Server或Zend_Amf_Server,將類路徑指定到我的類所在的位置並處理請求。

答到4

您使用過協議,你就必須構建安全這就像你使用任何東西。您也可以使用Zend認證模塊和acl。如果您傳遞敏感數據,無論是json,xml還是rest,都需要加密該數據,否則某些人會看到它。 AMF是一種二進制格式,這使得有點難,但除此之外。您選擇哪種協議,您仍然需要構建一些身份驗證機制,以確保其他人在沒有訪問的情況下不會使用它。

如果您正在尋找更多關於使用Zend構建webservices的不同方式的信息,我認爲本書Zend Framework Web Servicces是一個很好的開始。我希望這可以幫助你開始。

+0

感謝您的迴應,我特別想了解考慮到處理能力和帶寬需求,我可以在iPhone應用程序中放置多少代碼。我們正在開發的應用程序與多個第三方API交互,最好是從客戶端撥打這些電話或撥打我們自己的服務器,以便我們只能傳回相關信息? – senthil