ASP.NET Web Sitesi veya ASP.NET Web Uygulaması?


848

Visual Studio'da yeni bir ASP.NET projesi başlattığımda, bir ASP.NET Web uygulaması veya bir ASP.NET Web sitesi oluşturabilirim.

ASP.NET Web Uygulaması ve ASP.NET Web Sitesi arasındaki fark nedir? Neden birini diğerinden seçeyim ki?

Kullandığım Visual Studio sürümüne göre yanıt farklı mı?


6
Tam ve daha yeni (4.5 için) karşılaştırma ve açıklama burada MSDN'de bulunabilir: Visual Studio'da Web Uygulama Projeleri ile Web Sitesi Projeleri
Gustav

Yanıtlar:


556

İnternet sitesi:

Web Sitesi projesi anında derlenmektedir. Bir ağrı olabilir çok daha fazla DLL dosyaları ile sonuçlanır. Ayrıca, bir dizinde başka bir dizindeki sayfalara ve denetimlere başvurması gereken sayfalarınız veya denetimleriniz olduğunda da sorun çıkarır, çünkü diğer dizin henüz kodda derlenmemiş olabilir. Başka bir sorun yayıncılıkta olabilir.

Visual Studio'nun aynı adları sürekli olarak yeniden kullanması söylenmezse, sayfalar tarafından oluşturulan DLL dosyaları için her zaman yeni adlar bulur. Bu, aynı sınıf adını içeren DLL dosyalarının birkaç yakın kopyasına sahip olmasına neden olabilir ve bu da birçok hataya neden olur. Web Sitesi projesi Visual Studio 2005 ile tanıtıldı, ancak popüler olmadığı ortaya çıktı.

Web Uygulaması:

Web Uygulaması Projesi bir eklenti olarak oluşturulan ve şimdi 2005. temel farklar Web Uygulaması Projesi Visual Studio 2003. Bu olacak sevk devam Web projelerine benzer çalışmaları için tasarlanmıştır olan Visual Studio için SP 1 parçası olarak var edilmiştir derleme sırasında uygulamayı tek bir DLL dosyasına derleyin. Projeyi güncelleştirmek için, değişikliklerin gerçekleşmesi için projenin yeniden derlenmesi ve DLL dosyasının yayınlanması gerekir.

Web Uygulaması projesinin bir başka güzel özelliği, dosyaları proje görünümünden hariç tutmanın çok daha kolay olmasıdır. Web Sitesi projesinde, hariç tuttuğunuz her dosya, dosya adında hariç tutulan bir anahtar sözcükle yeniden adlandırılır. Web Uygulaması Projesinde, proje, hangi dosyaları yeniden adlandırmadan proje görünümüne dahil edileceğini / hariç tutacağını izler ve işleri daha düzenli hale getirir.

Referans

ASP.NET 2.0 - Web Sitesi ve Web Uygulaması projesi makalesi de neden diğerinin kullanılmadığına dair nedenler verir. İşte bir alıntı:

  • Büyük Visual Studio .NET 2003 uygulamalarını VS 2005'e mi geçirmeniz gerekiyor? Web Uygulaması projesini kullanın.
  • Proje dosyası oluşturmadan herhangi bir dizini Web projesi olarak açmak ve düzenlemek ister misiniz? Web Sitesi projesini kullanır.
  • Derleme sırasında derleme öncesi ve derleme adımları eklemeniz mi gerekiyor? Web Uygulaması projesini kullanır.
  • Birden çok Web projesi kullanarak bir Web uygulaması mı oluşturmanız gerekiyor? Web Uygulaması projesini kullanır.
  • Her sayfa için bir montaj mı oluşturmak istiyorsunuz? Web Sitesi projesini kullanır.
  • Her sayfa görünümünde sitenin tamamını oluşturmadan dinamik derlemeyi ve sayfalarda çalışmayı mı tercih edersiniz? Web Sitesi projesini kullanır.
  • Tek sayfalık kod modelini arka plan koduna mı tercih edersiniz? Web Sitesi projesini kullanır.

Web Uygulama Projeleri ve Web Sitesi Projeleri (MSDN) ile web sitesi projeleri ile web uygulama projeleri arasındaki farklar açıklanmaktadır. Ayrıca, Visual Studio'da yapılacak yapılandırmayı tartışır.


5
Yine de dosya tabanlı Web Sitesi ile tüm sitenizi bir dll olarak derleyebilirsiniz.
dtc

31
Düşünme şeklim. HTML olarak UI olarak kullanılan bir uygulamayı programlıyorsanız, Web Uygulamasını kullanın. Biraz sayfalarında Asp.net'e ihtiyaç duyan bir web siteniz varsa, Web Sitesi Projesi'ni kullanın.
Ian Ringrose

