Pertanyaan ASP.NET Web Site atau ASP.NET Web Application?


Ketika saya memulai proyek ASP.NET baru di Visual Studio, saya bisa membuat ASP.NET Web Application atau saya dapat membuat Situs Web ASP.NET.

Apa perbedaan antara ASP.NET Web Application dan ASP.NET Web Site? Mengapa saya memilih salah satu dari yang lain?

Apakah jawabannya berbeda berdasarkan versi Visual Studio mana yang saya gunakan?


777
2017-12-29 16:24


asal


Jawaban:


Situs web:

Itu Situs web proyek dikompilasi dengan cepat. Anda berakhir dengan lebih banyak file DLL, yang bisa menjadi sakit. Ini juga memberikan masalah ketika Anda memiliki halaman atau kontrol dalam satu direktori yang perlu halaman referensi dan kontrol di direktori lain karena direktori lain mungkin belum dikompilasi ke dalam kode. Masalah lain bisa dalam penerbitan.

Jika Visual Studio tidak diberitahu untuk menggunakan kembali nama yang sama secara konstan, maka akan muncul dengan nama baru untuk file DLL yang dihasilkan oleh halaman setiap saat. Itu dapat menyebabkan memiliki beberapa salinan dekat file DLL yang berisi nama kelas yang sama, yang akan menghasilkan banyak kesalahan. Proyek Situs Web diperkenalkan dengan Visual Studio 2005, tetapi ternyata tidak terlalu populer.

Aplikasi web:

Itu Aplikasi web Proyek dibuat sebagai tambahan dan sekarang ada sebagai bagian SP 1 untuk Visual Studio 2005. Perbedaan utama adalah Proyek Aplikasi Web dirancang untuk bekerja mirip dengan proyek-proyek Web yang dikirim dengan Visual Studio 2003. Ini akan mengkompilasi aplikasi ke dalam file DLL tunggal di build waktu. Untuk memperbarui proyek, harus dikompilasi ulang dan file DLL diterbitkan untuk perubahan terjadi.

Fitur bagus lainnya dari Aplikasi Web proyek jauh lebih mudah untuk mengecualikan file dari tampilan proyek. Dalam Proyek Situs Web, setiap file yang Anda kecualikan diganti namanya dengan yang dikecualikan kata kunci dalam nama file. Di Proyek Aplikasi Web, proyeknya saja melacak file mana yang harus disertakan / dikecualikan dari tampilan proyek tanpa mengganti nama mereka, membuat hal-hal menjadi lebih rapi.

Referensi

Artikel ASP.NET 2.0 - Situs Web vs proyek Aplikasi Web juga memberikan alasan mengapa menggunakan satu dan tidak yang lain. Berikut adalah kutipannya:

  • Anda perlu memigrasi aplikasi Visual Studio .NET 2003 besar ke VS   2005? menggunakan proyek Aplikasi Web.
  • Anda ingin membuka dan mengedit direktori apa pun sebagai proyek Web tanpa   membuat file proyek? gunakan Situs Web   proyek.
  • Anda perlu menambahkan langkah-langkah pra-build dan post-build selama kompilasi?    menggunakan proyek Aplikasi Web.
  • Anda perlu membangun aplikasi Web menggunakan banyak Web   proyek? menggunakan proyek Aplikasi Web.
  • Anda ingin menghasilkan satu perakitan untuk setiap halaman? menggunakan proyek Situs Web. 
  • Anda lebih memilih kompilasi dinamis dan mengerjakan halaman tanpa membangun   seluruh situs pada setiap tampilan halaman? gunakan Web   Proyek situs. 
  • Anda lebih memilih model kode satu halaman ke model kode di belakang? gunakan Situs Web   proyek.

Proyek Aplikasi Web versus Proyek Situs Web(MSDN) menjelaskan perbedaan antara situs web dan proyek aplikasi web. Juga, ia membahas konfigurasi yang akan dibuat dalam Visual Studio.


507
2018-03-09 19:16



Situs web adalah apa yang Anda menyebarkan ke server web ASP.NET seperti IIS. Hanya sekelompok file dan folder. Tidak ada di Situs Web yang mengikat Anda dengan Visual Studio (tidak ada file proyek). Pembuatan kode dan kompilasi halaman web (seperti .aspx, .ascx, .master) selesai secara dinamis saat runtime, dan perubahan pada file-file ini dideteksi oleh kerangka kerja dan secara otomatis dikompilasi ulang. Anda dapat memasukkan kode yang Anda inginkan bagikan antar halaman di folder App_Code khusus, atau Anda dapat melakukan pra-kompilasi dan menempatkan perakitan di folder Bin.

