6
votes

WebAPI 2 contrôleurs sur 2 projets

J'ai des projets WebAPI2 C # sur lesquels j'ai tous les contrôleurs dans un dossier des contrôleurs. J'ai maintenant certaines fonctionnalités que je souhaite ajouter, mais je veux le mettre sur un autre projet Visual Studio qui aura ses propres contrôleurs (et modèles et vues). Est-ce possible pour que je puisse créer une sorte de module qui sera chargé par webapi2?


1 commentaires

1) Placez tous les contrôleurs du projet Web et demandez à ces contrôleurs d'appeler à différents services (qui vivent dans un autre projet). Peu, sans logique (autre que la manutention / la journalisation des exceptions) devrait être dans vos contrôleurs. Ils devraient simplement appeler à une autre classe pour faire le travail. 2) Créez deux applications distinctes sous IIS et construisez une nouvelle API.


5 Réponses :


-1
votes

Vous pouvez créer la fonctionnalité dans un projet de bibliothèque, puis vous référencez ce projet à votre WebAPI2 et à votre autre projet Visual Studio. Fondamentalement, vous aurez trois solutions; Deux solutions WebAPI et une solution de bibliothèque. La solution de bibliothèque contiendra la logique requise nécessaire aux deux solutions WebAPI.


0 commentaires

-1
votes

Vous ne devriez pas avoir besoin de contrôleurs dans deux projets.

Si les contrôleurs sont destinés à des domaines d'affaires complètement différents, effectuez deux API dans IIS W / Deux solutions.

S'ils sont similaires, créez tous vos contrôleurs dans le projet Web. Ensuite, ces contrôleurs appellent ces contrôleurs à séparer les services d'application. xxx

Donc, la plupart de votre logique devraient cacher derrière les services de couche d'application, et ces services doivent avoir des méthodes 1-1 utiliser des cas. Si votre domaine commercial pour ces deux applications est complètement différent, créez deux solutions distinctes et deux applications IIS distinctes / API


1 commentaires

Vous pouvez également considérer que la région. Web API a aussi ça, non?



-1
votes

Non, ce n'est pas possible. Le maximum que vous pouvez effectuer est de créer une bibliothèque de classe qui compilera en tant que DLL, puis référence à la DLL dans votre webapi. Sinon, vous serez obligé de tout mettre dans la même application (Webapi) ou de créer deux applications WebAPI différentes.


0 commentaires

-1
votes

Selon vos besoins ...

Mon avantage, mettez simplement les 2 contrôleurs sur un seul projet et créer un dossier / classe de service / classe dans votre autre projet et appelez ces services chaque fois que vous en avez besoin. P>

Ce n'est pas vraiment la réponse à votre question, mais je crois que cela aidera. Normalement, nous créons une solution à l'aide de cette structure de dossiers, j'espère que cela aide: P>

MyTeamSolution
    - MyTeam.Core   = Class libraries
        > Models
            > Model1.cs
            > Model2.cs 
            > Model3.cs
        > Interface
            > ISomeInterface.cs
        > Helpers
            > HelperClass.cs

    - MyTeam.Api    = webapi project
        > Model1Controller.cs
        > Model2Controller.cs
        > Model3Controller.cs
    - MyTeam.Web    = mvc project
        > Controllers
        > Models
        > Views
        > etc. 
    - MyTeam.Sql    = Class libraries
        > MyTeamDbContext.cs


0 commentaires

2
votes

Web API repose sur le IHTTPCONTROLLERSELLector pour choisir le contrôleur API pour la gestion d'une demande, dont la mise en œuvre par défaut s'appuie sur IASSEMBLIESRESOLVER Pour résoudre les assemblages pour rechercher les contrôleurs API.

Dans la moindre modification minimale, vous pouvez remplacer ce résolveur d'assemblage avec une implémentation personnalisée qui chargera d'autres bibliothèques pour vous. P>

Un exemple très naïf pourrait ressembler à ce qui suit: p>

config.Services.Replace(typeof(IAssembliesResolver), new CustomAssemblyResolver());


0 commentaires