NopCommerce üzerinde plugin yapısı çok başarılı şekilde kurgulanmış bir modelleme. Sözü hiç uzatmadan nopCommerce ile ilgili bu yapıyı çok detaya girmeden bir plugin geliştirmek için yapılması gerekenleri özetlemeye çalışacağım.
Öncelikle nopCommerce InstalledPlugins.txt dosyasına sahiptir. Bu dosya App_Data klasörü altında yer almaktadır. Bu dosya içerisinde sistemde yüklü olan pluginler listesi yer alır ve uygulama start aldığında ilgili dosya üzerinde yazılı olan plugin sınıf isimlerine göre dinamik olarak uygulamaya dahil edilir.
Yeni bir plugin oluşturmak için öncelikle varolan bir plugini kopyalamanız işinizi kolaylaştıracaktır. Bu kopyaladığını plugin üzerinde namespace isimlerini çok dikkatli şekilde oluşturmak istediğiniz namespaces ismine replace etmenizdir.
Bu namespace isimleri düzenlendikten derlediğinizde /Plugins/BenimPluginlerim.OrnekPlugin şeklinde bir klas��r altında dll ler oluşturulmuş olacaktır.
DLL oluşturulduktan sonra halen uygulamanız üzerinde plugin aktif olmayacaktır. Çünkü InstalledPlugins.txt klasöründe yer almadığı için ilgili plugin NotInstalled olarak yönetim panelinde yer alıyor olacaktır. İsterseniz namespace bilgisini installedPlugins.txt klasörüne ekleyebilirsiniz veya yönetin panelinden plugins bölümünden eklediğiniz not installed konumdaki dll i install edebilirsiniz. Her iki durumda da plugin çalışır hale gelecektir.
Uyarı: Eğer plugin içerisinde install() metodu içerisinde db de tablo oluşturma veya plugin ile ilgili dil desteği kaynak kelimeleri de ekleniyorsa yönetim panelinden install yapılması gerekir. Aksi takdirde manuel olarak plugin yüklemesi yapılırsa bu kodlar çalışmayacağı için plugin için gerekli hazırlıklar eksik kalacağı için sorun çıkacaktır.
Eğer her şeyin yolunda olduğundan emin iseniz plugin'i deploy etmek için sadece ve sadece /Plugins/BenimPluginlerim.OrnekPlugin içerisindeki dosyaları sunucunuz üzerinde aynı uzantı altında eklenmesi gerekir. Bu eklenen dosyalar sonrası yönetim panelinden plugin i install etmeniz yeterli olacaktır.
Dikkat: Pluginin oluşturulduğu klasör içerisinde plugine özel dll ler eklendiğinde ilgili dll ler plugin klasörü içerisinde oluşturuluyor. Bu dll ler aynı zamanda Nop.Web içerisinde kullanılan bir dll de olabilmektedir. Bu nedenle plugin klasörü altındaki dll lerin iki kez yer alması yani hem ana /bin klasörü içerisinde hem de plugin klasörü içerisinde olması başta sorun çıkarmayabilse bile ileride ciddi sıkıntıların kaynağı olabilir.
Teşekkürler iyi çalışmalar.
Merhabalar
Aslında sql server performans konusu çok düşünülmeden uygulamalar yayına alınır ancak kritik ve yoğun uygulamalarda küçük değişikliklerin büyük faydalar sağlaması mümkündür. SQL server ile ilgili okuduğum kaynaklardan küçük bir dikkat ile büyük fayda sağlayabilecek aşağıdaki 3 adet tespiti sizlerle paylaşmayı istiyorum. Faydalı olması dileğiyle.
1-) Eğer kullananılacak veritabanı sadece TCP üzerinden bağlantı kurularak erişilecek ise shared bağlantı desteği disabled yapılması performans için faydalıdır. Eğer bu yapılmaz ise SQL server her bağlantı yapılacağında ilk olarak local bağntı geldiğini varsayıp işlem yapacak sonra TCP olduğunu anlayıp asıl istediğiniz işlemi yapacaktır. Bu da her sorgunuzun daha geç cevaplanmasına sebep olacaktır.
2-) Veritabanından çekilecek sorgularda genellikle SELECT* FROM TABLO_ADI şeklinde kullanılır. Ancak * karakterinin kullanımı performansın önemli olduğu uygulamalarda kullanılmaması faydalı olacaktır. Çünkü * karakteri karşılığında sql server öncelikle ilgili tablonun kaç stünü olduğunu sonra da bu stünların isimlerinin neler olduğunu öğrenip sorguyu kendisi oluşturmakta ve çalıştırmaktadır. Daima gerektiği kadar bilgiyi sorgulamak faydalıdır. SELECT AD,SOYAD from TABLO_ADI şeklinde sorgular ile gerektiği kadar bilgi almak en doğrusu ve performansı en yükseğidir.
3-) Veritabanının FILEGROWTH özelliğini belirlemek stratejik karardır. Bir veritabanına bir kaynaktan veri alarak başlatacağınız belli ve örneğin bu verinin boyutu veritabanı için 100MB a kadar çıkmasını sağlayacak ise veritabanı default ayarlar ile oluşturulmuş veritabanı 100MB ulaşmak için 30 kez alan büyütme işlemi yapmak zorunda kalacaktır. Eğer böyle bir durum belli ise veritabanının başlangıç alanını 100MB ile başlatmak ve gelecek olan veri yoğunluğuna göre veritabanının çok fazla genişleme işlemi yapmasına gerek kalmayacak şekilde büyüme oranı verilmesi yerinde olacaktır. Çünkü veritabanının alan arttırma işlemi performans konusunda ciddi maliyetleri olan bir işlemdir.
Öncelikle LessCss'i indiriyoruz. aşağıdaki resimde görülen linke tıklayıp LessCss son versiyonu indiriyoruz.Ben dosyayı "less.js" olarak kayıt ettim.
Daha sonra html sayfamı hazırlıyorum. Aşağıdaki sayfada öncelikle still.less i sonra ise less.js dosyalarını sayfaya ekliyorum
Artık stil.less dosyamızda less css kodlarımızı yazabiliriz.
Yukarıdaki yapıyı hazırladıktan sonra dosyalarımızın görünümü şu şekilde oluyor.
Bu dosyaları site üzerine yükledim ancak çalışmadığını görüyoruz.
İşte bu noktada sebebini öğrenmek isterseniz zaten size tarayıcının konsol ekranı yardımcı oluyor. Aşağıdaki ekranda ilgili dosya sunucuya yüklemiş olmasına rağmen .less uzantısının olmadığını söylüyor.
Bu hatanın sebebi IIS üzerinde mime type olarak .less uzantısının tanımlanmamasıdır.İlgili adrese gittiğinizde o dosya hiç yokmuş gibi 404 hatası verecektir.
Mime type iis yönetim arayüzünün ana sayfasında "Mime Types" şeklinde bir menü var. Bu menüden açılan ekranda sağ bölümdeki Add butonu ile aşağıdaki şekilde ekliyoruz.
Tanımladığımız anda az önce 404 hatası veren sayfada aşağıdaki gibi artık içeriğini görebilir durumdayız.
Ve artık aşağıdaki gibi html sayfamıza gittiğinizde stil.less dosyamızın çalıştığını görebiliyoruz.
Bu şekilde projenizde lessCss i dinamik olarak kullanabilirsiniz.
Not: Performans gerektiren uygulamalarda getirdiği yük test edilmelidir. Sonuçta ilgili less.js dosyası 100KB boyutundadır ve her tarayıcı isteğinde ilgili stil.less dosyasından gerçek css kodlarına geçişin sağlanması nedeniyle statik bir css dosyasından daha yavaş çalışacaktır.
Örnekte kullandığım dosyaları aşağıdaki linkten indirebilirsiniz.
lessCss.rar (30,8KB)
iyi çalışmalar.