Bagikan melalui


Menentukan File Apa yang Perlu Disebarkan (C#)

oleh Scott Mitchell

Unduh PDF

File apa yang perlu disebarkan dari lingkungan pengembangan ke lingkungan produksi bergantung sebagian pada apakah aplikasi ASP.NET dibangun menggunakan Model Situs Web atau Model Aplikasi Web. Pelajari selengkapnya tentang kedua model proyek ini dan bagaimana model proyek memengaruhi penyebaran.

Pengantar

Menyebarkan aplikasi web ASP.NET memerlukan penyalinan file terkait ASP.NET dari lingkungan pengembangan ke lingkungan produksi. File terkait ASP.NET mencakup markup dan kode halaman web ASP.NET serta file dukungan sisi klien dan server. File dukungan sisi klien adalah file yang dirujuk oleh halaman web Anda dan dikirim langsung ke browser - gambar, file CSS, dan file JavaScript, misalnya. File dukungan sisi server mencakup file yang digunakan untuk memproses permintaan di sisi server. Ini termasuk file konfigurasi, layanan web, file kelas, Himpunan Data Yang Diketik, dan LINQ ke file SQL, antara lain.

Secara umum, semua file dukungan sisi klien harus disalin dari lingkungan pengembangan ke lingkungan produksi, tetapi file dukungan sisi server apa yang disalin tergantung pada apakah Anda secara eksplisit mengompilasi kode sisi server ke dalam perakitan ( .dll file) atau jika Anda membuat rakitan ini secara otomatis. Tutorial ini menyoroti file apa yang perlu disebarkan ketika secara eksplisit mengkompilasi kode ke dalam rakitan versus memiliki langkah kompilasi ini terjadi secara otomatis.

Kompilasi Eksplisit Versus Kompilasi Otomatis

ASP.NET halaman web dibagi menjadi markup deklaratif dan kode sumber. Bagian markup deklaratif mencakup HTML, kontrol Web, dan sintaks pengikatan data; bagian kode berisi penanganan aktivitas yang ditulis dalam kode Visual Basic atau C#. Bagian markup dan kode biasanya dipisahkan menjadi file yang berbeda: WebPage.aspx berisi markup deklaratif saat WebPage.aspx.cs menampung kode.

Pertimbangkan halaman ASP.NET bernama Clock.aspx yang berisi kontrol Label yang properti Teksnya diatur ke tanggal dan waktu saat ini saat halaman dimuat. Bagian markup deklaratif (dalam Clock.aspx) akan berisi markup untuk kontrol Web Label - -<asp:Label runat="server" id="TimeLabel" /> sementara bagian kode (dalam Clock.aspx.cs) akan memiliki Page_Load penanganan aktivitas dengan kode berikut:

protected void Page_Load(object sender, EventArgs e)
{
    TimeLabel.Text =  "The time at the beep is: " + DateTime.Now.ToString();
}

Agar mesin ASP.NET dapat melayani permintaan untuk halaman ini, bagian kode halaman ( WebPage.aspx.cs file) harus dikompilasi terlebih dahulu. Kompilasi ini dapat terjadi secara eksplisit atau otomatis.

Jika kompilasi terjadi secara eksplisit maka seluruh kode sumber aplikasi dikompilasi ke dalam satu atau beberapa rakitan (.dll file) yang terletak di direktori aplikasi Bin . Jika kompilasi terjadi secara otomatis maka rakitan yang dihasilkan secara otomatis yang dihasilkan secara default, ditempatkan di Temporary ASP.NET folder File, yang dapat ditemukan pada versi>, meskipun lokasi ini dapat dikonfigurasi<%WINDOWS%\Microsoft.NET\Framework\ melalui <compilation> elemen di Web.config. Dengan kompilasi eksplisit, Anda harus mengambil beberapa tindakan untuk mengkompilasi kode aplikasi ASP.NET ke dalam perakitan, dan langkah ini terjadi sebelum penyebaran. Dengan kompilasi otomatis, proses kompilasi terjadi di server web ketika sumber daya pertama kali diakses.

Terlepas dari model kompilasi apa yang Anda gunakan, bagian markup dari semua halaman ASP.NET ( WebPage.aspx file) perlu disalin ke lingkungan produksi. Dengan kompilasi eksplisit, Anda perlu menyalin rakitan di Bin folder, tetapi Anda tidak perlu menyalin bagian kode halaman ASP.NET ( WebPage.aspx.cs file). Dengan kompilasi otomatis, Anda perlu menyalin file bagian kode sehingga kode ada dan dapat dikompilasi secara otomatis saat halaman dikunjungi. Bagian markup dari setiap halaman web ASP.NET menyertakan @Page arahan dengan atribut yang menunjukkan apakah kode terkait halaman sudah dikompilasi secara eksplisit atau apakah perlu dikompilasi secara otomatis. Akibatnya, lingkungan produksi dapat bekerja dengan model kompilasi dengan mulus dan Anda tidak perlu menerapkan pengaturan konfigurasi khusus untuk menunjukkan bahwa kompilasi eksplisit atau otomatis digunakan.

Tabel 1 meringkas berbagai file untuk disebarkan saat menggunakan kompilasi eksplisit versus kompilasi otomatis. Perhatikan bahwa terlepas dari model kompilasi yang digunakan, Anda harus selalu menyebarkan rakitan di folder, jika folder tersebut Bin ada. Folder Bin berisi rakitan khusus untuk aplikasi web, yang mencakup kode sumber yang dikompilasi saat menggunakan model kompilasi eksplisit. Bin Direktori ini juga berisi rakitan dari proyek lain dan rakitan sumber terbuka atau pihak ketiga apa pun yang mungkin Anda gunakan, dan ini harus berada di server produksi. Oleh karena itu, sebagai aturan umum praktis, salin Bin folder hingga produksi saat menyebarkan. (Jika Anda menggunakan model kompilasi otomatis dan tidak menggunakan rakitan eksternal, Anda tidak akan memiliki Bin direktori - tidak apa-apa!)

Model Kompilasi Menyebarkan File Bagian Markup? Menyebarkan File Kode Sumber? Menyebarkan Rakitan di Bin Direktori?
Kompilasi Eksplisit Ya Tidak Ya
Kompilasi Otomatis Ya Ya Ya (jika ada)

Tabel 1: File apa yang Anda sebarkan tergantung pada model kompilasi yang digunakan.

Mengambil Jalur Memori Perjalanan Turun

Pendekatan kompilasi apa yang digunakan bergantung pada sebagian, tentang bagaimana aplikasi ASP.NET dikelola di Visual Studio. Sejak. Awalan NET pada tahun 2000 telah ada empat versi Visual Studio yang berbeda - Visual Studio .NET 2002, Visual Studio .NET 2003, Visual Studio 2005, dan Visual Studio 2008. Aplikasi ASP.NET terkelola Visual Studio .NET 2002 dan 2003 menggunakan model Proyek Aplikasi Web. Fitur utama model Proyek Aplikasi Web adalah:

  • File yang membuat proyek didefinisikan dalam satu file proyek. File apa pun yang tidak ditentukan dalam file proyek tidak dianggap sebagai bagian dari aplikasi web oleh Visual Studio.
  • Menggunakan kompilasi eksplisit. Membangun proyek mengkompilasi file kode dalam proyek ke dalam satu rakitan yang ditempatkan di Bin folder .

Ketika Microsoft merilis Visual Studio 2005, mereka menghilangkan dukungan untuk model Proyek Aplikasi Web dan menggantinya dengan model Proyek Situs Web. Model Proyek Situs Web membedakan dirinya dari model Proyek Aplikasi Web dengan cara berikut:

  • Daripada memiliki satu file proyek yang mengeja file proyek, sistem file digunakan sebagai gantinya. Singkatnya, file apa pun dalam folder aplikasi web (atau subfolder) dianggap sebagai bagian dari proyek.
  • Membangun proyek di Visual Studio tidak membuat assembly di Bin direktori. Sebagai gantinya, membangun Proyek Situs Web melaporkan kesalahan waktu kompilasi.
  • Dukungan untuk kompilasi otomatis. Proyek Situs Web biasanya disebarkan dengan menyalin markup dan kode sumber ke lingkungan produksi, meskipun kode dapat dikompilasi sebelumnya (kompilasi eksplisit).

Microsoft menghidupkan kembali model Proyek Aplikasi Web saat merilis Visual Studio 2005 Service Pack 1. Namun, Pengembang Web Visual terus hanya mendukung model Proyek Situs Web. Kabar baiknya adalah bahwa batasan ini dihilangkan dengan Visual Web Developer 2008 Paket Layanan 1. Hari ini Anda dapat membuat aplikasi ASP.NET di Visual Studio (dan Pengembang Web Visual) menggunakan model Proyek Aplikasi Web atau model Proyek Situs Web. Kedua model memiliki pro dan kontra mereka. Lihat Pengenalan Proyek Aplikasi Web: Membandingkan Proyek Situs Web dan Proyek Aplikasi Web untuk perbandingan kedua model dan untuk membantu memutuskan model proyek apa yang paling sesuai untuk situasi Anda.

Menjelajahi Aplikasi Web Sampel

Unduhan untuk tutorial ini mencakup aplikasi ASP.NET yang disebut Ulasan Buku. Situs web ini menilang situs web hobi yang mungkin dibuat seseorang untuk membagikan ulasan buku mereka dengan komunitas online. Aplikasi web ASP.NET ini sangat sederhana dan terdiri dari sumber daya berikut:

  • Web.config, file konfigurasi aplikasi.

  • Halaman master (Site.master).

  • Tujuh halaman ASP.NET berbeda:

    • ~ /Default.aspx- halaman beranda situs.

    • ~ /About.aspx - halaman "Tentang Situs".

    • ~ /Fiction/Default.aspx - halaman yang mencantumkan buku fiksi yang telah ditinjau.

      • ~ /Fiction/Blaze.aspx - ulasan dari novel Richard Bachman Blaze.
    • ~/ Tech/Default.aspx - halaman yang mencantumkan buku teknologi yang telah ditinjau.

      • ~/ Tech/CYOW.aspx- tinjauan Buat Situs Web Anda Sendiri.
      • ~/ Tech/TYASP35.aspx - ulasan tentang Teach Yourself ASP.NET 3.5 dalam 24 Jam.
  • Tiga file CSS yang berbeda di folder Gaya.

  • Empat file gambar - logo dan gambar yang didukung oleh ASP.NET dari sampul tiga buku yang ditinjau - semuanya terletak di Images folder .

  • File Web.sitemap , yang menentukan peta situs dan digunakan untuk menampilkan menu di Default.aspx halaman di direktori akar dan FictionTech folder.

  • File kelas bernama BasePage.cs yang mendefinisikan kelas dasar Page . Kelas ini memperluas fungsionalitas Page kelas dengan secara otomatis mengatur Title properti berdasarkan posisi halaman di peta situs. Singkatnya, setiap ASP.NET kelas code-behind yang meluas BasePage (bukan System.Web.UI.Page) akan memiliki judul yang diatur ke nilai tergantung pada posisinya di peta situs. Misalnya, saat melihat halaman ~/Tech/CYOW.aspx , judul diatur ke "Beranda : Teknologi : Buat Situs Web Anda Sendiri".

Gambar 1 memperlihatkan cuplikan layar situs web Ulasan Buku saat dilihat melalui browser. Di sini Anda melihat halaman ~/Tech/TYASP35.aspx, yang mengulas buku Teach Yourself ASP.NET 3,5 dalam 24 Jam. Breadcrumb yang mencakup bagian atas halaman dan menu di kolom kiri didasarkan pada struktur peta situs yang ditentukan dalam Web.sitemap. Gambar di sudut atas kanan adalah salah satu gambar sampul buku yang terletak di Images folder . Tampilan dan nuansa situs web didefinisikan melalui aturan lembar gaya kaskade yang dieja oleh file CSS di folder Gaya, sementara tata letak halaman yang menyeluruh didefinisikan di halaman master, Site.master.

Situs web Book Reviews menawarkan ulasan tentang berbagai judul

Gambar 1: Situs web Ulasan Buku menawarkan ulasan tentang berbagai judul (Klik untuk melihat gambar ukuran penuh)

Aplikasi ini tidak menggunakan database; setiap tinjauan diimplementasikan sebagai halaman web terpisah dalam aplikasi. Tutorial ini (dan beberapa tutorial berikutnya) berjalan melalui penyebaran aplikasi web yang tidak memiliki database. Namun, dalam tutorial di masa mendatang kami akan meningkatkan aplikasi ini untuk menyimpan ulasan, komentar pembaca, dan informasi lain dalam database, dan akan menjelajahi langkah-langkah apa yang perlu dilakukan untuk menyebarkan aplikasi web berbasis data dengan benar.

Catatan

Tutorial ini berfokus pada hosting aplikasi ASP.NET dengan penyedia host web dan tidak menjelajahi topik tambahan seperti ASP. Sistem peta situs NET atau menggunakan kelas dasar Page . Untuk informasi lebih lanjut tentang teknologi ini, dan untuk latar belakang lebih lanjut tentang topik lain yang dibahas di seluruh tutorial, lihat bagian Bacaan Lebih Lanjut di akhir setiap tutorial.

Unduhan tutorial ini memiliki dua salinan aplikasi web, masing-masing diimplementasikan sebagai jenis proyek Visual Studio yang berbeda: BookReviewsWAP, Proyek Aplikasi Web, dan BookReviewsWSP, Proyek Situs Web. Kedua proyek dibuat dengan Visual Web Developer 2008 SP1 dan menggunakan ASP.NET 3.5 SP1. Untuk bekerja dengan proyek-proyek ini, mulailah dengan membuka zip konten ke Desktop Anda. Untuk membuka Proyek Aplikasi Web (BookReviewsWAP), navigasikan ke folder BookReviewsWAP dan klik dua kali file Solusi, BookReviewsWAP.sln. Untuk membuka Proyek Situs Web (BookReviewsWSP), luncurkan Visual Studio lalu, dari menu File, pilih opsi Buka Situs Web, telusuri folder BookReviewsWSP di Desktop Anda, dan klik OK.

Dua bagian yang tersisa dalam tutorial ini melihat file apa yang perlu Anda salin ke lingkungan produksi saat menyebarkan aplikasi. Dua tutorial berikutnya - Menyebarkan Situs Anda Menggunakan FTP dan Menyebarkan Situs Anda Menggunakan Visual Studio - menunjukkan berbagai cara untuk menyalin file-file ini ke penyedia host web.

Menentukan File yang Akan Disebarkan untuk Proyek Aplikasi Web

Model Proyek Aplikasi Web menggunakan kompilasi eksplisit - kode sumber proyek dikompilasi ke dalam satu rakitan setiap kali Anda membangun aplikasi. Kompilasi ini mencakup file code-behind halaman ASP.NET (~/Default.aspx.cs, ~/About.aspx.cs, dan sebagainya), serta BasePage.cs kelas . Rakitan yang dihasilkan diberi nama BookReviewsWAP.dll dan terletak di direktori aplikasi Bin .

Gambar 2 memperlihatkan file yang membentuk Proyek Aplikasi Web Ulasan Buku.

Penjelajah Solusi mencantumkan file yang terdiri dari Proyek Aplikasi Web

Gambar 2: Penjelajah Solusi mencantumkan file yang terdiri dari Proyek Aplikasi Web

Untuk menyebarkan aplikasi ASP.NET yang dikembangkan menggunakan model Proyek Aplikasi Web, mulailah dengan membangun aplikasi sehingga secara eksplisit mengkompilasi kode sumber terbaru ke dalam perakitan. Selanjutnya, salin file berikut ke lingkungan produksi:

  • File yang berisi markup deklaratif untuk setiap halaman ASP.NET, seperti ~/Default.aspx, ~/About.aspx, dan sebagainya. Selain itu, salin markup deklaratif untuk halaman master dan Kontrol Pengguna apa pun.
  • Rakitan (.dll file) di Bin folder . Anda tidak perlu menyalin file database program (.pdb) atau file XML apa pun yang mungkin Anda temukan di Bin direktori.

Anda tidak perlu menyalin file kode sumber halaman ASP.NET ke lingkungan produksi, Anda juga tidak perlu menyalin BasePage.cs file kelas.

Catatan

Seperti yang ditunjukkan Gambar 2, BasePage kelas diimplementasikan sebagai file kelas dalam proyek, ditempatkan dalam folder bernama HelperClasses. Ketika proyek dikompilasi kode dalam file dikompilasi BasePage.cs bersama dengan ASP.NET halaman'code-behind kelas ke dalam assembly tunggal, BookReviewsWAP.dll. ASP.NET memiliki folder khusus bernama App_Code yang dirancang untuk menyimpan file kelas untuk Proyek Situs Web. Kode dalam folder secara otomatis dikompilasi App_Code dan oleh karena itu tidak boleh digunakan dengan Proyek Aplikasi Web. Sebagai gantinya, Anda harus menempatkan file kelas aplikasi Anda di folder normal bernama HelperClasses, atau Classes, atau sesuatu yang serupa. Atau, Anda dapat menempatkan file kelas dalam proyek Pustaka Kelas terpisah.

Selain menyalin file markup terkait ASP.NET dan perakitan di Bin folder, Anda juga perlu menyalin file dukungan sisi klien - gambar dan file CSS - serta file dukungan sisi server lainnya, Web.config dan Web.sitemap. File dukungan klien dan sisi server ini perlu disalin ke lingkungan produksi terlepas dari apakah Anda menggunakan kompilasi eksplisit atau otomatis.

Menentukan File yang Akan Disebarkan untuk File Proyek Situs Web

Model Proyek Situs Web mendukung kompilasi otomatis, fitur yang tidak tersedia saat menggunakan model Proyek Aplikasi Web. Dengan kompilasi eksplisit, Anda harus mengkompilasi kode sumber proyek Anda ke dalam assembly dan menyalin assembly tersebut ke lingkungan produksi. Di sisi lain, dengan kompilasi otomatis Anda cukup menyalin kode sumber ke lingkungan produksi dan dikompilasi oleh runtime sesuai permintaan sesuai kebutuhan.

Opsi menu Build di Visual Studio ada di Proyek Aplikasi Web dan Proyek Situs Web. Membangun Proyek Aplikasi Web mengkompilasi kode sumber proyek ke dalam satu rakitan yang terletak di Bin direktori; membangun Proyek Situs Web memeriksa kesalahan waktu kompilasi apa pun, tetapi tidak membuat rakitan apa pun. Untuk menyebarkan aplikasi ASP.NET yang dikembangkan menggunakan model Proyek Situs Web yang perlu Anda lakukan adalah menyalin file yang sesuai ke lingkungan produksi, tetapi saya akan mendorong Anda untuk terlebih dahulu membangun proyek untuk memastikan bahwa tidak ada kesalahan waktu kompilasi.

Gambar 3 memperlihatkan file yang membentuk Proyek Situs Web Ulasan Buku.

Penjelajah Solusi mencantumkan file yang terdiri dari Proyek Situs Web

Gambar 3: Penjelajah Solusi mencantumkan file yang terdiri dari Proyek Situs Web

Menyebarkan Proyek Situs Web melibatkan penyalinan semua file terkait ASP.NET ke lingkungan produksi - yang mencakup halaman markup untuk halaman ASP.NET, halaman master, dan Kontrol Pengguna, bersama dengan file kode mereka. Anda juga perlu menyalin file kelas apa pun, seperti BasePage.cs. Perhatikan bahwa BasePage.cs file terletak di App_Code folder , yang merupakan folder ASP.NET khusus yang digunakan dalam Proyek Situs Web untuk file kelas. Folder khusus juga perlu dibuat pada produksi, karena file kelas dalam App_Code folder pada lingkungan pengembangan harus disalin ke App_Code folder pada produksi.

Selain menyalin markup ASP.NET dan file kode sumber, Anda juga perlu menyalin file dukungan sisi klien - gambar dan file CSS - serta file dukungan sisi server lainnya, Web.config dan Web.sitemap.

Catatan

Proyek Situs Web juga dapat menggunakan kompilasi eksplisit. Tutorial di masa mendatang akan memeriksa cara mengkompilasi Proyek Situs Web secara eksplisit.

Ringkasan

Menyebarkan aplikasi ASP.NET memerlukan penyalinan file yang diperlukan dari lingkungan pengembangan ke lingkungan produksi. Kumpulan file yang tepat yang perlu disinkronkan tergantung pada apakah kode aplikasi ASP.NET dikompilasi secara eksplisit atau otomatis. Strategi kompilasi yang digunakan dipengaruhi oleh apakah Visual Studio dikonfigurasi untuk mengelola aplikasi ASP.NET menggunakan model Proyek Aplikasi Web atau model Proyek Situs Web.

Model Proyek Aplikasi Web menggunakan kompilasi eksplisit dan mengkompilasi kode proyek menjadi satu perakitan di Bin folder . Saat menyebarkan aplikasi, bagian markup dari halaman ASP.NET dan konten Bin folder harus didorong ke lingkungan produksi; kode sumber dalam aplikasi - file kode dan kelas code-behind, misalnya - tidak perlu disalin ke lingkungan produksi.

Model Proyek Situs Web menggunakan kompilasi otomatis secara default, meskipun dimungkinkan untuk secara eksplisit mengkompilasi Proyek Situs Web, seperti yang akan kita lihat di tutorial mendatang. Menyebarkan aplikasi ASP.NET yang menggunakan kompilasi otomatis mengharuskan bagian markup dan kode sumber harus disalin ke lingkungan produksi. Kode secara otomatis dikompilasi pada lingkungan produksi ketika diminta untuk pertama kalinya.

Sekarang setelah kami memeriksa file apa yang perlu disinkronkan antara lingkungan pengembangan dan produksi, kami siap untuk menyebarkan aplikasi Ulasan Buku ke penyedia host web.

Selamat Pemrograman!

Bacaan lebih lanjut

Untuk informasi selengkapnya tentang topik yang dibahas dalam tutorial ini, lihat sumber daya berikut: