fbpx

Aspekty w .NET

Opublikowane przez Jerzy Wickowski w dniu

kod z aspektami

Czy wiesz czym jest programowanie aspektowe i jak możesz wykorzystać aspekty? Jeżeli tak, to ten post nie jest dla Ciebie. Natomiast, jeżeli odpowiedź jest negatywna, to zapraszam, bo możesz się zdziwić. Prawdopodobnie używasz aspektów. Chociaż nie nazywasz ich po imieniu. Przykład? Proszę bardzo.

Aspekty w .NET

W frameworku typu ASP.MVC, czy WebAPI jest możliwość ograniczania dostępu poprzez atrybut [Authorize]. Czy definiowanie jakiej metody HTTP tyczy się dana akcja używając [HttpPost], [HttpGet]. To jest właśnie jeden z najpopularniejszych sposobów programowania aspektowego w .NET.

Kod bez aspektów

using System.Web.Mvc;

namespace Tazos.Blog.AOP.Mvc3.Controllers
{
   public class UsersController : Controller
   {
     public ActionResult Create()
      {
         if (User.IsInRole("Admin") || User.IsInRole("UserCreator"))
         {
            return View("NoPremission");
         }
         
         User user = GetUserFromPost();
	 //KOD
      }
   }
}

Kod z aspektami

using System.Web.Mvc;

namespace Tazos.Blog.AOP.Mvc3.Controllers
{
   public class UsersController : Controller
   {
      [HttpPost]
      [Authorize(Roles = "Admin, UserCreator")]
      public ActionResult Create(User user)
      {
         //KOD
      }
   }
}

Czy warto?

Według mnie jak najbardziej. Widać gołym okiem, który kod jest przyjemniejszy w czytaniu i utrzymaniu. Zwłaszcza że możemy tworzyć własne aspekty. Co daje olbrzymie pole do popisu. Dodatkowo może ułatwić stosowanie zasady SRP, a może nawet być jednym z kroków refaktoringu.



Czy to był wartościowy artykuł? Zapisz się, a wyślę Ci dwa ebooki o czystym kodzie oraz będę informował Cię o nowych postach

0 Komentarzy

Dodaj komentarz

Twój adres email nie zostanie opublikowany.

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

[contact-form-7 404 "Nie znaleziono"]

Zapisz się

Wyślę Ci dwa dokumenty mówiące o jakości kodu. Dodatkowo będę Cię informował o nowych postach i nowościach.