Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
oleh Jason Lee
Catatan
Sejak artikel ini ditulis, penyedia Keanggotaan ASP.NET telah digantikan oleh ASP.NET Identity. Kami sangat menyarankan untuk memperbarui aplikasi untuk menggunakan platform identitas ASP.NET daripada penyedia Keanggotaan yang ditampilkan pada saat artikel ini ditulis. ASP.NET Identity memiliki sejumlah keunggulan dibandingkan sistem Keanggotaan ASP.NET, termasuk :
- Performa yang lebih baik
- Peningkatan ekstensibilitas dan kemampuan pengujian
- Dukungan untuk OAuth, OpenID Connect, dan autentikasi dua faktor
- Dukungan Identitas berbasis klaim
- Interoperabilitas yang lebih baik dengan ASP.Net Core
Topik ini menjelaskan pertimbangan dan tantangan utama yang perlu Anda atasi ketika Anda menyediakan database layanan aplikasi ASP.NET (lebih umum disebut sebagai database keanggotaan) di lingkungan pengujian, penahapan, atau produksi. Ini juga menjelaskan pendekatan yang dapat Anda gunakan untuk memenuhi tantangan ini.
Topik ini merupakan bagian dari serangkaian tutorial yang didasarkan pada persyaratan penyebaran perusahaan dari perusahaan fiktif bernama Fabrikam, Inc. Seri tutorial ini menggunakan solusi sampel— solusi Contact Manager—untuk mewakili aplikasi web dengan tingkat kompleksitas yang realistis, termasuk aplikasi MVC 3 ASP.NET, layanan Windows Communication Foundation (WCF), dan proyek database.
Metode penyebaran di jantung tutorial ini didasarkan pada pendekatan file proyek terpisah yang dijelaskan dalam Memahami File Proyek, di mana proses build dikendalikan oleh dua file proyek—satu berisi instruksi build yang berlaku untuk setiap lingkungan tujuan, dan satu berisi pengaturan build dan penyebaran khusus lingkungan. Pada waktu build, file proyek khusus lingkungan digabungkan ke dalam file proyek agnostik lingkungan untuk membentuk serangkaian instruksi build lengkap.
Apa Masalah Saat Anda Menyebarkan Database Keanggotaan?
Dalam kebanyakan kasus, ketika Anda menyusun strategi penyebaran untuk database, hal pertama yang perlu Anda pertimbangkan adalah data apa yang ingin Anda sebarkan. Dalam lingkungan pengembangan atau pengujian, Anda mungkin ingin menyebarkan data akun pengguna untuk memfasilitasi pengujian yang cepat dan mudah. Di lingkungan penahapan atau produksi, sangat tidak mungkin Anda ingin menyebarkan data akun pengguna.
Sayangnya, ASP.NET database keanggotaan memperkenalkan beberapa tantangan spesifik yang membuat keputusan ini jauh lebih kompleks:
- Penyebaran khusus skema akan meninggalkan database keanggotaan dalam status tidak beroperasi. Ini karena database keanggotaan menyertakan beberapa data konfigurasi (dalam tabel aspnet_SchemaVersions ) yang diperlukan database untuk berfungsi. Dengan demikian, jika Anda melakukan penyebaran database keanggotaan khusus skema untuk mengecualikan data akun pengguna, Anda harus menjalankan skrip pasca-penyebaran untuk menambahkan data konfigurasi penting.
- Bergantung pada bagaimana database keanggotaan Anda dikonfigurasi, penyedia keanggotaan dapat menggunakan kunci komputer untuk mengenkripsi kata sandi dan menyimpannya dalam database. Dalam hal ini, data akun pengguna apa pun yang Anda sebarkan dengan database akan menjadi tidak dapat digunakan di server tujuan. Untuk alasan ini, menyebarkan data akun pengguna bukanlah skenario yang didukung.
Memilih Strategi Database Keanggotaan
Gunakan panduan ini saat Anda memilih cara menyediakan database keanggotaan di lingkungan server perusahaan:
- Jika memungkinkan, jangan sebarkan database keanggotaan. Sebagai gantinya, buat database keanggotaan secara manual di server database target. Jika Anda belum menyesuaikan skema database keanggotaan, Anda cukup membuat yang baru di situ di tujuan menggunakan Alat Pendaftaran ASP.NET SQL Server (aspnet_regsql.exe).
- Jika Anda tidak memiliki opsi selain menyebarkan database keanggotaan—misalnya, jika Anda telah membuat modifikasi ekstensif pada skema database—Anda harus melakukan penyebaran database keanggotaan khusus skema, untuk mengecualikan data akun pengguna, lalu menjalankan skrip pasca-penyebaran untuk menambahkan data konfigurasi yang diperlukan. Anda dapat menemukan panduan luas tentang pendekatan ini di Cara: Menyebarkan Database Keanggotaan ASP.NET Tanpa Menyertakan Akun Pengguna.
Penting untuk diingat bahwa skema database keanggotaan Anda cenderung cukup statis. Bahkan jika Anda telah menyesuaikan database keanggotaan, tidak mungkin Anda perlu memperbarui skema secara teratur—itu tidak akan berubah dengan frekuensi yang sama dengan kode dalam aplikasi web atau proyek database. Dengan demikian, Anda tidak perlu menyertakan database keanggotaan dalam proses penyebaran otomatis atau satu langkah apa pun.
Menggunakan VSDBCMD untuk Memperbarui Skema Database Keanggotaan
Jika Anda mengubah struktur database keanggotaan setelah penyebaran pertama, Anda mungkin tidak ingin menggunakan Alat Penyebaran Web (Web Deploy) Internet Information Services (IIS) untuk menyebarkan ulang database. Fungsi penyebaran database di Web Deploy tidak menyertakan kemampuan untuk membuat pembaruan diferensial ke database tujuan—sebagai gantinya, Web Deploy harus menghilangkan dan membuat ulang database. Ini berarti Anda kehilangan data akun pengguna yang ada, yang biasanya tidak diinginkan di lingkungan penahapan atau produksi.
Alternatifnya adalah menggunakan utilitas VSDBCMD untuk memperbarui skema database tujuan Anda. VSDBCMD mencakup dua kemampuan penting. Pertama, ini dapat mengimpor skema database yang ada ke dalam file .dbschema. Kedua, ini dapat menyebarkan file .dbschema ke database yang ada sebagai pembaruan diferensial, yang berarti bahwa itu hanya membuat perubahan yang diperlukan untuk memperbarui database target dan Anda tidak kehilangan data apa pun.
Anda dapat menggunakan langkah-langkah tingkat tinggi ini untuk memperbarui skema database keanggotaan:
- Gunakan tindakan Impor VSDBCMD untuk menghasilkan file .dbschema untuk database keanggotaan sumber Anda. Prosedur ini dijelaskan dalam Cara: Mengimpor Skema dari Prompt Perintah.
- Gunakan tindakan Penyebaran VSDBCMD untuk menyebarkan file .dbschema ke database keanggotaan tujuan Anda. Prosedur ini dijelaskan dalam Referensi Baris Perintah untuk VSDBCMD.EXE (Penyebaran dan Impor Skema).
Kesimpulan
Topik ini menjelaskan beberapa tantangan yang mungkin Anda hadapi ketika Anda perlu menyediakan database keanggotaan ASP.NET di berbagai lingkungan target. Secara khusus, ini menjelaskan mengapa penyebaran khusus skema akan meninggalkan database keanggotaan dalam status tidak beroperasi dan mengapa menyebarkan data akun pengguna tidak didukung. Topik ini juga menyajikan panduan tentang cara menyediakan, menyebarkan, dan memperbarui database keanggotaan dalam skenario yang berbeda.
Bacaan lebih lanjut
Untuk panduan dan contoh selengkapnya tentang cara menggunakan VSDBCMD, lihat Referensi Baris Perintah untuk VSDBCMD.EXE (Penyebaran dan Impor Skema) dan Cara: Mengimpor Skema dari Prompt Perintah. Untuk informasi selengkapnya tentang menggunakan aspnet_regsql.exe untuk membuat database keanggotaan, lihat Alat Pendaftaran ASP.NET SQL Server (aspnet_regsql.exe). Untuk panduan umum selengkapnya tentang menyebarkan database keanggotaan, lihat Cara: Menyebarkan Database Keanggotaan ASP.NET Tanpa Menyertakan Akun Pengguna.