ASP.NET MVC'de plugin sistemi nasıl yapılabilir?

nopCommerce sistemindeki gibi bir eklenti/Modül sistemini nasıl yapabilirim. Sistemi inceledim ama tam çözemedim. Nasıl yapıldığını mantık olarak anlatabilir misiniz? Bildiğiniz daha basit örnekler var mı?

Teşekkür ederim.

soruldu: 27 Ağu '14, 05:37

emrekacan's gravatar image

emrekacan
813304450
cevap kabul oranı: 9%

Plugin sisteminden kasıt nedir ? bunu biraz açabilir misiniz?

(27 Ağu '14, 06:20) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

Bence bu konuda sana yardımcı olabilecek en iyi kaynak nopcommerce olur.

(27 Ağu '14, 06:41) rulas rulas's gravatar image

Yani nopCommerce'ı incelediğimde projenin içinde Plugin klasörü var. Ve buradaki projelerin kendine ait Controller ve Viewleri hatta Javascript ve cssleri var. Bunlar Class Library olmasına rağmen ana proje üzerinde kullanılabiliyor. Bende buna benzer bi sistem yapmak istiyorum. Örneğin Kullanıcı işlemlerinin ana proje üzerinde olduğu ve ona modül olarak bir blog sistemi ve forum yazmak istiyorum Class Library olarak. Kendi içinde Controller ve View leri olan. Bu Dll lerden hangisi Plugin klasöründeyse o dahil olacak. Silince kalkacak.

(27 Ağu '14, 07:27) emrekacan emrekacan's gravatar image

Sanırım nopCommerce üzerindede böyle bir sistem var. Ama tam çözemedim nasıl çalıştığını. Kolay bir sistem değil. Farkındayım. Ama en azından mantık olarak nasıl olduğunu bilmek istiyorum. Tabi mümkünse. Teşekkürler.

(27 Ağu '14, 07:29) emrekacan emrekacan's gravatar image

Öncelikle belirteyim, nopcommerce hakkında çok bilgim yok. Kendi incelediğim ve dökümanlarında okuduğum kadarı ile biliyorum. Söylediklerim sizin için tek referans olmasın...

nopCommerce, biraz karmaşık bir yapıya sahip. Karmaşık derken, elbette yazılım standartlarına göre yazılmış, belkide şu an en iyi MVC mimarisi örneğidir. Anlamak pek kolay değil, o anlamda karışık diyorum.

Plug-in mantığı basit bir "dll hazırla referans et" mantığı ile çalışmıyor. Core, projesi içerisinde IPlugin interface ini kullanarak, web projesine diger plug-in projelerini dinamik yüklüyor. Bunu otomatik dependency injection ile sağlıyor. Böylece web projesi içerisinde plug-in kullanılacak yerlerde Core.Plugins namespace 'ini referans ediyor. Yeni plug-in klasorundeki hiçbirşeyi web içerisinde çağırmıyor.

nopcommerce açık kaynak ve çok kaliteli geliştiricilerin bir kaç yıl birlikte çalışması sonucunda ortaya cıkan bir proje. Projeyi tam anlayabilmek için, aynı zamanda projeyi kullanmanız da gerekir. Kendiniz plug-in yazıp ekleyerek işleyişi anlayabilirsiniz. Ama temelde, mantıksal olarak ayrılabilecek olan controller, view ve modeller başka bir projeye alınıyor. Nopcommerce bunları plug-in mantığı ile yüklüyor.

github tan bir clonunu oluşturarak kaynak kod üzerinde değişiklikler yaparak projeyi ve mimariyi kavrayabilirsiniz.

Sizin senaryonuz için (blog, forum) area işinizi görür. Dikkat ettiyseniz, nopcommerce de admin için area var. Genelde admin, blog, forum gibi kendi başına bir web projesi olabilecek yapılar area içerisinde yapılır.

En basit, anlaşılır ve en iyi MVC mimarilerinden birisi de mvcforum projesidir. Yeni başlayanlar kesinlikle bu projeyi incelemeli. İsterseniz benimde projelerim var. Örneğin; NewsSiteV3

nopcommerce-plugin

permanent link

cevaplandı: 27 Ağu '14, 08:46

AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

AliRıza Adıyahşi ♦
7.9k146288
cevap kabul oranı: 44%

değiştirildi: 27 Ağu '14, 08:47

Cevap için teşekkürler. "Plug-in mantığı basit bir "dll hazırla referans et" mantığı ile çalışmıyor. Core, projesi içerisinde IPlugin interface ini kullanarak, web projesine diger plug-in projelerini dinamik yüklüyor. Bunu otomatik dependency injection ile sağlıyor. " Bu cümleyi biraz daha açar mısınız? Sanırım aradığım şey bu cümlede.

(27 Ağu '14, 09:13) emrekacan emrekacan's gravatar image

Sizin projenizide incelemiştim. Sizin projenizdede Plugin diye bir klasör var. Galiba bahsettiğiniz Iplugin interface'i ile kullanıyorsunuz. Nasıl kullandığınızı anlatabilir misiniz?

(27 Ağu '14, 09:15) emrekacan emrekacan's gravatar image

Hayır benimki plug-in mantıgı ile çalışmıyor. Sadece o projeleri web içerisinde referans edip kullanıyorum. nopCommerce ondan farklı, mesela bu kodları inceleyin, core projesindeki plugin namespace i referans etmiş ve aşağıdaki gibi view döndürmüş. kodun oldugu sınıfın adresi BURADA

return View("~/Plugins/Payments.PayPalStandard/Views/PaymentPayPalStandard/Configure.cshtml", model);

bu sınıf içerisinde plugin diye arama yapıp, kullanıldıgı yerleri inceleyin. Sanırım biraz daha anlayacaksınız.

(27 Ağu '14, 09:26) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×81
×6
×3
×2

Soruldu: 27 Ağu '14, 05:37

Görüntüleme: 1,402 kez

Son güncelleme: 27 Ağu '14, 09:26

powered by BitNami OSQA