📜  WCF 服务依赖注入 - C# (1)

📅  最后修改于: 2023-12-03 14:48:24.944000             🧑  作者: Mango

WCF 服务依赖注入 - C#

WCF(Windows Communication Foundation)是一个用于构建分布式应用程序的框架。它支持多种通信协议,包括HTTP、TCP和MSMQ等,并提供了一个灵活的服务模型,使得开发人员可以非常方便地创建和部署服务。

依赖注入(Dependency Injection)是一种常用的设计模式,它可以帮助我们解决应用程序中的依赖关系问题。通过依赖注入,我们可以将对象之间的依赖关系移动到独立的代码模块中,从而使得应用程序更加模块化、可维护和可测试。

在WCF应用程序中,我们也可以使用依赖注入来管理服务之间的依赖关系。下面是一个简单的WCF服务示例,演示如何使用依赖注入来构建和使用服务对象。

创建服务契约

我们首先需要创建一个服务契约(Service Contract),它定义了服务所提供的操作和参数。在本示例中,我们创建了一个简单的计算器服务,提供了Add和Subtract两个操作。

[ServiceContract]
public interface ICalculatorService
{
    [OperationContract]
    int Add(int a, int b);

    [OperationContract]
    int Subtract(int a, int b);
}
创建服务实现

接下来,我们需要创建一个服务实现(Service Implementation),它实现了服务契约中定义的操作。在本示例中,我们使用了简单的实现,直接在方法中执行加法和减法操作。

public class CalculatorService : ICalculatorService
{
    public int Add(int a, int b)
    {
        return a + b;
    }

    public int Subtract(int a, int b)
    {
        return a - b;
    }
}
注册服务实例

为了使用依赖注入,我们需要将服务实现注册到一个容器中,以便于管理和创建服务实例。在本示例中,我们使用了Autofac作为容器,通过注册ICalculatorService接口和CalculatorService实现来创建服务实例。

var builder = new ContainerBuilder();
builder.RegisterType<CalculatorService>().As<ICalculatorService>();
var container = builder.Build();
配置服务

最后,我们需要在应用程序中配置服务,指定服务所使用的绑定、终结点和行为等信息。在本示例中,我们使用了基本Http绑定和基本Http终结点,并指定了容器来创建服务实例。

var endpoint = new EndpointAddress("http://localhost/CalculatorService");
var binding = new BasicHttpBinding();
var behavior = new AutofacServiceBehavior(container);

var host = new ServiceHost(typeof(CalculatorService), endpoint);
host.AddServiceEndpoint(typeof(ICalculatorService), binding, endpoint);
host.Description.Behaviors.Add(behavior);

host.Open();
总结

通过依赖注入,我们可以轻松地管理和创建WCF服务实例,使得服务之间的依赖关系更加清晰明了,同时也提高了服务的可测试性和可维护性。

完整示例代码可参考下方的Github链接:

https://github.com/MicrosoftDocs/mslearn-wcf-dependency-injection-sample