Aplikasi web adalah proyek Visual Studio khusus. Perbedaan utama dengan Situs Web adalah ketika Anda membangun proyek, semua file kode dikompilasi menjadi satu rakitan, yang ditempatkan di direktori bin. Anda tidak menyebarkan file kode ke server web. Daripada memiliki folder khusus untuk file kode bersama, Anda dapat menempatkannya di mana saja, seperti yang akan Anda lakukan di perpustakaan kelas. Karena Aplikasi Web berisi file yang tidak dimaksudkan untuk digunakan, seperti proyek dan file kode, ada a Menerbitkan perintah dalam Visual Studio untuk menampilkan Situs Web ke lokasi yang ditentukan.

App_Code vs. Bin

Menerapkan file kode bersama umumnya merupakan ide yang buruk, tetapi itu tidak berarti Anda harus memilih Aplikasi Web. Anda dapat memiliki Situs Web yang mereferensikan proyek perpustakaan kelas yang menyimpan semua kode untuk Situs Web. Aplikasi Web hanyalah cara mudah untuk melakukannya.

CodeBehind

Topik ini khusus untuk file .aspx dan .ascx. Topik ini semakin relevan dalam kerangka kerja aplikasi baru seperti ASP.NET MVC dan ASP.NET Web Pages yang tidak menggunakan file codebehind.

Dengan membuat semua file kode dikompilasi menjadi satu rakitan, termasuk codebehind file halaman .aspx dan .ascx mengontrol, dalam Aplikasi Web Anda harus membangun kembali untuk setiap perubahan kecil, dan Anda tidak dapat membuat perubahan langsung. Ini bisa menjadi sakit nyata selama pengembangan, karena Anda harus terus membangun kembali untuk melihat perubahan, sementara dengan perubahan Situs Web dideteksi oleh runtime dan halaman / kontrol secara otomatis dikompilasi ulang.

Setelah runtime mengelola kumpulan codebehind adalah pekerjaan kurang untuk Anda, karena Anda tidak perlu khawatir tentang memberikan halaman / mengontrol nama-nama unik, atau mengatur mereka ke ruang nama yang berbeda.

Saya tidak mengatakan menyebarkan file kode selalu merupakan ide yang baik (khususnya tidak dalam kasus file kode bersama), tetapi file codebehind seharusnya hanya berisi kode yang melakukan tugas khusus UI, penangan kejadian kawat, dll. Aplikasi Anda harus berlapis sehingga kode penting selalu berakhir di folder Bin. Jika itu terjadi maka menyebarkan file codebehind seharusnya tidak dianggap berbahaya.

Keterbatasan lain dari Aplikasi Web adalah Anda hanya dapat menggunakan bahasa proyek. Di Situs Web Anda dapat memiliki beberapa halaman di C #, beberapa di VB, dll. Tidak memerlukan dukungan Visual Studio khusus. Itulah keindahan perpanjangan penyedia build.

Juga, di Aplikasi Web Anda tidak mendapatkan deteksi kesalahan di halaman / kontrol karena kompiler hanya mengkompilasi kelas codebehind Anda dan bukan kode markup (di MVC Anda dapat memperbaiki ini menggunakan opsi MvcBuildViews), yang dikompilasi saat runtime.

Studio visual

Karena Aplikasi Web adalah proyek Visual Studio, Anda mendapatkan beberapa fitur yang tidak tersedia di Situs Web. Misalnya, Anda dapat menggunakan acara membangun untuk melakukan berbagai tugas, mis. minify dan / atau menggabungkan file Javascript.

Fitur bagus lainnya yang diperkenalkan di Visual Studio 2010 adalah Transformasi Web.config. Ini juga tidak tersedia di Situs Web. Sekarang bekerja dengan Situs Web di VS 2013.

Membangun Aplikasi Web lebih cepat daripada membangun Situs Web, khususnya untuk situs besar. Ini terutama karena Aplikasi Web tidak mengkompilasi kode markup. Dalam MVC jika Anda mengatur MvcBuildViews menjadi true maka ia mengkompilasi kode markup dan Anda mendapatkan deteksi kesalahan, yang sangat berguna. Sisi bawahnya adalah bahwa setiap kali Anda membangun solusi, ia membangun situs lengkap, yang bisa lambat dan tidak efisien, khususnya jika Anda tidak mengedit situs. Saya menemukan diri saya menghidupkan dan mematikan MvcBuildViews (yang membutuhkan proyek membongkar). Di sisi lain, dengan Situs Web Anda dapat memilih apakah Anda ingin membangun situs sebagai bagian dari solusi atau tidak. Jika Anda memilih untuk tidak, maka membangun solusinya sangat cepat, dan Anda selalu dapat mengeklik nod Situs Web dan memilih Build, jika Anda telah melakukan perubahan.

