我正在開發鈦合金應用程序,該應用程序已連接到位於Windows Azure的數據庫。我想知道:Azure:是否創建Web服務
- 是有必要從Azure的存儲 獲取數據創建Web服務,如Windows Azure中已經提供REST API。
- 在我的情況下創建Web服務有什麼優點和缺點?
- 創建Web服務或直接使用REST API的所有術語(包括性能,開銷,安全性等)更適合哪種方式?
我正在開發鈦合金應用程序,該應用程序已連接到位於Windows Azure的數據庫。我想知道:Azure:是否創建Web服務
讓我先說我不熟悉鈦合金,但我看到它是一個移動開發框架。我會回答這個問題,因爲我會爲任何想要訪問存儲服務的移動解決方案。
One - 您可以在沒有Web服務充當代理的情況下獲取Azure存儲中的數據;不過,這有一些缺點,我會在下面談談。您可以直接從任何可以說HTTPS並解釋結果的任何東西中直接找到REST API。
二 - 直接指向表存儲,隊列和專用BLOB容器的REST API的問題是調用者必須擁有憑據才能獲取數據。存儲帳戶只有一種憑證類型,即帳戶密鑰和帳戶名稱。目前,對於不同服務或服務方面的細粒度控制並不存在,所以這意味着擁有這些憑據的任何人都可以在該賬戶中執行任何他們想要的數據,而不會刪除該賬戶(儘管他們當然可以刪除其中的數據該帳戶,甚至用他們的整個撕開的電影收藏品替換您的數據)。因此,如果您將自己的憑據添加到移動客戶端代碼中,那麼他們會被暴露,並且絕對不建議這樣做。
此選項是使用Shared Access Signatures (SAS)。 SAS提供了一個用憑證簽名的URL,並且可以在一段時間內有效。這裏的問題是,你需要一些東西來爲客戶端生成SAS網址,這意味着你將有一個Web服務。但是,您可以減少Web服務被擊中的次數,因爲SAS會生成並使用一段時間,然後您需要再次點擊服務才能獲得另一個服務。
我會告誡這種方法,因爲SAS生成的URL只是一個URL。具有此URL的任何人都可以在創建SAS時執行分配給SAS的所有權限。當然,如果您正在進行這些HTTPS調用(您應該是),那麼簽名部分將被加密;但是,請注意,中間人攻擊的人實際上仍然可能發生。爲了處理這個問題,人們經常真正將SAS到期時間縮短到幾秒或幾分鐘,但是在那個時候,根據您的負載情況,您可能還可以通過您的Web服務路由所有內容,並且更加適合身份驗證正在發生。例如,如果查詢之間的負載或時間非常短,但比您希望SAS保持有效的時間更長,則這可能不太合適。我已經看到這種「代客鑰匙」模式曾經取得了巨大的成功,所以不要把我的警告當作一個壞主意的標誌,你只需要意識到使用它們意味着什麼。
三 - 如果你可以卸載一些處理到其他服務器,那很好。安全明智的是,你將更安全地通過處理認證的Web服務(直接或通過身份提供商)。您將以這種方式控制對系統的所有訪問。性能明智的是,如果您正在轉向並調用Table Storage,您將看到一個命中,因爲有多個跳轉點。這可以通過緩存服務級別來緩解(這是一個完全不同的話題)。
您可能想要查看的一個選項是使用Azure Mobile Services。這爲您提供了一個後端。默認情況下,它使用SQL數據庫,但通過new Custom API feature,您可以跳過並從節點腳本中執行任何所需操作,包括訪問表存儲API(有關示例,請參閱此post by Chris Risner)。這種方法將消除您對運行的Web服務的需求,因爲移動服務將擔當這一角色,但您需要了解定價模型並根據自己的方案進行一些比較。
你的答案更明顯。謝謝你,先生,指導我通過。我一定會考慮和照顧你在這裏介紹的場景。 –