我非常喜欢接口编码。在WCF世界中,这一点非常强调每项服务。但是,我正在深入研究ASP.NET Web Api,作为MVC 4的扩展,我很想知道是否有一些典型的推理让你的控制器实现继承自接口。
我知道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;
}
}
与此相反,具有相应的接口(或接口)。
public class TestsController : ApiController, ITestsController
{
public IEnumerable<string> Get()
{
var testValues = new List<string>
{
"Something",
"Welcome to the top of the world"
};
return testValues;
}
}
答案 0 :(得分:5)
我认为使用类似于控制器的界面没有任何价值。 WCF很大程度上依赖于接口,因为它对于SOAP服务来说是常见的,它是用于在WSDL中生成契约的东西。但是,HTTP Web API没有这种合同,拥有它通常是一种不好的做法。此外,当您需要使用依赖项注入和单元测试时,接口很常见,因为它们允许您轻松伪造依赖项。但是,我不认为你会将控制器作为依赖注入另一个类,所以它也没有意义。