Dalam proyek Aplikasi Web MVC Anda memiliki perintah dan dialog tambahan untuk tugas-tugas umum, seperti ‘Tambah Tampilan’, ‘Pergi ke Tampilan’, ‘Tambah Pengontrol’, dll. Ini tidak tersedia di Situs Web MVC.

Jika Anda menggunakan IIS Express sebagai server pengembangan, di Situs Web Anda dapat menambahkan direktori virtual. Pilihan ini tidak tersedia di Aplikasi Web.

Pemulihan Paket NuGet tidak berfungsi di Situs Web, Anda harus menginstal paket secara manual yang terdaftar di packages.config Paket Kembalikan sekarang berfungsi dengan Situs Web memulai NuGet 2.7


153
2018-03-04 14:19



Situs web = digunakan ketika situs web dibuat oleh desainer grafis dan pemrogram hanya mengedit satu atau dua halaman

Aplikasi web = digunakan ketika aplikasi dibuat oleh programmer dan desainer grafis hanya mengedit satu atau dua paged / gambar.

Situs Web dapat dikerjakan dengan menggunakan alat HTML apa pun tanpa harus memiliki studio pengembang, karena file proyek tidak perlu diperbarui, dll. Aplikasi web paling baik ketika tim kebanyakan menggunakan studio pengembang dan ada konten kode yang tinggi.

(Beberapa kesalahan pengkodean ditemukan dalam Aplikasi Web pada waktu kompilasi yang tidak ditemukan di Situs Web hingga waktu berjalan.)

PERINGATAN:  Saya menulis jawaban ini bertahun-tahun yang lalu dan belum menggunakan Asp.net sejak itu. Saya berharap segala sesuatunya telah berubah.


69
2017-07-15 20:15



Kecuali Anda memiliki kebutuhan khusus untuk proyek yang dikompilasi secara dinamis, jangan gunakan proyek situs web.

Mengapa? Karena proyek situs web akan mendorong Anda ke dinding ketika mencoba mengubah atau memahami proyek Anda. Fitur-fitur pencarian pengetikan statis (misalnya mencari penggunaan, refactor) dalam Visual Studio akan memakan waktu selamanya untuk setiap proyek berukuran wajar. Untuk informasi lebih lanjut, lihat pertanyaan Stack Overflow Lambat "Cari Semua Referensi" di Visual Studio.

Saya benar-benar tidak dapat melihat mengapa mereka menjatuhkan aplikasi web di Visual Studio 2005 untuk jenis proyek situs web yang memicu rasa sakit, yang menguras tenaga, produktivitas carbuncle.


37
2018-01-24 12:16



Ada artikel di MSDN yang menjelaskan perbedaannya:

Membandingkan Proyek Situs Web dan Proyek Aplikasi Web

BTW: ada beberapa pertanyaan serupa tentang topik itu, misalnya:


26
2017-12-29 17:23



Ini mungkin terdengar agak jelas, tapi saya pikir itu adalah sesuatu yang disalahpahami karena Visual Studio 2005 hanya dikirimkan dengan situs web aslinya. Jika proyek Anda berhubungan dengan situs web yang cukup terbatas dan tidak memiliki banyak pemisahan logis atau fisik, situs web ini baik-baik saja. Namun jika itu benar-benar aplikasi web dengan modul yang berbeda di mana banyak pengguna menambahkan dan memperbarui data, Anda lebih baik dengan aplikasi web.

Pro terbesar dari model situs web adalah apa pun di app_code Bagian dikompilasi secara dinamis. Anda dapat membuat pembaruan C # file tanpa redeploy penuh. Namun ini datang dengan pengorbanan besar. Banyak hal terjadi di bawah selimut yang sulit dikendalikan. Namespaces sulit untuk dikontrol dan penggunaan DLL tertentu keluar dari jendela secara default untuk semua yang ada di bawah app_code karena semuanya dikompilasi secara dinamis.

Model aplikasi web tidak memiliki kompilasi dinamis, tetapi Anda mendapatkan kontrol atas hal-hal yang telah saya sebutkan.

Jika Anda melakukan pengembangan n-tier, saya sangat merekomendasikan model aplikasi web. Jika Anda melakukan situs web terbatas atau implementasi cepat dan kotor, model situs web mungkin memiliki kelebihan.

Analisis lebih rinci dapat ditemukan di:


19
2017-07-07 11:56



Dari MCTS self maced training kit ujian 70-515 buku:

