2013-08-27 98 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中的依赖注入器。你可以注射或毫秒统一或任何注射器。