2009-07-17 133 views
0

我正在計劃一個更大的項目,所以我正在考慮一些技術選項。更大的項目有哪些技術?

該項目將使用3層架構設計。表示層將是ASP.NET,但它可能是其他一些技術。目前這並不重要。

我的問題是:

  1. 對於我應該使用Windows服務或只是一個正常的應用程序服務器aplication?
  2. 我應該如何使用表示層和域層之間的通信?我想使用.NET遠程處理,但我讀了遠程處理是WCF的一部分。其實我不太熟悉WCF,這就是爲什麼我問。那麼.NET Remoting或WCF?

我會很感激任何提示

回答

5

對於應用程序服務器,現在,我猜Windows服務將是您最好的選擇,儘管它的工作量要比應該多。如果您現在不需要部署,您可能還需要查看「Dublin」 - .NET 4.0的附加組件,它將使用管理工具和其他東西來增強WAS(Windows進程激活服務器)。有了這個,你可能能夠以一種非常好而強大的方式實際託管和管理你的WCF服務。

至於#2 - 我肯定會推薦WCF--它是分佈式系統中通信的首選平臺,並且具有可配置性和靈活性,它幾乎可以處理任何你關心的任務。從非常快的機器上通信(NetNamedPipeBinding)到通過Windows Azure ServiceBus處理通信 - 「雲中的中繼服務」 - 它的強大! WCF不會出錯 - 我可以說,它可以處理您的所有通信需求。不要浪費時間學習.NET Remoting或ASMX或WSE Web服務等不推薦使用的技術(本次討論只需0.02美元)。

馬克

2
  1. 服務是要走的路;用戶無需登錄即可運行;他們裝備精良的遠程管理;它們也更適合被監視健康

  2. 遠程處理可以通過WCF使用; WCF聚合了許多不同的通信平臺,併爲它們提供了易於使用的配置。學習WCF將會是更好的選擇,但在我看來,如果你熟練使用Remoting,並且確定它涵蓋了你的所有需求,那麼它也應該沒問題。

1

接聽2)

WCF是組合使用單個API不同的通信機制的新的庫。選擇哪種機制(或WCF中的綁定)取決於你的要求。

爲了提高性能,您可以嘗試NetTcpBinding,或者如果您希望通過HTTP訪問NetTcpBinding,則可以嘗試BasicHttpBinding。更多關於WCF from MSDN的信息。

0

實際上,您對錶示層的選擇很重要。

如果您正在進行客戶端安裝,那麼使用WCF進行域層和客戶端之間的通信是有意義的。但是,如果您正在編寫purely-ASP.NET UI,那麼讓Web應用程序調用可能在本地託管的Web服務會產生嚴重的性能影響(消息傳遞和序列化/反序列化開銷)。

考慮到我最近開發的一個項目,我們需要支持這兩個項目,我們在與ASP.NET Web界面相同的應用程序域內託管了服務。用戶通過網絡用戶界面進行了最多的互動,並且當需要更豐富的客戶端交互時,通過Web服務與中間層通話的小型客戶端應用程序已啓動。

+0

實際上,UI和域之間的服務層的性能成本是微不足道的。對於不涉及序列化(彙編引用域層)的場景,性能測試會產生如此低的開銷,即使在複雜的體系結構上,在我看來,這也是不值得考慮的。至少,那是我的經歷。 – grenade 2009-07-21 14:28:50

0

如果你問這些樣的問題,那麼還有很多你的項目定義你不知道。真的不是問題,因爲即使你做了,反正大部分都可能在你完成之前改變。

此外,無論你現在選擇哪種技術,都會有一些你沒有做好準備的重大缺陷,因爲任何人都不會遇到你會遇到的問題。

現在不要選擇這項技術。從你理解得很好的東西開始,然後構建它。在小型可管理件上進行開發。經常展示你的「客戶」,並獲得反饋。

真正的訣竅在於,它可以讓您在新信息可用時輕鬆更改方向。這是我建議你花大部分時間的地方 - 弄清楚如何構建一個可擴展的體系結構,並創建測試來驗證在你前進的過程中所有事情都會繼續發揮作用。隨着項目的發展,您需要的技術將變得更加清晰。

1

WCF是唯一用於通信的技術。請注意,即使是屬於Azure的.NET服務總線也使用WCF。至於其他「選擇」:

有沒有其他的明智的選擇,除非出於某種原因,你使用.NET是滯留2.0或.NET 1.1。