2012-07-11 93 views
0

我正在開發n層體系結構,而對於數據訪問層,我使用的是Entity Framework 4.1。數據庫只會公開存儲過程。我還有一個WCF開發的附加層,服務層。 對於每個服務調用,請在using語句中使用新的數據上下文。 考慮到服務呼叫將達到每秒1000次,這種方法是正確的?實體框架和WCF。最佳方法?

最好的問候。

+0

_Service通話將達到1000元second_這是什麼意思? – Shyju 2012-07-11 20:27:27

+5

不是你的問題的答案,但很想知道爲什麼你會使用實體框架,如果一切都是存儲過程。 ORM應該消除對存儲過程的需求。如果你只需要調用sps,不會使用純ado.net足夠嗎? – dreamerkumar 2012-07-11 20:28:04

+0

如果您已經有存儲過程,那麼您不需要EF,並且EF中的附加功能會降低性能。 – EtherDragon 2012-07-11 21:54:35

回答

0

每秒1000個 - 如果您的服務真的需要做某些事情,您將需要非常好的服務器或負載平衡的環境。

如果你的數據庫只公開存儲過程並且你不能執行直接SQL(=你不能使用LINQ),那麼沒有理由使用EF。其實你有很多理由不應該這樣做,因爲除了糟糕的表現外,它不會給你任何額外的價值。此外,如果您的存儲過程使用多個結果集,表格值參數和其他一些高級技術,您將無法在EF 4.1中使用它們。

使用直接ADO.NET將允許您異步執行查詢,這可能導致asynchronous WCF service operations =更好地利用您的計算能力和更好的吞吐量。

0

您應該更多關心服務器負載平衡,可伸縮性,WCF性能問題,包括但不限於併發性,thorottling。您應該選擇可以根據您的需要輕鬆擴展的綁定,並且將來可以使用最少的擊穿時間。

此外,你應該確保你在後端做了一個很好的多線程設計,以支持1000個調用/秒的基準(我仍然想知道它是什麼),並增加你的服務的吞吐量。

EF不會在您的案件中扮演任何角色。你需要在這裏的原始表現。不要通過添加另一層不必要的東西來殺死。

對於負載均衡,你可以從這裏開始Loadbalancing