6 tipos de código que não deveriam estar dentro dos controladores .NET


Os controladores .NET devem ser leves





Uma frase comum sempre repetida com três toneladas de bagagem para desfazer.





Por que eles deveriam ser leves? Qual a utilidade disso? Que etapas posso seguir para torná-los mais fáceis, se ainda não foram? Como faço para mantê-los leves?





( ) , . «» , .





, , , .





6 , , . , , .





1. (DTO)

, , , URL HTTP .





, DTO, , , - , , .





, :





public IActionResult CheckOutBook([FromBody]BookRequest bookRequest)
{
    var book = new Book();

    book.Title = bookRequest.Title;
    book.Rating = bookRequest.Rating.ToString();
    book.AuthorID = bookRequest.AuthorID;

    //...
}
      
      



, . - HTTP-.





2.

, . , , .





-. , , . ASP.NET MVC, , , .





!





public IActionResult Register([FromBody]AutomobileRegistrationRequest request)
{
    // //validating that a VIN number was provided...
    if (string.IsNullOrEmpty(request.VIN))
    {
        return BadRequest();
    }
    
    //...
}
      
      



! ( )





3. -

-, , , , .





. , - ( , , ), .





4.

, . , , .





, , ASP.NET (, ).





(User) , / -, , , .





5.

, !





public IActionResult GetBookById(int id)
{
    try
    {
      //  ,    -...
    }
    catch (DoesNotExistException)
    {
      // -,     ...
    }
    catch (Exception e)
    {
      // ,  ...
    }
}
      
      



, , , , . , , - .





-, , - . , - .





6. /

, (Repository), , . - CRUD, .





, .





, , , , .





-, ( ), , , , .





public IActionResult CheckOutBook(BookRequest request)
{
    var book = _bookRepository.GetBookByTitleAndAuthor(request.Title, request.Author);
    //       ,    
    //    -  ...
    //...
    return Ok(book);
}
      
      



CRUD, — , .





- ( ) , - CQRS- /.





!

- ?





, , . , , , .





( ).






"C# ASP.NET Core ".





- «Serverless azure». 1: , serverless computing, serverless computing azure , azure function. 2: , azure storage, , ARM . !








All Articles