2013-08-27 131 views
0

我在解決方案中有兩個項目。一個ASP.NET Web應用程序和ASMX Web服務應用程序。 ASMX Web服務在ASP.NET Web應用程序中引用(作爲Web引用)。ASP.NET Web應用程序對ASMX Web服務的依賴

在aspx頁面中,我們創建了一個Web服務對象,並在其上調用方法如下。

MyWebService myWebService = new MyWebService(); 
UserDetail userDetail = myWebService.GetUserDetail(25); 

這意味着我的aspx頁面取決於MyWebService的具體實現。根據依賴倒置原則(DIP),代碼應該取決於抽象,而不是具體的實現,並且這些抽象不應該依賴於細節;細節應該取決於抽象。

我如何消除這種依賴關係?

在谷歌我遇到以下文章是相似的,但不完全符合我在找什麼。

所有這些文章解釋了有關依賴注入到ASMX Web服務,而不是注入ASMX Web服務的依賴到asp.net web應用程序。

我是新手到術語依賴注入,我可能會思考錯誤的方向和錯誤的方向。

Plesae幫助我理解這種困惑。

回答

2

爲什麼要在網頁上寫這段代碼?,你可以編寫一個圖層來處理這種調用,並讓該層決定如何執行操作。

這將允許您: -

1)鬆散耦合功能。

2)刪除冗餘。

0

您可以使用注入的工廠。

例如:

interface IWebServiceFactory 
    { 
     MyWebService client(); 
    } 

    public class WebServiceFactory 
    { 
     public MyWebService client() 
     { 
      return new MyWebService(); 
     } 
    } 

在你的asp.net web應用程序。

var service = Locator.Resolve<IWebServiceFactory>(); 
UserDetail userDetail = service .GetUserDetail(25); 

請注意,您需要全局ascx中的依賴注入器。你可以注射或毫秒統一或任何注射器。