2013-03-29 2 views
2

Je me demande s'il existe un moyen de créer une bibliothèque de classes contenant une API Web, de sorte que je puisse utiliser la DLL en tant que plug-in pour injecter dans le MVC application.Asp.Net MVC Consommation d'une API Web à partir d'une bibliothèque de classes

Merci d'avance pour votre aide.

+1

Google semble fonctionner très bien: http://www.asp.net/web-api/overview/web-api-clients/call-a-web-api-from-a-net-client – David

+0

Peut-être que vous voulez juste garder vos contrôleurs mvc asp.net et contrôleurs webapi à part? Ensuite, cochez ceci: http://stackoverflow.com/questions/10677745/mixing-web-api-and-asp-net-mvc-pages-in-one-project – AardVark71

Répondre

1

Les méthodes d'API Web sont appelées via HTTP. L'appel d'un service d'API Web nécessite donc qu'il soit hébergé quelque part et appelé à l'aide d'un client approprié, comme indiqué en @David's link. Vous pouvezself-host Web API, donc en théorie vous pourriez avoir un assembly local à une application MVC qui contenait une classe qui a mis en place, puis appelé un service API Web auto-hébergé.

Vous injecterait le service Web API derrière une interface, quelque chose comme ceci:

public interface IProductsService 
{ 
    IEnumerable<Product> GetAllProducts(); 
} 

... mis en œuvre quelque chose comme ceci:

public class SelfHostedWebApiProductsService 
{ 
    public SelfHostedWebApiProductsService() 
    { 
     // Set up a self-hosted Web API service 
    } 

    public IEnumerable<Product> GetAllProducts() 
    { 
     // Call your self-hosted WebApi to get the products 
    } 
} 

Configure your DI container à utiliser SelfHostedWebApiProductsService pour l'interface IProductsService, et c'est parti. This article explique comment configurer et appeler une API Web auto-hébergée. Comme le SelfHostedWebApiProductsService configure l'API Web auto-hébergée dans son constructeur - une opération relativement coûteuse - vous pourriez envisager de donner à cette classe une durée de vie singleton dans votre conteneur DI.

Questions connexes