Ne arayalım?

ARAMIZA KATILIN

BİZE ULAŞIN

Adres:

E-posta:

host/bin/bilisimlife.dll

iletisim@bilisimlife.net




 
Rserit
Developer
       
 982  
 247

ASP.NET WebForm'da Ninject ve Log4net Konfigürasyonu

Selamlar,
WebForm kullanan büyük büyük siteler olduğunu biliyoruz. malum hemen teknoloji değişmiyor. Ancak önyüz eski de kalsa teknolojinizi geliştirmeniz gerekiyor. Ninject kullanmanız için MVC'deki yapı değil, burada Ninject.Web kütüphanesi yapılandırılıyor.

Önce Nuget Paket Yöneticisi'nden Ninject ve Ninject.Web'i yüklüyoruz.
Install-Package Ninject.Web

Web Application katmanınıza App_Start isminde klasör gelmiştir. Burada NinjectWeb.cs ve NinjectWebCommon.cs sınıflarımız var. Ninject'in uygulama yönetimi burada geliştiriliyor. Abstracts ve Conceretes sınıflarımızın var olduğunu kabul edelim. NinjectWebCommon.cs'i açın ve private static void RegisterServices(IKernel kernel) metoduna Bind işlemlerinizi yapın.

Bu şekilde:

kernel.Bind().To().InSingletonScope();
kernel.Bind().To().InSingletonScope();

Log4net'in ise CreateKernel() metodu altına şu şekilde bind olması gerekiyor:
kernel.Bind().ToMethod(context => LogManager.GetLogger(context.Request.Target.Member.DeclaringType));

Start metodu altında Log4net'i başlatmak için şunu eklemeniz gerekiyor:
XmlConfigurator.Configure();


Buraya kadar olan yapıda, Ninject kurulumu ve bind işlemlerimizi tamamladık. Sıradaki adım olarak sayfalarımıza entegre edeceğiz. Tüm .aspx sayfalarda Ninject.Web.PageBase inherit olmalıdır. Yani bir tane BasePage isminde bir class oluşturup Ninject.Web.PageBase'i bağlayabilirsiniz. Çünkü uygulamayı buradan yöneteceğiz.

public partial class BasePage : Ninject . Web .PageBase {

protected void Page_Load(object sender, EventArgs e)
{ }}

IOC'u bir attribute ile kullanacağız. Bir servis kullanımı için örnek:

[Inject]
public IProductService ProductService{get;set; }

Burada get ve set işlemi olmadığı takdirde null değer alacaktır.

Örnek sınıf:

public partial class Product: BasePage
{
[Inject]
public IProductService ProductService { get; set; }
[Inject] public ILog Log { get; set; }
}

UserControl için Ninject.Web.UserControlBase, MasterPage için Ninject.Web.MasterPageBase inherit olmalıdır.

Bu kadar! Dilediğiniz gibi uygulamanızı yönetebilirsiniz.

İyi çalışmalar,
Recep

Bu gönderiyi 12.07.2019 11:09:00 tarihinde Rserit düzenledi.

Developer.