2009-05-21 22 views
10

Visual Studio'da ASP.NET Web Siteleri oluşturma konusunda çok fazla deneyimim var. Ancak, biraz farklı dosya yapısına sahip Web Uygulamaları aracılığıyla aynı şeyi yapmak için alternatif bir yol var.Web Uygulaması'nın Visual Studio. NET'in Web Uygulaması proje türünü kullanırken sınıfları nereye koyarım? (ASP.NET)

İlk Web Uygulamamı oluşturduğumdan beri, App_Code klasöründe sınıfları (.cs dosyaları) kullanamıyorum, ASPX ve ASHX sınıfları tarafından aynı dosyaya taşınmamışlardı.

Aynı sınıfları birçok dosyada kullanıyorum ve bunların birden çok kopyasına sahip olmak istemiyorum. Bu sınıfları nereye koyacağım? Başka bir proje oluşturmadan herhangi bir çözüm var mı?

cevap

7

Tüm projelerimiz için VS 2008'de Web Uygulaması proje türünü kullanıyoruz ve App_Code klasörü yerine AppCode klasörüne ortak sınıflarımızı yerleştiriyoruz. Kesinlikle işe yarıyor, uygulamadaki tüm sayfalarda sınıflarımıza hiç sorun yaşamadan erişiyoruz.

2

Neden başka bir proje oluşturmak istemiyorsunuz? Bu, en basit yaklaşım olacaktır çünkü tüm sınıflarınız, web uygulamanızda proje referansı alabileceğiniz ve daha sonra projenin tamamında her şeye erişebileceğiniz bir toplantıda yer alacaktır.

Bu yaklaşımı göz önünde bulundurmanızı şiddetle tavsiye ederim.

+1

Gerçekten çok özel 1 ve 2 sınıflara sahip olmanız gereken ve web uygulama projesinde bunları sahip olmanın mantıklı olduğu pek çok zaman vardır. örneğin. Her bir sayfa yükünde çalıştırılacak web uygulaması özel kodunu içeren ve bir sınıf kütüphanesinde HTTPContext kullanmak yerine bir BasePage [web.ui.page dosyasından miras alınmış] bir sınıfımız var, biz sadece bu sınıfı web uygulamasına koyduk. – Vikram

+0

Bunu da tavsiye ederim. Birkaç projede kullandığınız ortak bir kitaplığınız varsa, çözümünüz üç projeden oluşur: WebApp, uygulamaya özel sınıflar ve genel kitaplık. Bir Web Uygulaması projesinin çalışması için (yayınlamadan önce derleme) bu yardımcı olur. –

6

Web Uygulama Projeleri ile çok daha fazla özgürlüğe sahipsiniz. Sadece sınıflarınızı tutmak için projenizin altında alt klasörler oluşturun. Örneğin, Veri Erişimi Katmanı öğelerini tutmak için "DAL" adlı bir klasörünüz olabilir.

İsteğe bağlı olarak, bir derleme projesi oluşturabilir ve sınıflarınızı buraya yerleştirebilir ve WAP’ınızdan referans alabilirsiniz.

Nihayetinde, yapının kaç tane sınıfa sahip olacağına kadar kayması.

0

Tüm sınıflarınızı (etki alanı nesneleri) ayrı bir projeye koymanızı kesinlikle öneririz. Bu sayede, iş katmanınıza (alan nesneleri) karşı kolayca test yazabileceksiniz ve sınıflarınız taşınabilir olacaktır. Taşınabilir, DLL'nizi başka bir geliştiriciye gönderebileceğiniz ve geliştirdiğiniz sınıfları kolayca yeniden kullanabileceğiniz anlamına gelir.

1

Normalde çözüm içinde üç tane projem var. Web uygulaması, web kütüphanesi (temel sayfalar vb) ve DAL. Bu her şeyi temiz tutar.

1

İstediğiniz yere koyun. Projeye özel yardımcı sınıfları ve temel sayfaları web projesinin altındaki/Helpers klasöründe tutma eğilimindeyim, ancak DataLayer ürünlerini ve genel amaçlı yeniden kullanılabilir yardımcıları kendi ayrı projelerine ayırdım.

1

Site genelinde kullanılan genel amaçlı sınıflar için /Shared/Classes kullanıyorum. Sınıfların geri kalanını /blog/Classes/ gibi kullanıldıkları bir Sınıf klasörüne koymayı seviyorum.

- EDIT--

cevap Web uygulaması projeleri Forms ben sınıfları depolanan nasıldı yukarıda. Şimdi MVC kullanıyorum, /Classes genel amaçlı sınıfları ve altında /Classes/Blog gibi alt klasörlerdeki genel olmayan sınıfları depolarım. Kısaca Old_App_Code, Classes olarak yeniden adlandırılmıştır. Bu, MVC'de Microsoft'u gördüğüm adlandırma kurallarının doğal bir uzantısı gibi görünüyor, ayrıca eski Web Formlarım sayfalarıyla da çalışıyor.

İlgili konular