Gömülü Web Kaynakları (Embedded Web Resources)

Oluşturduğumuz web kontrollerinin ihtiyaç duyduğu script, stil dosyası, imajlar gibi dosyaları assembly içine gömerek kontrol ile birlikte kolayca dağıtılmasını sağlayabiliriz.

Bu durum dağıtım avantajının yanında bant genişliği ile ilgili bir dezavantajı beraberinde getirmektedir. Web kaynağı olarak assembly içine gömdüğümüz her dosya sunucuya yapılan her istekte tekrar tekrar sunucudan yüklenecek ve gereksiz yere bant genişliğini işgal edecektir. Bu yüzden bu tekniği kullanırken bu ödünleşmenin farkında olarak seçimizi yapmanız gerekmektedir.

Bu tekniğin kullanımını (Makalelerde eksik kalan yönlere de değinerek) sizlerle adım adım paylaşmaya çalışacağım.

Öncelikle bir sınıf kütüphanesi projesi içinde bir özelleştirilmiş bir sunucu kontrolü sınıfı oluşturduğumuzu varsayalım… (Kendi Sunucu Kontrollerimizi Oluşturmak)

Bu sunucu kontrolü firma logo imajının altında firma adının yazdıran bir kontrol olsun. İlgili kontrolün render metodunu bu amaçla değiştirmiş olalım.

Bahsi geçen firma logosunun assembly içine gömülü olarak dağıtılmasını ve oradan kullanılmasını istiyorsak şu işlemleri adım adım gerçekleştirmeliyiz.

Kontrolün sınıf kütüphanesi projesi içinde bir klasör içine (Örneğin: Logo klasörü içine) logo imaj dosyasını ekleyin.

Not: İmajın yerleştirildiği klasör veya alt klasörler gömülü kaynağa ulaşmak için önemli olacak.

Visual Studio 2005 "Solution Explorer" penceresinde imaj dosyası seçili iken "Properties" penceresinde "Build Action" özelliği "Embedded Resource" olarak ayarlanmalı.

Kaynağa ulaşabilmek için sınıf kütüphanesi projesinin AssemblyInfo.cs dosyası (solution explorer properties klasörü içinde) içine şu satır eklenmeli…

[assembly: System.Web.UI.WebResource("MyControl.Logo.firmalogo.png", "img/png")]

Artık kontrol sınıf dosyasında render metodunda şu kodları yazarak oluşturulacak html metinlerinde gereken yerlerde kullanılabilir.

string fullResourceName="MyControl.Logo.firmalogo.png";
string ResourceURL=Page.ClientScript.GetWebResourceUrl(this.GetType(), fullResourceName);

Burada fullResourceName olarak verdiğimiz metin de "MyControl" assembly adı, "firmalogo.png" dosyanın adı ve bu metinler arasında yer alan "Logo" ise imajın yerleştirildiği klasördür.

Klavyeleriniz şen ola…

Working with Web Resources in ASP.NET 2.0
http://support.microsoft.com/kb/910442

How to embed resources in ASP.NET 2.0 assemblies
http://support.microsoft.com/kb/910445

Embedding Resources in ASP.NET 2.0 Assemblies
http://aspalliance.com/726

Yazı oluşturuldu 141

Bir yanıt yazın

Benzer yazılar

Aramak istediğinizi üstte yazmaya başlayın ve aramak için enter tuşuna basın. İptal için ESC tuşuna basın.

Üste dön