Choisir la bonne technologie pour créer la couche de service dans .NET

Lors de la conception de la couche de service dans vos applications, le choix de la technologie à utiliser dans la couche de service dépend de nombreux facteurs. Dans cet article, je présenterai une discussion sur quand et comment vous pouvez décider de sélectionner la bonne technologie pour implémenter la couche de service lors de la conception d'applications dans .Net.

WCF et l'API Web sont deux candidats importants que vous avez lors de la conception de la couche de service dans .Net. WCF est une plate-forme de développement pour SOA - elle fournit de nombreuses fonctionnalités et prend en charge de nombreux protocoles de transport différents. Alors que WCF est un cadre unifié pour la création d'applications orientées services, l'API Web est une alternative légère pour créer des services RESTful pouvant être utilisés par de nombreux clients différents. Les services RESTful utilisent HTTP de base et sont simples avec beaucoup moins de charge utile que les services SOAP. Vous pouvez utiliser WebHttpBinding dans WCF pour créer des services RESTful non SOAP sur HTTP. WCF est beaucoup plus polyvalent en ce sens qu'il peut prendre en charge de nombreux protocoles de transport - HTTP, TCP, etc. Vous pouvez tirer parti de WCF pour créer des services sécurisés, fiables et transactionnels qui peuvent prendre en charge la messagerie, la communication duplex et les canaux de transport rapides comme TCP ,Named Pipes ou UDP.

Si vous avez besoin de créer des services légers et orientés ressources sur HTTP qui peuvent exploiter toutes les fonctionnalités du protocole HTTP, utiliser le contrôle de version, le contrôle du cache pour les navigateurs et la concurrence à l'aide d'Etags, l'API Web est un bon choix. Vous devez choisir l'API Web plutôt que WCF dans votre couche de service lorsque vous souhaitez exposer vos services à un large éventail de clients, c'est-à-dire des navigateurs Web, des mobiles, des tablettes, etc. L'API Web est légère et convient bien aux appareils qui ont limité bande passante comme les téléphones intelligents. L'une des principales contraintes auxquelles j'ai été confronté lors de l'utilisation de WCF est sa configuration étendue - l'API Web est beaucoup plus simple et facile à utiliser. J'admets que WCF est beaucoup plus polyvalent que l'API Web, mais si vous n'avez pas besoin des fonctionnalités fournies par WCF et que vous n'avez besoin que de services RESTful sur HTTP,Je préférerais toujours l'API Web car elle est légère et simple à utiliser.

Je voudrais également présenter une discussion sur les différences entre l'API Web et ASP.Net MVC car il y a certaines idées fausses sur le moment de choisir l'un par rapport à l'autre. Le choix entre ASP.Net MVC et Web API dépend de nombreux facteurs. Il y a certaines considérations que vous devez garder à l'esprit avant de décider d'utiliser l'un d'entre eux.

Notez que l'API Web utilise des verbes HTTP et donc un mappage basé sur des verbes HTTP pour mapper les méthodes aux routes respectives. Vous ne pouvez pas avoir de méthodes surchargées pour le même verbe HTTP pour une route particulière. Vous devez être conscient de cette contrainte de conception (bien que des solutions de contournement soient disponibles) lors du choix entre ASP.Net MVC et l'API Web. Contrairement à ASP.Net MVC, l'API Web utilise le routage basé sur des verbes HTTP plutôt que sur des URI contenant des actions. Ainsi, vous pouvez utiliser l'API Web pour écrire des services RESTful qui peuvent exploiter le protocole HTTP - vous pouvez concevoir des services plus faciles à tester et à maintenir. Le routage dans l'API Web est beaucoup plus simple et vous pouvez tirer parti de la négociation de contenu de manière transparente. Le modèle de routage dans ASP.Net MVC inclut des actions dans les URI.

Un autre point à considérer est de savoir si vous souhaitez que votre fonctionnalité soit exposée pour une application spécifique ou si la fonctionnalité doit être générique. Si vous souhaitez exposer vos services spécifiques à une seule application, vous souhaitez utiliser ASP.Net MVC - le contrôleur d'une application ASP.Net MVC est spécifique à l'application. Au contraire, vous souhaiteriez une approche API Web si les besoins de votre entreprise vous obligent à exposer la fonctionnalité de manière générique. Je préférerais utiliser l'approche API Web si la fonctionnalité est plus centrée sur les données et l'approche ASP.Net MVC si la fonctionnalité est plus centrée sur l'interface utilisateur.

Vous devez utiliser l'API Web sur ASP.Net MVC si vous souhaitez que votre contrôleur renvoie des données dans plusieurs formats tels que JSON, XML, etc. En outre, la spécification du format de données dans l'API Web est simple et facile à configurer. L'API Web se classe également par rapport à ASP.Net MVC dans sa capacité à être auto-hébergée (similaire à WCF). Vous auriez besoin que les contrôleurs ASP.Net MVC soient hébergés sur le même serveur Web que celui où l'application a été hébergée, car les contrôleurs ASP.Net MVC font partie de la même application. Au contraire, vous pouvez également héberger vos contrôleurs d'API Web en dehors d'IIS - vous pouvez l'héberger dans un hôte personnalisé léger et permettre au service d'être utilisé par de nombreux clients différents.