C# 不同需求的依赖注入

C# 不同需求的依赖注入,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个C ASP.NET MVC应用程序,需要连接到第三方WCF服务,但将来可能会转移到REST API。我可以很好地将应用程序拆分为各种UI元素、视图模型、接口和实现,如IRegister、ILogon等,然后可能会有WCF和REST版本 问题是对于DI,我希望将连接作为每个的构造函数的一部分传入。WCF连接的本质是一个大型接口/契约对象,然后链接到第三方系统的所有可用方法。REST连接需要传入一个已经建立的授权令牌,然后进行一系列API调用 我将如何实现实际连接,我将只使用对象的数据类型。

我有一个C ASP.NET MVC应用程序,需要连接到第三方WCF服务,但将来可能会转移到REST API。我可以很好地将应用程序拆分为各种UI元素、视图模型、接口和实现,如IRegister、ILogon等,然后可能会有WCF和REST版本

问题是对于DI,我希望将连接作为每个的构造函数的一部分传入。WCF连接的本质是一个大型接口/契约对象,然后链接到第三方系统的所有可用方法。REST连接需要传入一个已经建立的授权令牌,然后进行一系列API调用


我将如何实现实际连接,我将只使用对象的数据类型。

为服务创建单独的类,并实现接口

示例类:-SignInService.cs 接口:-ISignInService

然后通过startup.cs中的接口注入服务类 示例-

  public void ConfigureServices(IServiceCollection services)
    {           
       services.AddTransient<ISignInService, SignInService>();
    }

我认为您正试图将某种连接设置注入某种存储库。根据存储库中调用的方法,您可以调用旧的WCF API或新的REST API。因为WCF客户端可能是通过进行服务引用生成的。客户端本身可以被注入

对于RESTAPI,您需要某种工厂,它将首先检索安全令牌,然后返回一个自实现的REST客户机,该客户机通过其构造函数传递令牌。当然,根据令牌的生命周期,您可能必须采取不同的方法来确保令牌仍然有效


REST客户端将公开进行调用所需的方法,这些调用将安全令牌与每个请求一起传递。HttpClient类允许在每个后续请求中发送默认头。非常简单。

首先,你能告诉我们你在使用哪个DI框架吗?只需为WCF服务点实现一个类,然后注入该类?引入统一抽象接口并为每个服务实现它。如何更好?听起来像是在征求意见,这与堆栈溢出的主题无关。但是,您可以删除您的问题以删除意见请求,但它可能属于过于宽泛的类别。也许如果您包含更多关于DI使用什么以及不同连接接口的细节,那么将运行时数据注入应用程序组件就是一种代码味道。运行时数据应该通过已经构建的对象图的方法调用流动。这会导致歧义,使合成根复杂化,并带来额外的责任,并且使验证DI配置的正确性变得异常困难。正确,它在某种程度上是基于传递客户机的单片系统。我正在尝试创建接口、IRegister、ILookup等,其连接属性足够通用,可以接受WCF客户机、REST工厂类,也可以是数据库中的其他连接方法。将来属性需要什么类型的类型、类或接口?