2012-11-04 34 views
1

我目前正在構建我的.net 4.5應用程序。目前我有Web層和一個wcf服務層。他們通過肥皂相互交流。直接項目引用或通過wcf溝通

兩層都位於一臺服務器上。

我正在考慮從通過肥皂轉移到直接引用項目。以便它從一個應用程序移動到兩個應用程序。這背後的主要動機是提高性能,而不必對Web和服務之間的通信進行序列化和反序列化。

我從這個變化中失去的是將我的服務層轉移到未來獨立層的可擴展性,即不同的服務器。

我在找這方面的反饋,是否有序列化的主要性能影響。關於以上的想法?任何我應該考慮的事情,我已經省略了。

回答

1

從我個人的經驗來看,我更喜歡水平擴展(爲webfarm添加更多的web服務器),而不是分發應用程序。

我認爲在將WCF與直接本地呼叫進行比較時,可能會有相當大的性能損失。但影響取決於您的架構以及您每次請求實際發出多少個呼叫。例如,如果您要獲得10個實體,並且每個實體都需要單獨的WCF呼叫,則開銷將比發出單個服務呼叫大得多,並且同時返回全部10個實體。

現在,您可以探索的另一個選擇是使用NamedPipes而不是HTTP,因爲它們目前將託管在相同的環境中。

有關更多信息,請參閱Choosing a Transport

+0

我會有一個呼叫返回10個實體,與幾次呼叫相反。是的,我正在使用命名管道,這是否會降低性能? – amateur

+0

是的,當連接到同一臺機器時,命名管道是最快的,然後是TCP,然後是HTTP –

+0

,那麼命名管道和最佳服務調用與直接項目引用的性能比較是否可忽略?想要弄清楚它是否值得我在編程時改變代碼! – amateur