Quando abbiamo a che fare con applicazioni complesse basate su ASP.NET Core Web API, il rischio principale è che il progetto contenente la vera e propria applicazione web cresca a dismisura, diventando alla lunga monolitico e poco manutenibile.
Fortunatamente, con pochissimo sforzo possiamo rendere i nostri progetti modulari, creando gli API controller all'interno di class library e poi referenziandoli dall'applicazione principale. Cerchiamo di capire come fare.
Il primo passo è ovviamente quello di creare un progetto di tipo Class Library, a cui dovremo poi aggiungere una reference al framework ASP.NET Core:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net5.0</TargetFramework> </PropertyGroup> <ItemGroup> <FrameworkReference Include="Microsoft.AspNetCore.App" /> </ItemGroup> </Project>
Come sappiamo, la FrameworkReference inietterà automaticamente tutti gli assembly necessari per ASP.NET Core, uniformandone la versione a quella del framework selezionato, che nel nostro caso è .NET 5.
Immaginiamo ora di aver creato alcuni controller all'interno di questa libreria:
namespace ControllerLibrary { [ApiController] [Route("[controller]")] public class ExternalController : ControllerBase { [HttpGet] public IActionResult Get() { return Ok("From external controller"); } } }
Affinché essi siano visibili dall'applicazione principale, oltre che referenziare il progetto, dovremo aggiungerli come ApplicationPart nella classe Startup:
public void ConfigureServices(IServiceCollection services) { services.AddControllers() .AddApplicationPart(typeof(ExternalController).Assembly); ... }
Il metodo AddApplicationPart necessita della reference all'assembly contenente i controller esterni, a cui possiamo arrivare tramite uno qualsiasi dei tipi definiti nella libreria stessa.
Una volta effettuati questi passaggi, il nostro ExternalController sarà finalmente visibile e invocabile dall'applicazione principale:

Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Utilizzare QuickGrid di Blazor con Entity Framework
Gestione degli stili CSS con le regole @layer
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Utilizzare Locust con Azure Load Testing
Introduzione alle Container Queries
Creare una libreria CSS universale - Rotazione degli elementi
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
La gestione della riconnessione al server di Blazor in .NET 9
Creare agenti facilmente con Azure AI Agent Service