Linkedin Instagram Facebook Twitter Mail Youtube Whatsapp

Asp.NET MVC’de HttpHandler Oluşturma

Asp.NET MVC projelerinde gelen çoğu talebi Controller katmanında karşılamakta ve kullanıcıya gerekli çıktıyı View katmanında göstermekteyiz. Haliyle amacımız ne olursa olsun gelecek tüm talepleri karşılayabilmek için birer Controller ve View’e ihtiyacımız olmaktadır. Genel geçer alışkanlıklar bizi farkında olmadan böyle şartlandırmış olsada gerçekte hiçte böyle bir zorunluluk bulunmamaktadır. Bu içeriğimizde Asp.NET ve Asp.NET MVC mimarilerinde tüm Page, Controller ve HttpHandler’ları kapsayan ve yapılan tüm taleplerin tetiklediği IHttpHandler arayüzü tarafından bir HttpHandler oluşturmayı ve bu Handler’a bir route ayarlamayı göreceğiz. İşte bu IHttpHandler arayüzü sayesinde Controller ve View’e ihtiyaç duymaksızın gelen talepleri karşılayacak, ardından kullanıcılara gerekli sonuçlar gösterilebilecektir. Daha fazla uzatmadan örnek bir Asp.NET MVC projesi açarak hayali bir senaryoda konuya direkt giriş yapmak istiyorum. Şimdi aşağıdaki “OrnekRouteHandler.cs” isimli sınıfı inceleyiniz.
public class OrnekRouteHandler : IRouteHandler
{
    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        return new OrnekHandler(requestContext);
    }
}
Gördüğünüz gibi “OrnekRouteHandler” sınıfı “IRouteHandler” interfaceini uygulayan bir sınıftır ve birazdan oluşturacağımız route şemasına talep gönderildiği zaman tetiklenecektir. Dikkat ederseniz bu tetiklenme neticesinde “OrnekHandler” sınıfından bir nesne oluşturmakta ve geriye return etmektedir. Şimdi bu sınıfımızı oluşturalım.
public class OrnekHandler : IHttpHandler
{
    public RequestContext RequestContext { get; set; }
    public OrnekHandler() { }
    public OrnekHandler(RequestContext RequestContext) { this.RequestContext = RequestContext; }
    public bool IsReusable { get; }
 
    public void ProcessRequest(HttpContext context)
    {
        //Gelen talebin işlenmesi/işlemleri
    }
}
“OrnekHandler” sınıfı ise “IHttpHandler” interfaceini uygulayan bir sınıftır. Route şemasına gelen talebi karşılayacak olan “OrnekRouteHandler” sınıfının prosedürel işlemlerini üstlenen “OrnekHandler” sınıfı, içerisinde örneği oluşturulduğu “OrnekRouteHandler” sınıfından gönderilmiş ve constructer tarafından elde edilen RequestContext nesnesini kullanarak “ProcessRequest” metodu içerisinde yapılan talebin kaynağı hakkında yahut başka durumlara özel işlemler gerçekleştirebilmektedir. Şunu söylemekte fayda var ki, birazdan oluşturacağımız route şemasını tetiklediğimiz anda Controller ve View olmaksızın “ProcessRequest” metodu tetiklenecek ve istenen ne ise çıktı olarak elde edilecektir. Şimdide bu adımda route şemamızı oluşturalım. “App_Start” klasörü altındaki “RouteConfig.cs” dosyasına aşağıdaki gibi bir route ekliyoruz.
public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
 
        routes.Add(new Route("laylaylom", new OrnekRouteHandler()));
 
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}
 

Bir Yorum Yaz