2011-05-10 69 views
4

我見過很多關於Azure性能的基準,但是我想知道是否有人知道/已經做了比較,看看下列哪種情況對於胖客戶端應用程序的性能更好。SQL Azure vs WCF性能

  1. 連接到WCF服務以訪問正在雲中運行的數據訪問並連接到本地SQL數據庫。舉例來說,假設這是一個WCF數據服務,它包含一個基礎實體框架模型,該模型連接到Azure上的SQL數據庫。

  2. 直接連接到客戶端的SQL Azure實例。例如,假設它與上面的查詢和實體框架模型相同,但直接連接到SQL Azure實例,而不是通過WCF數據服務。

謝謝。

回答

3

我肯定會推薦你去與WCF + SQL Azure的

一個SOA背後的基本理念,是構建矮胖,而不是繁瑣的接口。由於您的客戶端不接近數據,因此在雲中託管時尤其如此。

如果您有複雜的業務對象來填充,您可能需要運行一些查詢。通過使用WCF服務與SQL Azure交談,您可以在Azure環境中運行所有這些查詢,並將Internet往返次數降至最低。

當然,這樣做的成本更高,但隨着服務層的擴展,它可以更好地擴展。

這樣做有很多好處。

  • 客戶端和數據庫之間的分離(數據結構可以在不更改客戶端的情況下更新)。
  • 作爲1的後果,如果你需要分割數據庫你可以。
  • 如果您需要稍後升級到SQL Azure Federations(當它不在時),那麼您可以。
  • 如果您想使用Azure緩存,則可以輕鬆掛鉤。
  • 安全性(1)您的數據庫位於防火牆之後。
  • 安全性(2)您可以驗證每個請求,而不僅僅是連接。
  • 安全性(3)如果您正在處理文檔/ blob存儲,那麼您無需將您的存儲帳戶密鑰提供給客戶端。

我在後端使用WCF + SQL Azure體系結構管理大量合理規模的多租戶系統,它的工作非常出色。

SQL Azure本身在網絡上運行良好,我甚至很樂意在Azure中運行我的開發數據庫,​​但我不認爲它是生產應用程序的好選擇。

希望這會有所幫助。

+0

很好的答案...謝謝。 – Jeff 2011-05-11 00:30:30

+0

感謝Tick Jeff。在等待所有升級後的角色實例啓動時獲得的額外50分並不是一個糟糕的夜間工作。 – 2011-05-11 00:35:57

1

如果我們從邏輯上看,我還沒有自己做過基準測試。

你在問哪個更快SQL Azure(S) + Entity Framework (EF) + WCFS + EF

如果我們假設以查詢參數和結果集的形式從雲端傳輸的數據的大小大致相同(除非WCF服務使用SOAP或其他XML格式,否則它可能是WCF)肯定會傳輸更多的數據),那麼這兩種方案的唯一區別就是WCF在中間進行的處理。雖然溝通通常很小,但不等於零,所以直接方法應該更快。

與速度無關,我不認爲創建一個web/worker角色來承載這個WCF服務是不值得的。對於一個10GB的數據庫來說,你將會使數據庫的託管成本增加一倍以上,並增加一些似乎沒有道理的複雜性。

如果你確實已經有了一個有效的角色來承載WCF,那麼從設計的角度來看,這可能是有意義的,我不認爲它會影響性能太多(取決於使用的傳輸方法和安全性) 。

1

有幾個方面是:

  • 性能
  • 成本
  • 安全

業績的第一個選項有一個額外的跳,所以它會比較慢。但是如果你有一個非常複雜的查詢,兩者之間的差異與總時間相比將是非常小的量度。

在成本您的第一個選項將需要額外的實例運行WCF服務,因此成本更高。

在安全性方面,您的第二個選項從互聯網打開數據庫端口,因此安全性較低。

+0

如果通過廣域網運行標準的SQL Server數據庫連接,性能會非常慢....所以這個問題真的與優化MS可能對驅動程序做的Azure ... – Jeff 2011-05-10 22:19:34