Kurumsal Ortamlara Üyelik Veritabanları Dağıtma
tarafından Jason Lee
Not
Bu makale yazıldığından beri, ASP.NET Üyelik sağlayıcılarının yerini ASP.NET Identity alır. Bu makalenin yazıldığı sırada öne çıkan Üyelik sağlayıcıları yerine ASP.NET Kimlik platformunu kullanmak için uygulamaları güncelleştirmenizi kesinlikle öneririz. ASP.NET Identity, ASP.NET Üyelik sistemine göre aşağıdakiler dahil olmak üzere çeşitli avantajlara sahiptir:
- Daha iyi performans
- Geliştirilmiş genişletilebilirlik ve test edilebilirlik
- OAuth, OpenID Connect ve iki öğeli kimlik doğrulaması desteği
- Talep Tabanlı Kimlik desteği
- ASP.Net Core ile daha iyi birlikte çalışabilirlik
Bu konuda, test, hazırlama veya üretim ortamlarında ASP.NET uygulama hizmetleri veritabanlarını (daha yaygın olarak üyelik veritabanları olarak adlandırılır) sağlarken aşmanız gereken önemli noktalar ve zorluklar açıklanmaktadır. Ayrıca bu zorlukları karşılamak için kullanabileceğiniz yaklaşımları da açıklar.
Bu konu, Fabrikam, Inc. adlı kurgusal bir şirketin kurumsal dağıtım gereksinimlerini temel alan bir dizi öğreticinin bir bölümünü oluşturur. Bu öğretici serisi, ASP.NET MVC 3 uygulaması, Windows Communication Foundation (WCF) hizmeti ve veritabanı projesi dahil olmak üzere gerçekçi bir karmaşıklık düzeyine sahip bir web uygulamasını temsil etmek için örnek bir çözüm (Contact Manager çözümü) kullanır.
Bu öğreticilerin merkezinde yer alan dağıtım yöntemi, derleme işleminin iki proje dosyası tarafından denetlendiği Proje Dosyasını Anlama bölümünde açıklanan bölünmüş proje dosyası yaklaşımını temel alır: biri her hedef ortama uygulanan derleme yönergelerini, diğeri de ortama özgü derleme ve dağıtım ayarlarını içerir. Derleme zamanında, ortama özgü proje dosyası, tam bir derleme yönergeleri kümesi oluşturmak için ortama özgü belirsiz proje dosyasıyla birleştirilir.
Üyelik Veritabanı Dağıtırken Karşılaşılan Sorunlar Nelerdir?
Çoğu durumda, bir veritabanı için dağıtım stratejisini tasarladığınızda, dikkate almanız gereken ilk şey hangi verileri dağıtmak istediğinizdir. Geliştirme veya test ortamında, hızlı ve kolay testi kolaylaştırmak için kullanıcı hesabı verilerini dağıtmak isteyebilirsiniz. Hazırlama veya üretim ortamında kullanıcı hesabı verilerini dağıtmak isteme olasılığınız çok düşüktür.
Ne yazık ki, ASP.NET üyelik veritabanları bu kararı çok daha karmaşık hale getiren bazı özel güçlükler getirir:
- Yalnızca şema dağıtımı üyelik veritabanını işlem dışı durumda bırakır. Bunun nedeni üyelik veritabanının çalışması için gereken bazı yapılandırma verilerini ( aspnet_SchemaVersions tablosunda) içermesidir. Bu nedenle, kullanıcı hesabı verilerini dışlamak için üyelik veritabanınızın yalnızca şemaya dayalı dağıtımını gerçekleştirirseniz, temel yapılandırma verilerini eklemek için dağıtım sonrası betiği çalıştırmanız gerekir.
- Üyelik veritabanınızın nasıl yapılandırıldığına bağlı olarak, üyelik sağlayıcısı parolaları şifrelemek ve bunları veritabanında depolamak için makine anahtarını kullanabilir. Bu durumda, veritabanıyla dağıtacağınız tüm kullanıcı hesabı verileri hedef sunucuda kullanılamaz hale gelir. Bu nedenle, kullanıcı hesabı verilerini dağıtmak desteklenen bir senaryo değildir.
Üyelik Veritabanı Stratejisi Seçme
Kurumsal sunucu ortamında üyelik veritabanı sağlamayı seçtiğinizde şu yönergeleri kullanın:
- Mümkün olduğunda üyelik veritabanlarını dağıtmayın. Bunun yerine üyelik veritabanını hedef veritabanı sunucusunda el ile oluşturun. Üyelik veritabanı şemanızı özelleştirmediyseniz, ASP.NET SQL Server Kayıt Aracı'nı (aspnet_regsql.exe) kullanarak hedefte yeni bir tane oluşturabilirsiniz.
- Üyelik veritabanını dağıtmak dışında bir seçeneğiniz yoksa (örneğin, veritabanı şemasında kapsamlı değişiklikler yaptıysanız), kullanıcı hesabı verilerini dışlamak için üyelik veritabanının yalnızca şemaya yönelik dağıtımını gerçekleştirmeniz ve ardından gerekli yapılandırma verilerini eklemek için dağıtım sonrası betiği çalıştırmanız gerekir. Bu yaklaşımlar hakkında kapsamlı yönergeler için bkz. Nasıl yapılır: Kullanıcı Hesaplarını Eklemeden ASP.NET Üyelik Veritabanını Dağıtma.
Üyelik veritabanınızın şemasının büyük olasılıkla oldukça statik olacağını unutmayın. Üyelik veritabanını özelleştirmiş olsanız bile, şemayı düzenli aralıklarla güncelleştirmeniz pek olası değildir; bir web uygulamasındaki veya veritabanı projesindeki kodla aynı sıklıkta değişmez. Bu nedenle, üyelik veritabanını otomatik veya tek adımlı dağıtım işlemlerine dahil etmeniz gerekmez.
Üyelik Veritabanı Şemasını Güncelleştirmek için VSDBCMD Kullanma
İlk dağıtımınızdan sonra üyelik veritabanınızın yapısını değiştirirseniz, veritabanını yeniden dağıtmak için Internet Information Services (IIS) Web Dağıtım Aracı'nı (Web Dağıtımı) kullanmak istemeyebilirsiniz. Web Dağıtımı'ndaki veritabanı dağıtım işlevselliği, hedef veritabanında değişiklik güncelleştirmeleri yapma özelliğini içermez; bunun yerine, Web Dağıtımı veritabanını bırakmalı ve yeniden oluşturmalıdır. Bu, hazırlama veya üretim ortamlarında normalde istenmeyen mevcut kullanıcı hesabı verilerini kaybedeceğiniz anlamına gelir.
Alternatif olarak, hedef veritabanınızın şemasını güncelleştirmek için VSDBCMD yardımcı programını kullanabilirsiniz. VSDBCMD iki önemli özellik içerir. İlk olarak, mevcut veritabanının şemasını bir .dbschema dosyasına aktarabilir. İkinci olarak, bir .dbschema dosyasını var olan bir veritabanına değişiklik güncelleştirmesi olarak dağıtabilir; bu da yalnızca hedef veritabanını güncel hale getirmek için gereken değişiklikleri yaptığı ve veri kaybetmediğiniz anlamına gelir.
Üyelik veritabanı şemasını güncelleştirmek için şu üst düzey adımları kullanabilirsiniz:
- Kaynak üyelik veritabanınız için bir .dbschema dosyası oluşturmak üzere VSDBCMD İçeri Aktarma eylemini kullanın. Bu yordam , Nasıl yapılır: Komut İsteminden Şema İçeri Aktarma başlığı altında açıklanmıştır.
- .dbschema dosyasını hedef üyelik veritabanınıza dağıtmak için VSDBCMD Dağıtımı eylemini kullanın. Bu yordam, VSDBCMD.EXE için Komut Satırı Başvurusu (Dağıtım ve Şema İçeri Aktarma) bölümünde açıklanmıştır.
Sonuç
Bu konu başlığında, çeşitli hedef ortamlarda ASP.NET üyelik veritabanları sağlamanız gerektiğinde karşılaşabileceğiniz bazı zorluklar açıklanmıştır. Özellikle, yalnızca şema dağıtımlarının üyelik veritabanını neden işlemsel olmayan bir durumda bırakacağını ve kullanıcı hesabı verilerini dağıtmanın neden desteklenmediğini açıkladı. Konu başlığında ayrıca farklı senaryolarda üyelik veritabanlarını sağlama, dağıtma ve güncelleştirme hakkında yönergeler de sunulmuştur.
Daha Fazla Bilgi
VSDBCMD'yi kullanma hakkında daha fazla kılavuz ve örnek için bkz. VSDBCMD.EXE için Komut Satırı Başvurusu (Dağıtım ve Şema İçeri Aktarma) ve Nasıl yapılır: Komut İsteminden Şema İçeri Aktarma. Üyelik veritabanları oluşturmak için aspnet_regsql.exe kullanma hakkında daha fazla bilgi için bkz. ASP.NET SQL Server Kayıt Aracı (aspnet_regsql.exe). Üyelik veritabanlarını dağıtma hakkında daha genel yönergeler için bkz . Nasıl yapılır: Kullanıcı Hesaplarını Eklemeden ASP.NET Üyelik Veritabanını Dağıtma.