C# ASP.NET Web应用程序';s对ASMX web服务的依赖性
我在一个解决方案中有两个项目。ASP.NET Web应用程序和ASMX Web服务应用程序。ASP.NET Web应用程序中引用了ASMX Web服务(作为Web引用) 在aspx页面中,我们创建一个Web服务对象,并对其调用如下方法C# ASP.NET Web应用程序';s对ASMX web服务的依赖性,c#,asp.net,.net,web-services,dependency-injection,C#,Asp.net,.net,Web Services,Dependency Injection,我在一个解决方案中有两个项目。ASP.NET Web应用程序和ASMX Web服务应用程序。ASP.NET Web应用程序中引用了ASMX Web服务(作为Web引用) 在aspx页面中,我们创建一个Web服务对象,并对其调用如下方法 MyWebService myWebService = new MyWebService(); UserDetail userDetail = myWebService.GetUserDetail(25); 这意味着我的aspx页面取决于MyWebService
MyWebService myWebService = new MyWebService();
UserDetail userDetail = myWebService.GetUserDetail(25);
这意味着我的aspx页面取决于MyWebService的具体实现。根据依赖倒置原则(DIP),代码应该依赖于抽象,而不是具体的实现,这些抽象不应该依赖于细节;细节应该取决于抽象
如何删除此依赖项
在谷歌上,我看到了以下文章,这些文章与我要找的内容相似,但并不完全相同
请帮助我理解这一困惑。为什么要在网页上编写此代码?您可以编写一个层来处理此类调用,并让该层决定如何执行该操作 这将允许您:- 1) 松散耦合的功能
2) 删除冗余。您可以使用注入的工厂 例如:
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);
var service=Locator.Resolve();
UserDetail UserDetail=service.GetUserDetail(25);
注意,您需要在全局ascx中使用依赖关系注入器。你可以使用ninject或ms unity或任何注射器