從過去的幾個月起,我正在致力於最新的dot net框架中的項目。使用服務而不是組件的優點和缺點是什麼?
我覺得在最新的網絡版本中,「服務」是鼓勵組件的。那是對的嗎?
我已經看到了銀光(我是銀光的初學者)所有的數據庫層操作都暴露爲服務。我現在不知道組件程序也可用嗎?
有什麼優點?如果所有圖層都暴露爲服務而不是DLLS,那麼性能如何呢?
請通過關於這個問題的一些燈光,我應該從哪裏開始正確理解這個概念?
感謝
SC
從過去的幾個月起,我正在致力於最新的dot net框架中的項目。使用服務而不是組件的優點和缺點是什麼?
我覺得在最新的網絡版本中,「服務」是鼓勵組件的。那是對的嗎?
我已經看到了銀光(我是銀光的初學者)所有的數據庫層操作都暴露爲服務。我現在不知道組件程序也可用嗎?
有什麼優點?如果所有圖層都暴露爲服務而不是DLLS,那麼性能如何呢?
請通過關於這個問題的一些燈光,我應該從哪裏開始正確理解這個概念?
感謝
SC
這真是大家做一個面向服務的架構 - 這一直共同一會兒,很受歡迎。
這個想法是,不同的操作是相互分離的,所以它們可以被重新使用和修改,而無需重新編譯使用它的應用程序。而不是將DLL中的一段代碼修改和複製到任何地方,可以部署一個服務來代表特定處理或信息源的單一訪問點。
假設您有信用卡驗證組件。您可以編寫此代碼並將其編譯到DLL中,並將其包含在所有應用程序中。除非您發現錯誤或CC驗證規則更改,否則沒有任何問題。或者,也許你想升級它來檢查黑名單。沒有重新編譯使用它的應用程序,您無法做任何這些事情。
如果您的信用卡驗證作爲服務公開,您可以進行更改並部署到一個位置。如果簽名是相同的(相同的參數和響應),那麼應用程序甚至不必知道它已被更改。
使用服務而不是組件的另一個優點是服務可以託管在任何地方。他們可以在本地服務器上或在世界的另一端。
說了這麼多之後,就像你應該根據具體情況決定建築一樣。雖然信用卡驗證是服務有用的一個很好的例子,但提供服務來呈現HTML控件沒有多大意義。
還有其他需要考慮的事情 - 僅僅是因爲功能暴露爲「服務」並不意味着它必須託管在某處或作爲web服務公開。
你可以非常好地直接在內存中訪問服務。
將相關功能作爲服務公開更多的是關於應用程序各個部分之間的交互。它沒有說你如何部署/訪問這些作品。
「跨語言」兼容性是另一個優勢。你可以用C#.net編寫一個服務,它也可以從Java訪問。所以重用不僅僅侷限於編程語言的使用。
有什麼優點?如果所有圖層 作爲服務而不是DLLS顯示,那麼 性能如何?
我會在這裏注意這一點。 「所有圖層」是什麼意思?應用層如業務和數據訪問層?我懷疑這可能是有用的(當然這取決於你的上下文),但通常服務是可以在許多不同情況下重用的東西。一個例子可能是驗證財務代碼的服務。然後,您將從應用程序的業務層調用此服務。我無法想象在這種情況下,您會將業務層作爲單獨的服務公開,並將數據訪問層公開爲另一個單獨的服務。通常它們對於您正在開發的應用程序非常具體。什麼可能是你有一個應用程序,例如通過Web訪問(作爲Web應用程序),另一個入口點是通過其他應用程序可以使用的Web服務(某種類型的API)。這是有道理的,但是你不會直接暴露你的業務層,而是創建某種「網關」,這是你的web服務(一個委託給你的業務邏輯類的輕量級外觀)。
那麼,就Silverlight而言,當您的業務邏輯位於遠程服務器上時,您的UI /應用程序在客戶端計算機上運行或者運行在瀏覽器中。使用點擊式組件,您無法真正做到這一點 - 服務(穿越機器邊界)是真正的唯一途徑。 – 2009-06-10 07:51:39