Malheureusement, vous vous trompez à ce sujet - je présume que je peux partager tous mes attributs, etc. entre les contrôleurs Web api et mvc, donc à première vue, cela ne me semble pas un changement massif.
De nombreux concepts utilisés par l'API Web et MVC, même s'ils sont similaires à première vue, ne sont en fait pas compatibles. Par exemple, les attributs de l'API Web sont System.Web.Http.Filters.Filter
et les attributs MVC le sont System.Web.Mvc.Filter
- et ils ne sont pas interchangeables.
Il en va de même pour de nombreux autres concepts - liaison de modèle (mécanismes complètement différents), routes (l'API Web utilise HTTPRoutes et non Routes, même si elles fonctionnent toutes les deux sur la même RouteTable sous-jacente), résolveur de dépendances (non compatible) et plus encore - même si similaire sur le surface, sont très différents dans la pratique. De plus, l'API Web n'a pas de concept de zones.
En fin de compte, si tout ce que vous essayez de faire est d'avoir une façon «nouvelle et tendance» de diffuser du contenu JSON - réfléchissez à deux fois avant de vous engager dans cette voie. Je ne recommanderais certainement pas de refactoriser un code existant à moins que vous ne cherchiez vraiment à adopter HTTP et à créer votre application de manière REST.
Tout dépend vraiment de ce que vous construisez. Si vous démarrez un nouveau projet et que tout ce dont vous avez besoin est de servir du JSON pour faciliter votre application Web - à condition que vous soyez prêt à vivre avec du code potentiellement dupliqué (comme ce que j'ai mentionné ci-dessus), l'API Web pourrait facilement être hébergée dans le même projet que ASP.NET MVC.
Je ne séparerais l'API Web en un projet distinct que si vous envisagez de créer une API appropriée pour votre service en ligne - peut-être à utiliser par des clients externes ou par divers appareils - tels que l'alimentation de vos applications mobiles.