35
Aslında, Web Uygulama Projeleri tam olarak orijinal ASP.NET proje tipiydi. Visual Studio 2003'te sahip olduğumuz projeler gibi değiller. Eklenti olarak oluşturulmadılar. Visual Studio 2005 SP1, Visual Studio 2005 RTM'nin yanlışlıkla kaldırdığı şeyi geri yükledi.
John Saunders

1
Bir WebDeployment projesinde WebApplication çıktısını kullanabilirsiniz. WebSitesi çıktısını bir WebDeployment projesinde kullanamazsınız. Bir Dağıtım projesi oluşturmak istiyorsanız WebApplication'ya sadık kalın. Ancak WebSite geliştirmek için daha uygundur. Ancak, dönüşüm her zaman sorunsuz değildir, bu yüzden hemen WebApplication ile başlayın.
Stefan Steiger

8
@xarzu: Web sitesi "projelerinde" .csproj veya .vbproj dosyası yok. Bunlar gerçekten proje değil, sadece dosyalarla dolu klasörlerdir.
John Saunders

171

Web Sitesi , IIS gibi bir ASP.NET web sunucusuna dağıttığınız şeydir. Sadece bir grup dosya ve klasör. Web Sitesinde sizi Visual Studio'ya bağlayan hiçbir şey yoktur (proje dosyası yoktur). Web sayfalarının kod üretimi ve derlenmesi (.aspx, .ascx, .master gibi) çalışma zamanında dinamik olarak yapılır ve bu dosyalarda yapılan değişiklikler çerçeve tarafından algılanır ve otomatik olarak yeniden derlenir. Paylaşmak istediğiniz kodu özel App_Code klasöründeki sayfalar arasına koyabilir veya önceden derleyebilir ve montajı Bin klasörüne koyabilirsiniz.

Web Uygulaması özel bir Visual Studio projesidir. Web Siteleri ile temel fark, projeyi oluşturduğunuzda tüm kod dosyalarının bin dizinine yerleştirilen tek bir derlemede derlenmesidir. Kod dosyalarını web sunucusuna dağıtmazsınız. Paylaşılan kod dosyaları için özel bir klasöre sahip olmak yerine, bunları sınıf kitaplığında yaptığınız gibi istediğiniz yere koyabilirsiniz. Web Uygulamaları, proje ve kod dosyaları gibi konuşlandırılması gerekmeyen dosyalar içerdiğinden , Visual Studio'da bir Web Sitesini belirtilen bir konuma çıktılamak için Yayımla komutu vardır.

App_Code ve Çöp Kutusu

Paylaşılan kod dosyalarını dağıtmak genellikle kötü bir fikirdir, ancak bu Web Uygulamasını seçmeniz gerektiği anlamına gelmez. Web sitesinin tüm kodunu barındıran bir sınıf kitaplığı projesine başvuran bir Web Siteniz olabilir. Web Uygulamaları bunu yapmanın kolay bir yoludur.

CodeBehind

Bu konu .aspx ve .ascx dosyalarına özeldir. Bu konu, kod arkası dosyaları kullanmayan ASP.NET MVC ve ASP.NET Web Sayfaları gibi yeni uygulama çerçevelerinde giderek daha az ilgilidir.

.Aspx sayfaları ve .ascx denetimlerinin kod arkası dosyaları da dahil olmak üzere tüm kod dosyalarının tek bir derlemede derlenmesini sağlayarak , Web Uygulamalarında her küçük değişiklik için yeniden derlemeniz gerekir ve canlı değişiklikler yapamazsınız. Web Sitelerinde değişiklikler çalışma zamanı tarafından algılanırken ve sayfalar / denetimler otomatik olarak yeniden derlenirken, bu değişiklikleri geliştirme sırasında gerçek bir acı olabilir.

Sayfaların / denetimlerin benzersiz adlar vermesi veya farklı ad alanlarına yerleştirilmesi konusunda endişelenmenize gerek olmadığından, çalışma zamanının kod arkası montajlarını yönetmesi sizin için daha az işe yarar.

Kod dosyalarını dağıtmanın her zaman iyi bir fikir olduğunu söylemiyorum (özellikle paylaşılan kod dosyaları durumunda değil), ancak codebehind dosyaları yalnızca kullanıcı arabirimine özgü görevleri yerine getiren kodları içermelidir. önemli kod her zaman Bin klasörüne bitecek şekilde katmanlı. Bu durumda codebehind dosyalarını dağıtmanın zararlı olduğu düşünülmemelidir.

Web Uygulamalarının bir başka sınırlaması da sadece projenin dilini kullanabilmenizdir. Web Sitelerinde bazı sayfalar C #, bazıları VB, vb. Olabilir. Özel Visual Studio desteğine gerek yoktur. Yapı sağlayıcısının genişletilebilirliğinin güzelliği budur.

