2

I'm a huge fan of coding against interfaces. In the WCF world, this highly emphasized on every service. However, I'm getting deeper into ASP.NET Web Api, as an extension of MVC 4, I was curious to see if there was some typical reasoning to have your controller implementations inherit from an interface.

I know the default settings for ASP.NET Web Api look something like this

public class TestsController : ApiController
{

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

As opposed to this WITH a cooresponding interface (or interfaces).

public class TestsController : ApiController, ITestsController 
{

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

1 に答える 1

5

そういうインターフェースをコントローラに使う価値はないと思います。WCF はインターフェイスに大きく依存しています。これは、SOAP サービスでは一般的なものであり、WSDL でコントラクトを生成するために使用されるものであるためです。ただし、HTTP Web API にはそのようなコントラクトはなく、通常、コントラクトを持つことはお勧めできません。また、依存関係の注入と単体テストを使用する必要がある場合は、インターフェイスを使用するのが一般的です。これにより、依存関係を簡単に偽造できるからです。ただし、コントローラーを依存関係として別のクラスに挿入するとは思わないので、そこでも意味がありません。

于 2013-03-14T14:14:58.060 に答える