Ketika saya memulai proyek ASP.NET baru di Visual Studio, saya bisa membuat Aplikasi Web ASP.NET atau saya bisa membuat Situs Web ASP.NET.
Apa perbedaan antara Aplikasi Web ASP.NET dan Situs Web ASP.NET? Mengapa saya memilih satu dari yang lain?
Apakah jawabannya berbeda berdasarkan versi Visual Studio yang saya gunakan?
asp.net
.net
visual-studio
projects-and-solutions
Robert S.
sumber
sumber
Jawaban:
Situs web:
The Web Site proyek dikompilasi dengan cepat. Anda berakhir dengan lebih banyak file DLL, yang bisa sangat menyebalkan. Ini juga memberikan masalah ketika Anda memiliki halaman atau kontrol dalam satu direktori yang perlu merujuk halaman dan kontrol di direktori lain karena direktori lain mungkin belum dikompilasi ke dalam kode. Masalah lain bisa di penerbitan.
Jika Visual Studio tidak diperintahkan untuk menggunakan kembali nama yang sama secara konstan, itu akan muncul dengan nama baru untuk file DLL yang dihasilkan oleh halaman sepanjang waktu. Itu dapat menyebabkan memiliki beberapa salinan dekat file DLL yang mengandung nama kelas yang sama, yang akan menghasilkan banyak kesalahan. Proyek Situs Web diperkenalkan dengan Visual Studio 2005, tetapi ternyata tidak menjadi populer.
Aplikasi web:
The Web Application Project diciptakan sebagai add-in dan sekarang ada sebagai bagian dari SP 1 untuk Visual Studio 2005. Perbedaan utama adalah Application Project Web dirancang untuk bekerja sama dengan proyek-proyek Web yang dikirimkan dengan Visual Studio 2003. Ini akan mengkompilasi aplikasi menjadi satu file DLL saat membangun. Untuk memperbarui proyek, itu harus dikompilasi ulang dan file DLL diterbitkan agar terjadi perubahan.
Fitur bagus lain dari proyek Aplikasi Web adalah lebih mudah untuk mengecualikan file dari tampilan proyek. Dalam proyek Situs Web, setiap file yang Anda kecualikan diganti dengan kata kunci yang dikecualikan dalam nama file. Dalam Proyek Aplikasi Web, proyek hanya melacak file mana yang akan dimasukkan / dikecualikan dari tampilan proyek tanpa mengubah nama mereka, membuat hal-hal jauh lebih rapi.
Referensi
Artikel ASP.NET 2.0 - Situs Web vs proyek Aplikasi Web juga memberikan alasan mengapa menggunakan satu dan bukan yang lain. Berikut ini kutipannya:
Proyek Aplikasi Web versus Proyek Situs Web (MSDN) menjelaskan perbedaan antara situs web dan proyek aplikasi web. Juga, membahas konfigurasi yang akan dibuat di Visual Studio.
sumber
Situs Web adalah apa yang Anda sebarkan ke server web ASP.NET seperti IIS. Hanya banyak file dan folder. Tidak ada apa pun di Situs Web yang mengikat Anda ke Visual Studio (tidak ada file proyek). Pembuatan kode dan kompilasi halaman web (seperti .aspx, .ascx, .master) dilakukan secara dinamis saat runtime , dan perubahan pada file-file ini terdeteksi oleh framework dan secara otomatis dikompilasi ulang. Anda dapat meletakkan kode yang ingin Anda bagikan di antara halaman-halaman dalam folder App_Code khusus, atau Anda dapat melakukan pra-kompilasi dan meletakkannya di folder Bin.
Aplikasi Web adalah proyek Visual Studio khusus. Perbedaan utama dengan Situs Web adalah bahwa ketika Anda membangun proyek semua file kode dikompilasi menjadi satu rakitan, yang ditempatkan di direktori bin. Anda tidak menyebarkan file kode ke server web. Alih-alih memiliki folder khusus untuk file kode bersama, Anda dapat menempatkannya di mana saja, seperti yang Anda lakukan di perpustakaan kelas. Karena Aplikasi Web berisi file yang tidak dimaksudkan untuk digunakan, seperti file proyek dan kode, ada perintah Publikasikan di Visual Studio untuk menampilkan Situs Web ke lokasi yang ditentukan.
App_Code vs Bin
Menyebarkan file kode bersama umumnya adalah ide yang buruk, tetapi itu tidak berarti Anda harus memilih Aplikasi Web. Anda dapat memiliki Situs Web yang merujuk proyek perpustakaan kelas yang menyimpan semua kode untuk Situs Web. Aplikasi Web hanyalah cara mudah untuk melakukannya.
Kode di Balik
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 memiliki semua file kode dikompilasi dalam satu sidang, termasuk CodeBehind file dari halaman .aspx dan kontrol Ascx, Aplikasi Web Anda harus membangun kembali untuk setiap perubahan kecil, dan Anda tidak dapat membuat perubahan hidup. Ini bisa sangat menyakitkan selama pengembangan, karena Anda harus terus membangun kembali untuk melihat perubahan, sementara dengan Situs Web perubahan terdeteksi oleh runtime dan halaman / kontrol secara otomatis dikompilasi ulang.
Memiliki runtime mengelola majelis codebehind kurang bekerja untuk Anda, karena Anda tidak perlu khawatir tentang memberikan halaman / mengontrol nama-nama unik, atau mengaturnya ke dalam 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 hanya boleh berisi kode yang melakukan tugas-tugas spesifik UI, wire-up event handler, dll. Aplikasi Anda harus berlapis sehingga kode penting selalu berakhir di folder Bin. Jika itu masalahnya, maka menyebarkan file codebehind tidak dianggap berbahaya.
Keterbatasan Aplikasi Web lainnya adalah Anda hanya dapat menggunakan bahasa proyek. Di Situs Web Anda dapat memiliki beberapa halaman di C #, beberapa di VB, dll. Tidak perlu dukungan Visual Studio khusus. Itulah keindahan dari ekstensibilitas penyedia layanan.
Juga, di Aplikasi Web Anda tidak mendapatkan deteksi kesalahan di halaman / kontrol karena kompilator hanya mengkompilasi kelas codebehind Anda dan bukan kode markup (dalam MVC Anda dapat memperbaikinya menggunakan opsi MvcBuildViews), yang dikompilasi pada 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 build event untuk melakukan berbagai tugas, mis., Minify dan / atau menggabungkan file Javascript.
Fitur bagus lain yang diperkenalkan dalam Visual Studio 2010 adalah transformasi Web.config .
Ini juga tidak tersedia di Situs Web.Sekarang berfungsi 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 buruknya 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 pembongkaran proyek). 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 melakukannya, maka membangun solusinya sangat cepat, dan Anda selalu dapat mengklik simpul Situs Web dan pilih Build, jika Anda telah membuat perubahan.
Dalam proyek Aplikasi Web MVC, Anda memiliki perintah dan dialog tambahan untuk tugas-tugas umum, seperti 'Tambah Tampilan', 'Buka Tampilan', 'Tambah Kontroler', dll. Ini tidak tersedia di Situs Web MVC.
Jika Anda menggunakan IIS Express sebagai server pengembangan, di Situs Web Anda dapat menambahkan direktori virtual. Opsi ini tidak tersedia di Aplikasi Web.
Pemulihan Paket NuGet tidak berfungsi di Situs Web, Anda harus menginstal paket secara manual yang terdaftar di packages.configPackage Restore sekarang berfungsi dengan Situs Web mulai NuGet 2.7sumber
Situs Web = digunakan ketika situs web dibuat oleh desainer grafis dan programmer hanya mengedit satu atau dua halaman
Aplikasi Web = digunakan ketika aplikasi dibuat oleh programmer dan desainer grafis hanya mengedit satu atau dua halaman / gambar.
Situs Web dapat dikerjakan menggunakan alat HTML apa pun tanpa harus memiliki studio pengembang, karena file proyek tidak perlu diperbarui, dll. Aplikasi web terbaik ketika tim sebagian besar menggunakan studio pengembang dan ada konten kode yang tinggi.
(Beberapa kesalahan pengkodean ditemukan di Aplikasi Web pada waktu kompilasi yang tidak ditemukan di Situs Web hingga waktu berjalan.)
Peringatan: Saya menulis jawaban ini bertahun-tahun yang lalu dan sejak itu tidak menggunakan Asp.net. Saya berharap hal-hal sekarang telah pindah.
sumber
Kecuali jika Anda memiliki kebutuhan khusus untuk proyek yang dikompilasi secara dinamis, jangan gunakan proyek situs web .
Mengapa? Karena proyek situs web akan membuat Anda bingung ketika mencoba mengubah atau memahami proyek Anda. Fitur pencarian pengetikan statis (mis. Penggunaan penggunaan, refactor) di Visual Studio semuanya akan berlangsung selamanya pada setiap proyek berukuran wajar. Untuk informasi lebih lanjut, lihat pertanyaan Stack Overflow Lambat "Temukan 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 carbuncle yang merangsang rasa sakit, menguras produktivitas, dan meningkatkan produktivitas.
sumber
Ada artikel di MSDN yang menjelaskan perbedaan:
Membandingkan Proyek Situs Web dan Proyek Aplikasi Web
BTW: ada beberapa pertanyaan serupa tentang topik itu, misalnya:
sumber
Ini mungkin terdengar agak jelas, tetapi saya pikir itu adalah sesuatu yang disalahpahami karena Visual Studio 2005 hanya dikirim dengan situs web pada awalnya. Jika proyek Anda berurusan dengan situs web yang cukup terbatas dan tidak memiliki banyak pemisahan logis atau fisik, situs web itu baik-baik saja. Namun jika itu benar-benar aplikasi web dengan modul berbeda di mana banyak pengguna menambahkan dan memperbarui data, Anda lebih baik dengan aplikasi web.
Pro terbesar dari model situs web adalah bahwa apa pun di
app_code
bagian ini dikompilasi secara dinamis. Anda dapat membuat pembaruan file C # tanpa menggunakan kembali sepenuhnya. Namun ini datang dengan pengorbanan besar. Banyak hal terjadi di bawah selimut yang sulit dikendalikan. Ruang nama sulit untuk dikendalikan dan penggunaan DLL tertentu keluar jendela secara default untuk apa pun di bawahapp_code
karena semuanya dikompilasi secara dinamis.Model aplikasi web tidak memiliki kompilasi dinamis, tetapi Anda mendapatkan kendali 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:
sumber
Dari buku kit pelatihan MCTS self-pacu 70-515 buku:
sumber
Itu tergantung pada apa yang Anda kembangkan.
Situs web berorientasi konten akan sering mengubah kontennya dan Situs Web lebih baik untuk itu.
Suatu aplikasi cenderung memiliki data yang disimpan dalam database dan halaman-halamannya dan perubahan kode jarang terjadi. 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.
sumber
Project structure
Ada juga perbedaan dalam struktur proyek. Di Aplikasi Web Anda memiliki file proyek seperti yang Anda miliki di 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 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:Aplikasi web:
Situs web:
sumber
Ya, aplikasi web jauh lebih baik daripada situs web, karena aplikasi Web memberi kita kebebasan:
Untuk memiliki beberapa proyek di bawah satu payung dan membangun ketergantungan proyek antara. Misalnya untuk PCS kita dapat mengikuti di dalam aplikasi web-
Untuk menjalankan tes unit pada kode yang ada di file kelas yang terkait dengan halaman ASP.NET
sumber
Salah satu perbedaan utama adalah bahwa Situs Web mengkompilasi secara dinamis dan membuat rakitan on-the-fly. Aplikasi web dikompilasi menjadi satu majelis besar.
Perbedaan antara keduanya telah dihilangkan dalam Visual Studio 2008.
sumber
Aplikasi biasanya dikompilasi sebelum penyebaran di mana situs web menggunakan direktori app_code. Ketika ada perubahan di folder kode aplikasi server akan mengkompilasi ulang kode tersebut. Ini berarti Anda dapat menambah / mengubah kode dengan situs web saat itu juga.
Keuntungan dari suatu aplikasi adalah tidak ada kompilasi ulang sehingga waktu memulai awal akan lebih cepat.
sumber
Saya sarankan Anda menonton video Project Application Projects & Web Deployment Projects di situs web ASP.NET yang menjelaskan perbedaannya dengan sangat rinci, itu cukup membantu saya.
Ngomong-ngomong, jangan bingung dengan judulnya, sebagian besar video menjelaskan perbedaan antara proyek situs web dan proyek aplikasi web dan mengapa Microsoft memperkenalkan kembali proyek aplikasi Web di Visual studio 2005 (seperti yang mungkin sudah Anda ketahui, itu awalnya dikirimkan hanya dengan proyek situs web kemudian proyek aplikasi web ditambahkan dalam SP1). Video yang luar biasa saya sangat merekomendasikan untuk siapa saja yang ingin mengetahui perbedaannya.
sumber
"Situs web" memiliki kode di direktori App_Code khusus dan dikompilasi ke dalam beberapa DLL (rakitan) saat runtime. "Aplikasi web" dikompilasi menjadi satu DLL tunggal.
sumber
Situs web dan Situs web >> situs web adalah dua metode berbeda untuk membuat aplikasi ASP.NET menggunakan visual studio. Satu tanpa proyek dan lainnya adalah lingkungan proyek. Perbedaannya adalah sebagai
tidak ada banyak perbedaan mendasar dalam menggunakan kedua pendekatan tersebut. Tetapi jika Anda membuat situs web yang membutuhkan waktu lebih lama, pilihlah lingkungan proyek.
sumber
Model proyek Aplikasi Web
Model proyek Situs Web
sumber
Itu selalu tergantung pada kebutuhan klien Anda. ASP.NET hanya menyertakan fitur fleksibel yang dibutuhkan pengguna untuk keamanan dan perawatan aplikasi Anda yang mudah.
Anda dapat menganggap aplikasi Web sebagai file biner yang berjalan di dalam kerangka ASP.NET. Dan situs Web sebagai halaman web statis yang dapat Anda tinjau dan dengan mudah menyebarkan kode sumber.
Tetapi keuntungan dan kerugian dari kedua teknologi ASP.NET ini datang apa yang baik.
sumber
Situs web - Tidak ada file solusi yang akan dibuat. Jika kita ingin membuat situs web, tidak perlu studio visual.
Aplikasi Web - File solusi akan dibuat. Jika kita ingin membuat aplikasi web harus membutuhkan visual studio. Ini akan membuat satu
.dll
file di folder bin.sumber
Dalam Proyek Aplikasi Web, Visual Studio membutuhkan file .designer tambahan untuk halaman dan kontrol pengguna. Proyek Situs Web tidak memerlukan overhead ini. Markup itu sendiri diartikan sebagai desain.
sumber
WebSite: Ini menghasilkan folder app_code secara otomatis dan jika Anda menerbitkannya di server dan setelah itu jika Anda melakukan beberapa perubahan pada file atau halaman tertentu daripada Anda tidak perlu melakukan kompilasi semua file.
Aplikasi Web Ini menghasilkan file solusi secara otomatis situs web mana yang tidak menghasilkan dan jika Anda mengubah dalam satu file daripada Anda harus mengkompilasi proyek penuh untuk mencerminkan perubahannya.
sumber
Dalam aplikasi web Anda dapat membuat lapisan fungsionalitas proyek Anda dan dapat membuat saling ketergantungan di antara mereka dengan membaginya menjadi banyak proyek, tetapi Anda tidak pernah dapat melakukan ini di situs web.
sumber
Pasti aplikasi web, file DLL tunggal dan mudah dirawat. Tetapi situs web lebih fleksibel; Anda dapat mengedit file aspx saat bepergian.
sumber
Aplikasi web memerlukan lebih banyak memori, mungkin karena Anda tidak punya pilihan selain mengkompilasi menjadi satu rakitan. Saya baru saja mengkonversi situs warisan besar ke aplikasi web dan memiliki masalah dengan kehabisan memori, keduanya pada waktu kompilasi dengan pesan kesalahan seperti di bawah ini:
kesalahan, dan saat runtime dengan pesan kesalahan ini seperti di bawah ini:
Rekomendasi saya untuk mengonversi situs yang lebih besar pada perangkat keras warisan terbatas memori adalah, untuk memilih opsi untuk kembali ke model situs web. Bahkan setelah masalah sukses awal mungkin merayap nanti.
sumber
Berikut Aplikasi Pendukung Web adalah contoh situs web. Situs Web dan Aplikasi Web keduanya dapat bersifat dinamis / statis tergantung pada persyaratan, berikut adalah contoh untuk memahami cara kerja situs web dan aplikasi web.
sumber
Untuk merangkum beberapa jawaban di atas:
Fleksibilitas , dapatkah Anda membuat perubahan langsung ke halaman web?
Situs Web : Kemungkinan. Pro: manfaat jangka pendek. Con: risiko jangka panjang dari kekacauan proyek.
Aplikasi Web : Con: tidak mungkin. Edit halaman, arsip perubahan ke kontrol sumber, lalu buat dan sebarkan seluruh situs. Pro: pertahankan proyek yang berkualitas.
Masalah pembangunan
Situs Web : Struktur proyek sederhana tanpa file .csproj. Dua halaman .aspx mungkin memiliki nama kelas yang sama tanpa konflik. Nama direktori proyek acak yang mengarah ke membangun kesalahan seperti mengapa .net framework konflik dengan file yang dihasilkan sendiri dan mengapa .net framework konflik dengan file yang dihasilkan sendiri . Pro: Sederhana (simplistis). Con: tidak menentu.
Aplikasi Web : Struktur proyek mirip dengan proyek WebForms, dengan file .csproj. Nama kelas halaman asp harus unik. Pro: Sederhana (pintar). Con: tidak ada, karena aplikasi web masih sederhana.
sumber