Ayrıca, Derleyici çalışma zamanında derlenen biçimlendirme kodunu değil (MVC'de bunu MvcBuildViews seçeneğini kullanarak düzeltebilirsiniz), Web Uygulamalarında sayfalarda / denetimlerde hata algılama almazsınız.

Görsel stüdyo

Web Uygulamaları Visual Studio projeleri olduğundan, Web Sitelerinde bulunmayan bazı özellikler elde edersiniz. Örneğin, Javascript dosyalarını küçültmek ve / veya birleştirmek gibi çeşitli görevleri gerçekleştirmek için derleme olaylarını kullanabilirsiniz.

Visual Studio 2010'da tanıtılan bir diğer hoş özellik de Web.config dönüşümüdür .Bu, Web Sitelerinde de mevcut değildir. Şimdi VS 2013'te Web Siteleri ile çalışır.

Bir Web Uygulaması oluşturmak, özellikle büyük siteler için bir Web Sitesi oluşturmaktan daha hızlıdır. Bunun nedeni, Web Uygulamalarının biçimlendirme kodunu derlememesidir. MVC'de MvcBuildViews değerini true olarak ayarlarsanız, biçimlendirme kodunu derler ve çok yararlı olan hata algılama alırsınız. Aşağı tarafı, çözümü her oluşturduğunuzda, özellikle siteyi düzenlemiyorsanız, yavaş ve verimsiz olabilecek tüm siteyi oluşturmasıdır. Kendimi MvcBuildViews açma ve kapatma (bir proje kaldırma gerektiren) bulmak. Öte yandan, Web Siteleri ile siteyi çözümün bir parçası olarak oluşturmak isteyip istemediğinizi seçebilirsiniz. Yapmamayı seçerseniz, çözümü oluşturmak çok hızlıdır ve her zaman Web Sitesi düğümüne tıklayabilir ve değişiklik yaptıysanız Oluştur'u seçebilirsiniz.

Bir MVC Web Uygulaması projesinde, 'Görünüm Ekle', 'Görünüme Git', 'Denetleyici Ekle' vb. Gibi ortak görevler için ekstra komutlar ve iletişim kutuları vardır. Bunlar bir MVC Web Sitesinde mevcut değildir.

IIS Express'i geliştirme sunucusu olarak kullanıyorsanız, Web Siteleri'nde sanal dizinler ekleyebilirsiniz. Bu seçenek Web Uygulamalarında kullanılamaz.

NuGet Paket Geri Yükleme Web Sitelerinde çalışmaz, Packages.config üzerinde listelenen paketleri manuel olarak yüklemeniz gerekirPaket Geri Yükleme artık NuGet 2.7 ile başlayan Web Siteleri ile çalışmaktadır


43
Programcılar uygulamayı yazdığından, uygulama oluşturulur. Test ekibi uygulamayı test sistemi üzerinde test eder. Ardından müşteri uygulamaları yükler. Bu son istediğinizi düşünün, herkes canlı değişiklikler yapıyor!
Ian Ringrose

12
Bana göre seçim en iyisidir, web sitelerinde her zaman isterseniz önceden derlenmiş bir temel sınıftan miras alabilirsiniz. İnsanların kaynak kod dağıtma fikrine alıştıkları birçok dil / çerçeve (ör. PHP) vardır. Bu, bunların 'ciddi' uygulamalar olmadığı anlamına gelmez.
Max Toro

6
"Aslında bu DLL'leri yönetmiyorsunuz, [...] var olduklarını bilmek zorunda bile değilsiniz. Sorun değil." - Çerçeve karışana kadar, eski sürümleri doğru şekilde temizlemez ve sitenin her yerinde çakışan adlarla derleme istisnaları atmaya başlar ... Bir WebDeployment projesi kullanarak işaretlemede hata algılaması ekleyebilirsiniz. Ayrıca son noktanızda "IIS'yi sunucu olarak kullanabileceğiniz web siteleriyle" emin değilim, bunu bir Web Uygulaması ile de yapabilirsiniz - ve projenin daha büyük bir web uygulamasının bir parçası olduğu böyle projelerim var.
Zhaph - Ben Duguid

3
Bir web sitesini dağıtmak her zaman canlı bir sunucuda olmak zorunda değildir. Geliştirme yinelemeleri, kusursuz bir dünyada, canlı çevrenin bir aynası üzerinde test edilmelidir. Web Apps'in bir Geliştirme IIS sunucusunda çalışan bir sitede hızlı kod değişiklikleri yapamaması (yani, yerel VS örneğini kullanmama), hızlı küçük çözümleri test etmeyi büyük bir acı haline getirir. Bu, yerel makinenizde aynı koşulları çoğaltamayacağınız sistemlerde her zaman olur.
NikoRoberts

4
"Bu, gelişim sırasında gerçek bir acı olabilir, çünkü değişiklikleri görmek için yeniden oluşturmaya devam etmelisiniz" ... bunun bir ağrı olması için bir MASSIVE projesi veya GERÇEKTEN ESKİ bir bilgisayar olması gerektiğini unutmayın. bu günlerde yeniden inşa.
Darren

75

Web Sitesi = web sitesi grafik tasarımcıları tarafından oluşturulduğunda ve programcılar yalnızca bir veya iki sayfayı düzenlediğinde kullanın

Web Uygulaması = uygulama programcılar tarafından oluşturulduğunda ve grafik tasarımcıları yalnızca bir veya iki disk belleği / görüntüyü düzenlediğinde kullanın.

Web Siteleri, proje dosyalarının güncellenmesi gerekmediği için geliştirici stüdyosu olmadan herhangi bir HTML aracı kullanılarak çalışılabilir. Web uygulamaları, ekip çoğunlukla geliştirici stüdyosu kullanırken ve yüksek kod içeriği olduğunda en iyisidir.

(Derleme zamanında Web Uygulamalarında, çalışma süresine kadar Web Sitelerinde bulunmayan bazı kodlama hataları bulunur.)

Uyarı: Bu cevabı yıllar önce yazdım ve o zamandan beri Asp.net'i kullanmadım. Şimdi her şeyin yolunda gitmesini bekliyorum.


40

Dinamik olarak derlenmiş bir projeye özel bir gereksiniminiz olmadığı sürece, bir web sitesi projesi kullanmayın .

Neden? Çünkü web sitesi projesi, projenizi değiştirmeye veya anlamaya çalışırken sizi duvara taşıyacaktır. Visual Studio'daki statik yazım bulma özelliklerinin (örneğin, kullanımları, refactor) makul boyuttaki herhangi bir projede sonsuza kadar süreceğini unutmayın. Daha fazla bilgi için Visual Studio'da Yığın Taşması sorusunun Yavaş “Tüm Referansları Bul” konusuna bakın. .

Acı uyandıran, aklı başında drene eden, verimlilik karbonkül web sitesi proje türü için neden Visual Studio 2005'te web uygulamalarını düşürdüklerini gerçekten göremiyorum.


30

MSDN'de farklılıkları açıklayan bir makale vardır:

Web Sitesi Projelerini ve Web Uygulama Projelerini Karşılaştırma

BTW: bu konuyla ilgili bazı benzer sorular var, örneğin:


Ben biçimlendirme kod dosyası veya codebehind kullanmalıyım hakkında cevap SO tarafından silinen cevap ile gitti
sanırım

Merak edenler için: web uygulaması = iyi yapılandırılmış çözüm = biçimlendirme içinde kod arkası VS web sitesi = dosya grubu = işaretlemede kod dosyası
frenchone 16:18

22

Bu biraz açık gelebilir, ancak sanırım bu yanlış anlaşılmış bir şey çünkü Visual Studio 2005 sadece web sitesi ile orijinal olarak gönderildi. Projeniz oldukça sınırlı olan ve çok fazla mantıksal veya fiziksel ayrımı olmayan bir web sitesi ile ilgileniyorsa, web sitesi iyidir. Ancak, birçok kullanıcının veri ekleyip güncellediği farklı modüllere sahip bir web uygulamasıysa, web uygulamasıyla daha iyi durumda olursunuz.

Web sitesi modelinin en büyük yanlısı app_codebölümdeki her şeyin dinamik olarak derlenmiş olmasıdır. Tam yeniden dağıtım yapmadan C # dosya güncellemeleri yapabilirsiniz. Ancak bu büyük bir fedakarlıkta bulunur. Örtülerin altında kontrol edilmesi zor birçok şey olur. Ad alanlarının kontrolü zordur ve app_codeher şey dinamik olarak derlendiğinden, belirli DLL kullanımı varsayılan olarak pencereden dışarı çıkar .

Web uygulama modelinin dinamik bir derlemesi yoktur, ancak bahsettiğim şeyler üzerinde kontrol sahibi olursunuz.

Eğer n-katmanlı geliştirme yapıyorsanız, web uygulama modelini tavsiye ederim. Sınırlı bir web sitesi veya hızlı ve kirli bir uygulama yapıyorsanız, web sitesi modelinin avantajları olabilir.

Daha ayrıntılı analizleri şu adreste bulabilirsiniz:


3
> Web sitesi modelinin en büyük yanlısı app_code bölümündeki her şeyin dinamik olarak derlenmesidir. Bunun da büyük bir dezavantajı var. Web sitem ucuz ama zengin özelliklere sahip webhost4life ile barındırılıyor. Dezavantajı, çalışan işlemi çok sık geri dönüştürmeleridir (15 dakika?) Bu, bir sonraki kullanıcının uygulama yeniden derlendiğinden çok yavaş bir ilk sayfa çıkışına sahip olduğu anlamına gelir.
Rob Nicholson

19

MCTS kendi hızınızda eğitim seti sınavı 70-515 kitabından:

Web uygulaması (proje) ile,

  1. Bir MVC uygulaması oluşturabilirsiniz.
  2. Visual Studio, dosyaların yapısını klasör yapısına bağlı kalmak yerine bir proje dosyasında (.csproj veya .vbproj) saklar.
  3. Visual Basic ve C # karıştıramazsınız.
  4. Hata ayıklama oturumunu durdurmadan kodu düzenleyemezsiniz.
  5. Birden çok web projesi arasında bağımlılıklar oluşturabilirsiniz.
  6. Dağıtımdan önce uygulamayı derlemeniz gerekir; bu, başka bir sayfa derlenmeyecekse bir sayfayı test etmenizi önler.
  7. Kaynak kodu sunucuda saklamanız gerekmez.
  8. Montaj adını ve sürümünü kontrol edebilirsiniz.
  9. Yeniden derlemeden dağıtımdan sonra tek tek dosyaları düzenleyemezsiniz.

# 4 yanlış. "Düzenle ve Devam Et" seçeneği bazı kısıtlamalarla etkinleştirilebilir. Belki bu 2011'de doğruydu. # 9 "yeniden derlemeden tek tek kaynak kodu dosyalarını düzenleyemezsiniz" demelidir. Yeniden derlemeden .aspx, .js, .css, vb. Düzenleyebilirsiniz.
John Saunders

# 4 farklı bir açıya sahiptir. Dosya> Aç> Web Sitesi'ni kullanarak bir web sitesini açar ve başlangıç ​​penceresinden çözümü seçerek siteyi açmak yerine web sitesinin dosya sistemi klasörüne giderseniz, sınıf modüllerini ve kod arkasını düzenleyebilirsiniz (en azından vb.net'te) ) hata ayıklamayı durdurmadan. Yeniden oluşturmaya kadar değişiklikleri görmezsiniz, ancak, kodu değiştirirken sayfa davranışını izlemek genellikle yararlıdır. Dezavantajı, çözüme giden her şeyi kaybedersiniz: kesme noktaları, dosyalar açılır, yer imleri vb. Ve bazen sln / sou dosyalarını silmeniz gerekir.
wayfarer

16

Ne geliştirdiğinize bağlı.

İçerik odaklı bir web sitesinin içeriği sık sık değişecektir ve bir Web sitesi bunun için daha iyidir.

Bir uygulama, verilerini bir veritabanında saklar ve sayfaları ile kodları nadiren değişir. Bu durumda, derlemelerin dağıtımının çok daha denetlendiği ve birim sınama için daha iyi desteğe sahip olduğu bir Web uygulamasına sahip olmak daha iyidir.


16

Compilation İlk olarak derlemede bir fark vardır. Web Sitesi sunucuda önceden derlenmemiş, dosyada derlenmiştir. Web sitenizdeki bir şeyi değiştirmek istediğinizde, sunucudan belirli bir dosyayı indirebilir, değiştirebilir ve bu dosyayı sunucuya geri yükleyebilirsiniz ve her şey iyi çalışır çünkü bir avantaj olabilir. Web Uygulaması'nda bunu yapamazsınız çünkü everthing önceden derlenmiştir ve yalnızca bir dll ile sonuçlanır. Projenizin bir dosyasındaki bir şeyi değiştirdiğinizde, her şeyi tekrar derlemeniz gerekir. Yani sunucu Web Sitesinde bazı dosyaları değiştirmek için bir olasılık var istiyorsanız sizin için daha iyi bir çözümdür. Ayrıca birçok geliştiricinin tek bir Web sitesinde çalışmasına izin verir. Diğer tarafta, kodunuzun sunucuda bulunmasını istemiyorsanız Web Uygulaması'nı tercih etmelisiniz.

Project structure Projenin yapısında da bir fark var. Web Uygulaması'nda normal uygulamada olduğu gibi bir proje dosyanız vardır. Web Sitesinde geleneksel bir proje dosyası yoktur, sahip olduğunuz tek şey çözüm dosyasıdır. Tüm referanslar ve ayarlar web.config dosyasında saklanır. @Page directive @Page yönergesinde bu sayfayla ilişkilendirilmiş sınıfı içeren dosya için farklı bir özellik var. Web Uygulamasında standart "CodeBehind" dir, Web Sitesinde "CodeFile" kullanırsınız. Bunu aşağıdaki örneklerde görebilirsiniz:

Web Uygulaması:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"  
Inherits="WebApplication._Default" %>  

İnternet sitesi:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

Ad alanları - Yukarıdaki örnekte başka bir fark da görebilirsiniz - ad alanlarının nasıl oluşturulduğu. Web Uygulamasında ad alanı sadece projenin adıdır. Web sitesinde dinamik olarak derlenmiş sayfalar için varsayılan ad alanı ASP vardır.

Düzenle ve Devam Et - Web Uygulaması Düzenle ve Devam Et seçeneği mevcuttur (açmak için Araçlar Menüsü'ne gitmeniz, Seçenekler'i ve ardından Hata Ayıklama'da Düzenle ve Devam Et'i bulmanız gerekir). Bu özellik Web Sitesinde çalışmıyor.ASP.NET MVCI kullanarak web uygulamaları geliştirmek istiyorsanız

ASP.NET MVC (Model View Controller) en iyi ve varsayılan seçenek Web Uygulamasıdır. MVC'yi Web Sitesinde kullanmak mümkün olmasına rağmen önerilmez.

Özet - ASP.NET Web Uygulaması ve Web Sitesi arasındaki en önemli fark derlemedir. Bu nedenle, birkaç kişinin değiştirebileceği daha büyük bir proje üzerinde çalışıyorsanız, Web Sitesini kullanmak daha iyidir. Ancak daha küçük bir proje yapıyorsanız, Web Uygulamasını da kullanabilirsiniz.


Birden fazla kişinin değiştirdiği büyük bir projede, kaynak kontrolünü kullanırsınız, bu nedenle bu web sitesi "projeleri" kullanmanın bir nedeni değildir.
John Saunders

Sayfa direktifinde codebehind (webapp) ve codefile (web sitesi) arasındaki fark için +1. Bu, seçilen cevapta eksik olan bir kesinliktir.
frenchone

11

Evet, web uygulamaları web sitelerinden çok daha iyidir, çünkü Web uygulamaları bize özgürlük verir:

  1. Tek bir çatı altında birden fazla projeye sahip olmak ve proje bağımlılıkları oluşturmak. Örneğin PCS için web uygulamasında aşağıdakilere sahip olabiliriz:

    • Web portalları
    • Bildirim Denetleyicisi (E-posta göndermek için)
    • İş katmanı
    • Veri Erişimi katmanı
    • İstisna Yöneticisi
    • Sunucu yardımcı programı
    • WCF Hizmetleri (Tüm platformlar için ortaktır)
    • Liste öğesi
  2. ASP.NET sayfalarıyla ilişkilendirilmiş sınıf dosyalarındaki kodda birim sınamaları çalıştırmak için

  3. Bağımsız sınıflardan sayfalar ve kullanıcı denetimleriyle ilişkili sınıflara başvurmak
  4. Tüm site için tek bir montaj oluşturmak için
  5. Site için oluşturulan montaj adı ve sürüm numarası üzerinde kontrol
  6. Bir üretim sunucusuna kaynak kodu koymaktan kaçınmak için. (Kaynak kodunu IIS sunucusuna dağıtmaktan kaçınabilirsiniz. Paylaşılan barındırma ortamları gibi bazı senaryolarda, IIS sunucusundaki kaynak koduna yetkisiz erişim konusunda endişe duyabilirsiniz. (Bir web sitesi projesi için, bir geliştirme bilgisayarında önceden derleme ve kaynak kod yerine oluşturulan derlemeleri dağıtma Ancak, bu durumda kolay site güncellemelerinin bazı avantajlarını kaybedersiniz.)
  7. Web Sitesiyle İlgili Performans Sorunu (Web sitesine yapılan ilk istek, sitenin derlenmesini gerektirebilir, bu da gecikmeye neden olabilir.Web sitesi, sitedeki tüm site de dahil olmak üzere bellekte kısa olan bir IIS sunucusunda çalışıyorsa tek bir montaj birden fazla montaj için gerekenden daha fazla bellek kullanabilir.)

11

Önemli farklılıklardan biri, Web Sitelerinin dinamik olarak derlenmesi ve anında derlemeler oluşturmasıdır. Web uygulayıcıları büyük bir montajda derlenir.

İkisi arasındaki fark Visual Studio 2008'de ortadan kaldırıldı.


4
"2 arasındaki fark vs2008'de ortadan kalktı" - orada ne demek istediğinizden emin değiller - VS2008'de hala farklı proje türleri, farklı davranıyorlar ve farklı menü seçenekleri ile oluşturuluyorlar - ancak en azından ikisi de varsayılan olarak mevcut VS2008.
Zhaph - Ben Duguid

9

Uygulamalar genellikle dağıtımdan önce derlenir ve web sitesi app_code dizinini kullanır. Uygulama kodu klasöründe herhangi bir değişiklik olduğunda, sunucu kodu yeniden derleyecektir. Bu, anında bir web sitesi ile kod ekleyebileceğiniz / değiştirebileceğiniz anlamına gelir.

Bir uygulamanın avantajı, yeniden derleme olmaması ve bu nedenle ilk başlatma sürelerinin daha hızlı olmasıdır.


Bu kısmen doğrudur, isterseniz web sitesindeki sayfaları önceden derleyebilirsiniz
derleyebilirsiniz Amr H. Abd Elmajeed

8

ASP.NET web sitesindeki videoyu Web Uygulaması Projeleri ve Web Dağıtım Projeleri'ni izlemenizi öneririm .

Bu arada, başlıkla karıştırmayın, videonun büyük bir kısmı web sitesi projeleri ve web uygulaması projeleri arasındaki farkı ve Microsoft'un neden Web uygulaması projelerini Visual studio 2005'te yeniden tanıttığını açıklıyor (muhtemelen bildiğiniz gibi, Başlangıçta sadece web sitesi projeleriyle birlikte gönderildikten sonra SP1'e web uygulama projeleri eklendi). Farkı bilmek isteyen herkese tavsiye ettiğim harika bir video.



7

Bir "web sitesi" özel bir App_Code dizininde koduna sahiptir ve çalışma zamanında birkaç DLL (derleme) halinde derlenmiştir. Bir "web uygulaması" tek bir DLL içinde önceden derlenmiştir.


5

Web sitesi ve Proje >> web sitesi, visual studio kullanarak ASP.NET uygulaması oluşturmanın iki farklı yöntemidir. Biri projesiz, diğeri proje ortamı. Farklılıklar şu şekildedir:

  1. Çözüm dosyası proje ortamında kök dizinle aynı dizinde depolanır.
  2. Proje ortamında dağıtmadan önce çözüm ve proje dosyalarını kaldırmanız gerekir.
  3. Tam kök dizini projesiz bir ortamda dağıtılır.

her iki yaklaşımda da temel bir fark yoktur. Ancak daha uzun sürecek bir web sitesi oluşturuyorsanız, proje ortamını tercih edin.


1
Çözüm dosyasının aynı klasörde olması gerekmez. Ayrıca, standart yayınlama mekanizması, hedef sitede olmaması gereken yapay nesneleri kaldırır; örneğin, kod arkasındaki dosyalar dağıtılmaz.
John Saunders

5

Web Uygulaması proje modeli

  • Visual Studio .NET Web projeleriyle aynı Web projesi anlamını sağlar. Proje dosyası vardır (proje dosyalarına dayalı yapı). Model oluştur - projedeki tüm kodlar tek bir montajda derlenir. Hem IIS'yi hem de yerleşik ASP.NET Development Server'ı destekler. Visual Studio 2005'in (yeniden düzenleme, jenerikler vb.) Ve ASP.NET'in (ana sayfalar, üyelik ve oturum açma, sitede gezinme, temalar vb.) Tüm özelliklerini destekler. FrontPage Sunucu Uzantıları'nı (FPSE) kullanmak artık bir gereklilik değildir.

Web Sitesi proje modeli

  • Proje dosyası yok (Dosya sistemine göre).
  • Yeni derleme modeli.
  • Her sayfa görünümünde sitenin tamamını oluşturmadan dinamik derleme ve sayfalarda çalışma.
  • Hem IIS'yi hem de yerleşik ASP.NET Development Server'ı destekler.
  • Her sayfanın kendi montajı vardır.
  • Farklı kod modeli.

5

Her zaman müşterinizin ihtiyacına bağlıdır. ASP.NET yalnızca kullanıcının uygulamanızın güvenliği ve kolay bakımı için ihtiyaç duyduğu esnek özellikleri içerir.

Bir Web uygulamasını ASP.NET çerçevesi içinde çalışan bir ikili dosya olarak düşünebilirsiniz . Ve Web sitelerini statik bir web sayfası olarak inceleyip kaynak kodunu kolayca dağıtabilirsiniz.

Ancak bu iki ASP.NET teknolojisinin avantaj ve dezavantajları iyi olanı getirir.


4

Web siteleri - Çözüm dosyası oluşturulmaz. Web siteleri oluşturmak istiyorsak görsel stüdyoya gerek yok.

Web Uygulaması - Bir çözüm dosyası oluşturulacaktır. Web uygulaması oluşturmak istiyorsak görsel stüdyoya ihtiyacımız var. .dllBin klasöründe tek bir dosya oluşturur .


2
-1 Visual studio üzerinden bir web sitesi projesi oluşturursanız aslında bir çözüm dosyanız var. Bir proje dosyanız yok.
Darren

+1 emin, bir çözüm dosyası oluşturabilirsiniz, ancak bu dosya çoğunlukla boştur, bu yüzden sadece bir sıkıntıdır (VS dosyayı çıkışta nereye kaydedeceğini sorar) ve yararlı bir şey değil
frenchone 16:18

3

Web Uygulaması Projeleri'nde, Visual Studio'nun sayfalar ve kullanıcı denetimleri için ek .designer dosyalarına ihtiyacı vardır. Web Sitesi Projeleri bu ek yükü gerektirmez. İşaretlemenin kendisi tasarım olarak yorumlanır.


3

Web Sitesi: App_code klasörünü otomatik olarak oluşturur ve sunucuda yayınlarsanız ve bundan sonra belirli bir dosya veya sayfada bazı değişiklikler yaparsanız, tüm dosyaları derlemeniz gerekmez.

Web Uygulaması Web sitesinin üretmediği otomatik olarak çözüm dosyası oluşturur ve tek bir dosyada değiştirirseniz, değişikliklerini yansıtmak için tam projeyi derlemeniz gerekir.


"Tam projenin derlenmesi", projedeki her dosyanın derlenmesi anlamına gelmez. Değişmeyen kaynak kodu dosyaları yeniden derlenmeyecektir.
John Saunders

3

Bir web uygulamasında, projenizin işlevselliğinin katmanlarını oluşturabilir ve birçok projeye bölerek aralarında bağımlılıklar oluşturabilirsiniz, ancak bunu bir web sitesinde asla yapamazsınız.


3

Kesinlikle web uygulaması, tek DLL dosyası ve bakımı kolaydır. Ancak bir web sitesi daha esnektir; hareket halindeyken aspx dosyasını düzenleyebilirsiniz.


Aspx dosyasını bir web uygulaması projesinde de düzenleyebilirsiniz.
John Saunders

3

Web uygulamaları, muhtemelen tek bir derlemede derleme seçeneğiniz olmadığı için daha fazla bellek gerektirir. Sadece eski bir web sitesini bir web uygulamasına dönüştürdüm ve hafızanın tükenmesi ile ilgili problemlerim var, her ikisi de aşağıdaki hata mesajıyla derleme zamanında:

Unexpected error writing metadata to file '' -- 
Not enough storage is available to complete this operation. 

hata ve aşağıdaki gibi bu hata mesajıyla çalışma zamanında:

Exception information: 
    Exception type: HttpException 
    Exception message: Exception of type 'System.OutOfMemoryException' was thrown.
   at System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()

Bellek kısıtlamalı eski donanımda daha büyük siteleri dönüştürmek için önerim, web sitesi modeline geri dönme seçeneğini seçmek. Başlangıçtaki bir başarıdan sonra bile sorun daha sonra ortaya çıkabilir.


Bu bir derleme zamanı istisnası gibi görünmüyor.
John Saunders

1

Burada Web Destekleyici Uygulama bir web sitesi örneğidir.

Burada Web Destekleyici Uygulama bir web sitesi örneğidir. Web sitesi ve Web Uygulaması hem dinamik / statik olabilir, gerekliliklere bağlıdır, burada web sitesinin ve web uygulamasının çalışmasını anlamak için bir örnek bulunmaktadır.


Bu, asp.net için geçerli değildir. Web sitesi / web uygulaması ayrımı (asp.net terminolojisinde) dosyaların nasıl organize edildiği (iyi organize edilmiş bir çözüm olarak veya bir grup dosya olarak) ve derlenmiş ("JIT" - statik) hakkında daha fazla bilgi. Her iki durumda da, "program" çoğunlukla sunucu tarafıdır.
frenchone

0

Yukarıdaki cevaplardan bazılarını özetlemek gerekirse:

Esneklik , bir web sayfasında canlı değişiklikler yapabilir misiniz?

Web Sitesi : Mümkün. Pro: kısa vadeli faydalar. Con: uzun vadeli proje kaos riski.

internet uygulaması : Con: mümkün değil. Bir sayfayı düzenleyin, kaynak denetimindeki değişiklikleri arşivleyin, ardından tüm siteyi oluşturun ve dağıtın. Pro: kaliteli bir proje sürdürmek.

Geliştirme sorunları

Web Sitesi : .csproj dosyası olmayan basit proje yapısı. İki .aspx sayfası çakışma olmadan aynı sınıf adına sahip olabilir. .Net framework neden kendi oluşturulmuş dosyayla çakışıyor ve .net framework neden kendi oluşturulmuş dosya ile çakışıyor gibi hatalara yol açan rastgele proje dizin adı . Pro: Basit (basit). Con: düzensiz.

Web Uygulaması : .csproj dosyasıyla WebForms projesine benzer proje yapısı. Asp sayfalarının sınıf adları benzersiz olmalıdır. Pro: Basit (akıllı). Con: yok, çünkü bir web uygulaması hala basit.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.