Aspekty w .NET
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.
0 Komentarzy