Dengan aplikasi web (proyek),

  1. Anda dapat membuat aplikasi MVC.
  2. Visual Studio menyimpan daftar file dalam file proyek (.csproj atau .vbproj), daripada mengandalkan struktur folder.
  3. Anda tidak dapat mencampur Visual Basic dan C #.
  4. Anda tidak dapat mengedit kode tanpa menghentikan sesi debugging.
  5. Anda dapat menetapkan dependensi antara beberapa proyek web.
  6. Anda harus mengkompilasi aplikasi sebelum penerapan, yang mencegah Anda menguji halaman jika halaman lain tidak dapat dikompilasi.
  7. Anda tidak perlu menyimpan kode sumber di server.
  8. Anda dapat mengontrol nama dan versi perakitan.
  9. Anda tidak dapat mengedit file individual setelah penyebaran tanpa mengkompilasi ulang.

18
2018-01-03 13:52



Compilation  Pertama ada perbedaan dalam kompilasi. Situs Web tidak dikompilasi di server, itu dikompilasi di file. Itu mungkin   suatu keuntungan karena ketika Anda ingin mengubah sesuatu di Web Anda   Situs Anda dapat mengunduh file tertentu dari server, mengubahnya, dan   upload file ini kembali ke server dan semuanya akan berfungsi dengan baik. Di Web   Aplikasi Anda tidak dapat melakukan ini karena everthing sudah dikompilasi dan   Anda berakhir hanya dengan satu dll. Ketika Anda mengubah sesuatu dalam satu file   proyek Anda Anda harus mengkompilasi ulang semuanya lagi. Jadi, jika Anda mau   ingin memiliki kemungkinan untuk mengubah beberapa file di Situs Web server tersebut   solusi yang lebih baik untuk Anda. Ini juga memungkinkan banyak pengembang untuk bekerja pada satu   Situs web. Di sisi lain, jika Anda tidak ingin kode Anda menjadi   tersedia di server, Anda sebaiknya memilih Aplikasi Web. Ini   Pilihan juga lebih baik untuk Pengujian Unit karena satu file DLL sedang   dibuat setelah mempublikasikan situs web Anda.

Project structureAda juga perbedaan dalam struktur proyek. Dalam Aplikasi Web, Anda memiliki file proyek seperti yang Anda miliki dalam aplikasi normal. Di Situs Web tidak ada file proyek tradisional, yang Anda miliki hanyalah file solusi. Semua referensi dan pengaturan disimpan dalam file web.config. @Page directive  Ada atribut yang berbeda dalam direktif @Page untuk file yang berisi kelas yang terkait dengan halaman ini. Dalam Aplikasi Web itu adalah standar "CodeBehind", di Situs Web Anda menggunakan "CodeFile". Anda dapat melihat ini dalam contoh di bawah ini:

Web Application:

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

Situs web:

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

Namespaces - Dalam contoh di atas Anda dapat melihat perbedaan lain -   bagaimana namespace dibuat. Dalam namespace Aplikasi Web hanyalah a   nama proyek. Di Situs Web ada ASP namespace default untuk   halaman yang dikompilasi secara dinamis.

Edit dan Lanjutkan- Dalam Aplikasi Web Edit dan opsi Lanjutkan adalah   tersedia (untuk menyalakannya Anda harus pergi ke Menu Tools, klik Options   kemudian temukan Edit dan Lanjutkan di Debugging). Fitur ini tidak berfungsi   di Web Site.ASP.NET MVCIf Anda ingin mengembangkan aplikasi web menggunakan

ASP.NET MVC (Model View Controller) opsi terbaik dan default adalah   Aplikasi web. Meskipun dimungkinkan untuk menggunakan MVC di Situs Web itu   tidak direkomendasikan.

Ringkasan - Perbedaan terpenting antara ASP.NET Web Application   dan Situs Web adalah kompilasi. Jadi jika Anda mengerjakan proyek yang lebih besar di mana   beberapa orang dapat mengubahnya lebih baik menggunakan Situs Web. Tetapi jika Anda   melakukan proyek yang lebih kecil Anda dapat menggunakan Aplikasi Web juga.


12
2018-01-24 12:17



Itu tergantung pada apa yang Anda kembangkan.

Situs web yang berorientasi pada konten akan mengubah kontennya sering dan Situs web lebih baik untuk itu.

Aplikasi cenderung memiliki data yang disimpan dalam database dan perubahan halaman dan kode yang jarang. Dalam hal ini lebih baik untuk memiliki aplikasi Web di mana penyebaran majelis jauh lebih terkontrol dan memiliki dukungan yang lebih baik untuk pengujian unit.


12
2018-01-24 12:19