Interface asp.net web api控制器接口有什么好处吗?

Interface asp.net web api控制器接口有什么好处吗?,interface,asp.net-web-api,Interface,Asp.net Web Api,我非常喜欢用接口编码。在WCF的世界里,每一项服务都高度强调了这一点。然而,我正在深入了解ASP.NETWebAPI,作为MVC4的一个扩展,我很好奇是否有一些典型的理由让您的控制器实现从接口继承 我知道ASP.NET Web Api的默认设置如下所示 public class TestsController : ApiController { public IEnumerable<string> Get() { var testValues = n

我非常喜欢用接口编码。在WCF的世界里,每一项服务都高度强调了这一点。然而,我正在深入了解ASP.NETWebAPI,作为MVC4的一个扩展,我很好奇是否有一些典型的理由让您的控制器实现从接口继承

我知道ASP.NET Web Api的默认设置如下所示

public class TestsController : ApiController
{

    public IEnumerable<string> Get()
    {
        var testValues = new List<string>
            {
                "Something",
                "Welcome to the top of the world"
            };
        return testValues;
    }
}
公共类TestsController:ApicController
{
公共IEnumerable Get()
{
var testValues=新列表
{
“某物”,
“欢迎来到世界之巅”
};
返回测试值;
}
}
与此相反,使用一个或多个响应接口

公共类TestsController:ApicController、ITestsController
{
公共IEnumerable Get()
{
var testValues=新列表
{
“某物”,
“欢迎来到世界之巅”
};
返回测试值;
}
}

我认为在控制器上使用这样的接口没有任何价值。WCF在很大程度上依赖于接口,因为它是SOAP服务的一种常见功能,并且用于在WSDL中生成契约。然而,HTTP Web API没有这种契约,拥有它通常是一种不好的做法。此外,当您需要使用依赖项注入和单元测试时,接口是常见的,因为它们允许您轻松地伪造依赖项。但是,我不认为您会将控制器作为依赖项注入另一个类,因此在那里也没有意义。

我就是这么想的。在这个框架中,我看不到将控制器紧密地编程到接口上有多大用处,特别是因为对象以JSON(通常)的形式离开和进入服务,而在HTTP的狂野中。我想这个概念抛弃了依赖于彼此的前向类型安全和有界契约的独立程序集的想法。我想知道同样的事情,但是接口对强制版本控制是否有用?API v1、v2等?
public class TestsController : ApiController, ITestsController 
{

    public IEnumerable<string> Get()
    {
        var testValues = new List<string>
            {
                "Something",
                "Welcome to the top of the world"
            };
        return testValues;
    }
}