2009-04-13 22 views
2

我們的系統中有多個項目想要共享相同的asmx webservice。有沒有人有任何建議/最佳做法如何做到這一點。在多個項目中重用asmx webservices

問題是,網絡服務不斷變化,所以我不能只是添加一個web引用到生產。這也是很危險的,因爲在開發時我希望它指向我的本地機器。我應該只將我的web引用添加到本地主機?

也應該有專門的webservices項目,而不是分散在多個項目中的asmx文件?

謝謝

回答

2

Web服務的一個要點是它們是可重用的,所以你無論在哪裏都可以使用它。

你的問題有點不清楚問題是什麼,但你應該能夠從任何網絡訪問它的應用程序使用你的Web服務。

CNC中

一般認爲最好的做法有專門的網絡服務項目。您可以擁有多個Web服務項目,以及如何分解這些項目取決於您和您的業務/技術要求。

這應該解決您的主要問題。您有一個本地Web服務項目以及消耗它的本地項目。您可以根據需要將這些項目的一個或兩個部署到生產環境中。

+0

您能否告訴我一些建議具有單獨的Web服務項目的東西 – Ryu 2009-07-27 17:49:24

+0

這是任何N層架構中的標準設置,您希望將數據與業務層和表示層分開。如果你使用谷歌N層和網絡服務,你會發現很多例子。 – AaronS 2009-07-27 19:09:43

0

不知道我明白你的問題。如果您在生產環境中發佈Web服務,則只需在每個需要該應用程序的應用程序中爲其添加Web引用。使用Web服務的整個前提是您可以使用它 - 如果您僅在開發環境中使用它,也許您想考慮將其用作您在GAC中分發或保留的標準C#dll?

0

您只需要創建一個良好的流程所有權以及跨多個團隊或部門使用這些Web服務的文檔。在SOA世界中,您將不得不創建服務註冊表,以便查看可用服務並在需要時重用它們。

0

進行開發時,只需將Web引用指向本地計算機並在本地運行Web服務。我真的沒有看到任何問題。

0

如果我正確理解你的問題,你想有一個開發web服務和生產webserive。生產實例是最後一次調試/檢查構建。調試實例是您正在開發的當前版本。

我推薦的方法是實現一個dev子域,這樣你就可以擁有兩個webservices例如http://www.myapp.com/Service.asmxhttp://dev.myapp.com/Service.asmx。這兩個子域在IIS中都是不同的站點。在你的代碼中,你可以將web引用綁定到dev子域,因爲這個域將是你用來更新web引用(如果改變參數的)。然後,您將使用'#if not debug'將Web服務對象url更改爲用於生產(發佈)代碼的www站點。

通過這種方式,您可以針對調試服務構建,直到您滿意爲止。在此時您可以更新軟件(如果參數已更改),並將新DLL上傳到發佈網站。

我會保持webservices在一個單獨的項目,以保持部署簡單。

0

你應該創建一個類庫項目並在那裏定義你的web服務。將該項目引入您的Web應用程序,然後在webservice asmx文件中將其指向webservice類。