Aracılığıyla paylaş


Veritabanı Dağıtma (C#)

tarafından Scott Mitchell

bir ASP.NET web uygulaması dağıtmak için gerekli dosyaların ve kaynakların geliştirme ortamından üretim ortamına alınması gerekir. Veri temelli web uygulamaları için bu, veritabanı şemasını ve verilerini içerir. Bu öğretici, veritabanını geliştirme ortamından üretim ortamına başarıyla dağıtmak için gereken adımları inceleyen bir serinin ilk öğreticisidir.

Giriş

bir ASP.NET web uygulaması dağıtmak için gerekli dosyaların ve kaynakların geliştirme ortamından üretim ortamına alınması gerekir. Son altı öğretici boyunca basit bir Kitap İncelemeleri web uygulaması dağıtmaya baktık. Bu tanıtım sitesi, görüntüler ve CSS dosyaları gibi istemci tarafı kaynaklarıyla birlikte çeşitli sunucu tarafı kaynaklardan (ASP.NET sayfalar, yapılandırma dosyaları, bir Web.sitemap dosya vb.) oluşuyordu. Peki ya veri odaklı web uygulamaları? Veritabanı kullanan bir web uygulamasını dağıtmak için hangi ek adımların uygulanması gerekir?

Sonraki birkaç öğreticide veri temelli bir web uygulaması dağıtmak için gereken adımları ele alacaktır. Bu öğretici, bir veritabanının şemasını ve içeriğini geliştirme ortamından üretim ortamına alma işlemini incelerken sonraki öğretici gerekli yapılandırma değişikliklerine bakar. Bundan sonra Uygulama Hizmetleri'ni (Üyelik, Roller, Profil vb.) kullanan bir veritabanı dağıtmanın zorluklarını keşfedeceğiz.

Güncelleştirilmiş Kitap İncelemeleri Web Uygulamasını İnceleme

Veri temelli bir web uygulaması dağıtmayı göstermek için Kitap İncelemeleri web uygulamasını basit, statik bir web sitesinden veri odaklı bir web sitesine güncelleştirdim. Daha önce olduğu gibi, bu öğreticinin indirmesinde uygulamanın iki sürümü vardır: biri Web Uygulaması Projesi modelini, diğeri de Web Sitesi Projesi modelini kullanan.

Güncelleştirilmiş Book Reviews web uygulaması, sitenin App_Data klasöründe (~/App_Data/Reviews.mdf ) depolanan bir SQL Server 2008 Express Edition veritabanı kullanır. Bilgisayarınızda SQL Server 2008 yüklüyse tanıtım hatasız çalıştırılmalıdır. daha eski bir SQL Server sürümünüz varsa ücretsiz SQL Server 2008 Express Edition'ı yükleyebilir veya bu öğreticinin indirmesinde bulunan veritabanı betiklerini kullanarak veritabanını kendiniz oluşturabilirsiniz.

Veritabanı Reviews.mdf dört tablo içerir:

  • Genres - Teknoloji, Kurgu ve İş gibi her tür için bir kayıt içerir.
  • Books- , , ReviewDateve Reviewgibi TitleGenreIdsütunlarla birlikte her gözden geçirme için bir kayıt içerir.
  • Authors - gözden geçirilmiş bir kitaba katkıda bulunan her yazar hakkında bilgi içerir.
  • BooksAuthors - hangi yazarların hangi kitapları yazdığını belirten çoka çok birleştirme tablosu.

Şekil 1'de bu dört tablonun acil servis diyagramı gösterilmektedir.

Kitap İncelemeleri Web Uygulamasının Veritabanı Dört Tablodan Oluşuyor

Şekil 1: Kitap İncelemeleri Web Uygulaması Veritabanı Dört Tablodan Oluşuyor (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Kitap İncelemeleri web sitesinin önceki sürümünde her kitap için ayrı bir ASP.NET sayfası vardı. Örneğin, 24 Saat içinde Kendinize ASP.NET 3.5'i öğretin incelemesini içeren adlı ~/Tech/TYASP35.aspx bir sayfa vardı. Web sitesinin bu yeni veri temelli sürümünde, incelemeler veritabanında depolanır ve belirtilen kitabın gözden geçirmesini görüntüleyen Review.aspx?ID=bookId adlı tek bir ASP.NET sayfası bulunur. Benzer şekilde, belirtilen türdeki gözden geçirilmiş kitapları listeleyen bir Genre.aspx?ID=genreId sayfası vardır.

Şekil 2 ve 3'te ve Review.aspx sayfaları iş başında gösterilirGenre.aspx. Her sayfanın Adres çubuğundaki URL'yi not edin. Şekil 2'de Genre.aspx?ID=85d164ba-1123-4c47-82a0-c8ec75de7e0e şeklindedir. 85d164ba-1123-4c47-82a0-c8ec75de7e0e, Teknoloji türünün değeri olduğundan GenreId , sayfanın başlığında "Teknoloji İncelemeleri" okunur ve madde işaretli liste bu türün altındaki sitede bu incelemeleri numaralandırır.

Teknoloji Türü Sayfası

Şekil 2: Teknoloji Türü Sayfası (Tam boyutlu görüntüyü görüntülemek için tıklayın)

24 Saatte 3.5 ASP.NET Kendinize Öğretin İncelemesi

Şekil 3: Kendinize Öğretin İncelemesi 24 Saatte 3,5 ASP.NET (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Kitap İncelemeleri web uygulaması ayrıca yöneticilerin tarz, inceleme ve yazar bilgileri ekleyebileceği, düzenleyebileceği ve silebileceği bir yönetim bölümü içerir. Şu anda, herhangi bir ziyaretçi yönetim bölümüne erişebilir. Gelecek bir öğreticide kullanıcı hesapları için destek ekleyeceğiz ve yönetim sayfalarına yalnızca yetkili kullanıcılara izin vereceğiz.

Kitap İncelemeleri uygulamasını indirirseniz, amacının veri temelli bir uygulama dağıtmayı göstermek olduğunu unutmayın. Uygulama tasarımına kadar en iyi yöntemleri sergilemez. Örneğin, ayrı bir Veri Erişim Katmanı (DAL) yoktur; ASP.NET sayfaları SqlDataSource denetimi aracılığıyla doğrudan veritabanıyla iletişim kurar veya arka kod sınıflarındaki kodu ADO.NET. Katmanlı mimari kullanarak veri odaklı uygulamalar oluşturmaya daha ayrıntılı bir bakış için Verilerle Çalışma öğreticilerime bakın.

Geliştirme ve Üretim Veritabanları

Veri temelli bir web uygulamasında geliştirmeye başladığınızda, veritabanına bağlanmayla ilgili uygulama ayrıntılarını sağlayan bir veritabanı bağlantı dizesi belirtmeniz gerekir. Bu bağlantı dizesi, diğer şeylerin dışında veritabanı sunucusunu, veritabanı adını ve güvenlik bilgilerini belirtir. Çoğu zaman, uygulama tarafından geliştirme sırasında kullanılan veritabanı, üretim sırasında kullanılan veritabanından farklıdır. Geliştirme ve üretim için farklı veritabanları kullanmanın birçok avantajı vardır. Geliştirme aşamasında farklı bir veritabanına sahip olmak, canlı verileri yanlışlıkla değiştirme veya silme konusunda endişelenmeniz gerekmeyecek anlamına gelir. Ayrıca üretim ortamındaki uygulama üzerindeki etkileri konusunda endişelenmenize gerek kalmadan sahte test verileri yerleştirmenize veya veri modelinde hataya neden olan değişiklikler yapmanıza olanak tanır. Geliştirme ve üretim ortamlarında farklı bir veritabanına sahip olmanın dezavantajı, uygulama veritabanını dağıttığında ve veritabanı şemasında veya verilerinde yapılan ilgili değişikliklerin de dağıtılması gerektiğidir.

İlk dağıtımdan önce veritabanının yalnızca bir örneği vardır ve bu örnek geliştirme ortamındadır. Uygulamayı üretim ortamına ilk kez dağıtırken yalnızca gerekli sunucu tarafı ve istemci tarafı dosyalarını kopyalamamız değil, aynı zamanda veritabanını geliştirme ortamından üretim ortamına kopyalamamız gerekir. Kitap İncelemeleri web uygulamasında şu anda durduğumuz yer burasıdır. Veritabanı geliştirme ortamımızdaki klasörde yer App_Data alır ancak henüz üretim ortamına gönderilmemiştir.

Uygulama dağıtıldıktan sonra veritabanının iki kopyası vardır. Uygulama büyüdükçe yeni özellikler eklenebilir ve veri modelinde bir değişiklik yapılması gerekebilir (var olan tablolara yeni sütunlar ekleme, var olan sütunlarda değişiklik yapma, yeni tablolar ekleme vb.). Web uygulaması bir sonraki dağıtıldığında, son dağıtımdan bu yana geliştirme ortamında veritabanına uygulanan değişikliklerin üretim veritabanına uygulanması gerekir. Bu süreci yönetmeye yönelik bazı stratejiler gelecekteki bir öğreticide ele alınıyor. Bu öğretici, veritabanının tamamını geliştirme ortamından üretim ortamına dağıtmaya odaklanır.

Veritabanını Üretim Ortamına Dağıtma

Bu öğreticinin geri kalanında veritabanını geliştirme ortamından üretim ortamına dağıtma konusuna bakılır. Takip ediyorsanız, web barındırma sağlayıcınızla hesabınızda Microsoft SQL Server veritabanı desteği olduğundan emin olmanız gerekir. Ayrıca elinizde veritabanı sunucusu adı, veritabanı adı ve veritabanına bağlanmak için kullanılan kullanıcı adı ve parola gibi bazı bilgiler de olması gerekir.

Bu öğreticide daha önce belirtildiği gibi, Kitap İncelemeleri web sitesinin veritabanı klasörde depolanan App_Data SQL Server 2008 Express Edition veritabanıdır. Böyle bir veritabanının dağıtılması, klasörü geliştirme ortamından üretim ortamına App_Data kopyalamak kadar basit olabilir. Ancak çoğu web barındırma sağlayıcısı, güvenlik nedeniyle klasördeki veritabanlarını App_Data desteklemez. Bunun yerine, web konakları ortamlarındaki bir SQL Server veritabanı sunucusunda bir hesap sağlar. Veritabanını geliştirme ortamınızdan üretim ortamına dağıtmak için veritabanınızın web konağınızın veritabanı sunucusuna kaydedilmesi gerekir.

Peki veritabanınızı geliştirme ortamından üretim ortamına nasıl alırsınız? Web barındırma sağlayıcınız tarafından sunulan hizmetlere bağlı olarak bunu gerçekleştirmenin birkaç yolu vardır. DiscountASP.NET gibi bazı konaklarla, veritabanının veya gerçek .mdf dosyanın bir yedeğini web sitenize FTP ile yükleyebilir ve ardından Denetim Masası yedekleme dosyasını geri yükleyebilir veya dosyayı SQL Server veritabanı sunucusuna ekleyebilirsiniz.mdf. Bu tür araçların veritabanını dağıtması, klasörü üretim ortamına kopyalayıp App_Data Denetim Masası aracılığıyla eklemek kadar kolaydır. Bu, veritabanınızı ilk kez yayımlamanın belki de en kolay ve en hızlı yoludur.

Bir diğer yaklaşım da Veritabanı Yayımlama Sihirbazı'nı kullanmaktır. Veritabanı Yayımlama Sihirbazı, veritabanınızın şemasını (tablolar, saklı yordamlar, görünümler, kullanıcı tanımlı işlevler vb.) ve isteğe bağlı olarak tablolarındaki verileri oluşturmak için SQL komutlarını oluşturan bir Windows masaüstü uygulamasıdır. Daha sonra SQL Server Management Studio aracılığıyla web barındırma sağlayıcınızın veritabanı sunucusuna bağlanabilir ve ardından bu betiği yürüterek veritabanını üretim ortamında çoğaltabilirsiniz. Daha da iyisi, web barındırma sağlayıcınız Microsoft'un Veritabanı Yayımlama Hizmetleri'ni destekliyorsa, Veritabanı Yayımlama Sihirbazı tarafından oluşturulan betiğin veritabanı sunucusunda sizin adınıza otomatik olarak yürütülmesini sağlayabilirsiniz. Veritabanı Yayımlama Sihirbazı veritabanının şemasını ve verilerini oluşturan bir betik oluşturduğundan, web barındırma sağlayıcınızın karşıya yüklenen .mdf dosyayı ekleme gibi özellikler sunup sunmadığına bakılmaksızın çalışır.

Veritabanı Yayımlama Sihirbazı'nı Kullanarak Veritabanı Şemasını ve Verilerini Oluşturmak için SQL Komutlarını Oluşturma

Kitap İncelemeleri veritabanını üretim ortamına dağıtmak için Veritabanı Yayımlama Sihirbazı'nı kullanma adımlarını inceleyelim. Visual Studio 2008 veya üzerini kullanıyorsanız, Veritabanı Yayımlama Sihirbazı zaten yüklüdür.

Visual Studio'yu açın ve veritabanına gidin Reviews.mdf . Visual Web Developer kullanıyorsanız Veritabanı Gezgini'ne gidin; Visual Studio kullanıyorsanız Sunucu Gezgini'ni kullanın. Şekil 4'te Reviews.mdf Visual Web Developer'daki Veritabanı Gezgini'ndeki veritabanı gösterilmektedir. Şekil 4'ün gösterdiği gibi veritabanı dört tablodan Reviews.mdf , üç saklı yordamdan ve kullanıcı tanımlı bir işlevden oluşur.

Veritabanı Gezgini'nde veya Sunucu Gezgini'nde Veritabanını Bulma

Şekil 4: Veritabanı Gezgini'nde veya Sunucu Gezgini'nde Veritabanını Bulma (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Veritabanı adına sağ tıklayın ve bağlam menüsünden "Sağlayıcıya yayımla" seçeneğini belirleyin. Bu işlem Veritabanı Yayımlama Sihirbazı'nı başlatır (bkz. Şekil 5). Giriş ekranını geçmek için İleri'ye tıklayın.

Giriş ekranını ve sihirbazı ilerletmek için İleri düğmesini gösteren Veritabanı Yayımlama Sihirbazı penceresinin ekran görüntüsü.

Şekil 5: Veritabanı Yayımlama Sihirbazı Giriş Ekranı (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Sihirbazın ikinci ekranında, Veritabanı Yayımlama Sihirbazı tarafından erişilebilen veritabanları listelenir ve seçili veritabanındaki tüm nesnelerin betiğini oluşturma veya betik yazacak nesneleri seçme seçeneklerinden birini belirlemenize olanak tanır. Uygun veritabanını seçin ve "Seçili veritabanındaki tüm nesneleri betikle" seçeneğini işaretli bırakın.

Not

Şekil 6'da gösterilen ekranda İleri'ye tıklandığında " Database databaseName adlı veritabanında bu sihirbaz tarafından betik yazılabilen türlerde nesne yok" hatasını alırsanız, veritabanı dosyanızın yolunun fazla uzun olmadığından emin olun. Veritabanı dosyasının yolu çok uzunsa bu hatanın ortaya çıkabileceği keşfedildi.

Veritabanı listesinde vurgulanmış bir veritabanını ve Tüm nesneleri betikle onay kutusunu gösteren Veritabanı Yayımlama Sihirbazı penceresinin ekran görüntüsü.

Şekil 6: Veritabanı Yayımlama Sihirbazı Giriş Ekranı (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Sonraki ekrandan bir betik dosyası oluşturabilir veya web konağınız destekliyorsa veritabanını doğrudan web ana bilgisayar sağlayıcınızın veritabanı sunucusunda yayımlayabilirsiniz. Şekil 7'de gösterildiği gibi, betiği dosyasına C:\REVIEWS.MDF.sqlyazdırıyorum.

Veritabanını Bir Dosyaya Betik Olarak Yazma veya Doğrudan Web Barındırma Sağlayıcınızda Yayımlama

Şekil 7: Veritabanını Bir Dosyaya Betik Olarak Yazma veya Doğrudan Web Barındırma Sağlayıcınızda Yayımlama (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Sonraki ekranda sizden çeşitli betik oluşturma seçenekleri istenir. Bu mevcut nesneleri kaldırmak için betiğin drop deyimleri içerip içermeyeceğini belirtebilirsiniz. Bu varsayılan değer True'dur ve bir veritabanı ilk kez dağıtılırken sorun olmaz. Hedef veritabanının SQL Server 2000, SQL Server 2005 veya SQL Server 2008 olduğunu da belirtebilirsiniz. Son olarak, şemayı ve verileri, yalnızca verileri mi yoksa yalnızca şemayı mı betik olarak yazabileceğinizi belirtebilirsiniz. Şema, veritabanı nesnelerinin, tabloların, saklı yordamların, görünümlerin vb. koleksiyonudur. Veriler, tablolarda bulunan bilgilerdir.

Şekil 8'de gösterildiği gibi, sihirbazı var olan veritabanı nesnelerini bırakacak, SQL Server 2008 veritabanı için betik oluşturacak ve hem şemayı hem de verileri yayımlayacak şekilde yapılandırdım.

Yayımlama Seçeneklerini Belirtme

Şekil 8: Yayımlama Seçeneklerini Belirtin (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Son iki ekranda gerçekleştirilmek üzere olan eylemler özetlenir ve ardından betiğin durumu görüntülenir. Sihirbazı çalıştırmanın net sonucu, veritabanını üretimde oluşturmak ve geliştirmeyle aynı verilerle doldurmak için gereken SQL komutlarını içeren bir betik dosyasına sahip olmamızdır.

Üretim Ortamı Veritabanında SQL Komutlarını Yürütme

Artık veritabanını ve verilerini oluşturmak için SQL komutlarını içeren betiğimiz olduğuna göre, geriye kalan tek şey betiği üretim veritabanında yürütmektir. Bazı web barındırma sağlayıcıları, Denetim Masası veritabanınızda yürütülecek SQL komutlarını girebileceğiniz bir metin kutusu sunar. Çok büyük bir betik dosyanız varsa bu seçenek çalışmayabilir (örneğin, betik dosyasının REVIEWS.MDF.sql boyutu 425 KB'ın üzerindedir).

daha iyi bir yaklaşım, SQL Server Management Studio (SSMS) kullanarak doğrudan üretim veritabanı sunucusuna bağlanmaktır. Bilgisayarınızda Express olmayan bir SQL Server Sürümü yüklüyse, büyük olasılıkla SSMS zaten yüklüdür. Aksi takdirde, SQL Server Management Studio Express Edition'ın ücretsiz bir kopyasını indirip yükleyebilirsiniz.

SSMS'yi başlatın ve web barındırma sağlayıcınız tarafından sağlanan bilgileri kullanarak web konağınızın veritabanı sunucusuna bağlanın.

Metin alanlarında web ana bilgisayarının veri sunucusu bilgilerini gösteren Sunucuya Bağlan iletişim kutusunun ekran görüntüsü.

Şekil 9: Web Ana Bilgisayar Sağlayıcınızın Veritabanı Sunucusuna Bağlanma (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Veritabanları sekmesini genişletin ve veritabanınızı bulun. Araç Çubuğunun sol üst köşesindeki Yeni Sorgu düğmesine tıklayın, Veritabanı Yayımlama Sihirbazı tarafından oluşturulan betik dosyasındaki SQL komutlarını yapıştırın ve yürüt düğmesine tıklayarak bu komutları üretim veritabanı sunucusunda çalıştırın. Betik dosyanız özellikle büyükse komutların yürütülmesi birkaç dakika sürebilir.

Betik dosyasındaki komutların üretim sunucusunda yürütüldüklerini gösteren Microsoft SQL Server Management Studio penceresinin ekran görüntüsü.

Şekil 10: Web Ana Bilgisayar Sağlayıcınızın Veritabanı Sunucusuna Bağlanma (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Hepsi bu kadar! Bu noktada geliştirme veritabanı üretime çoğaltıldı. SSMS'de veritabanını yenilerseniz yeni veritabanı nesnelerini görmeniz gerekir. Şekil 11'de üretim veritabanının tablolarını, saklı yordamlarını ve geliştirme veritabanındakileri yansıtan kullanıcı tanımlı işlevleri gösterilmektedir. Veritabanı Yayımlama Sihirbazı'na verileri yayımlamasını belirttiğimiz için üretim veritabanı tablolarının verileri, sihirbazın yürütüldükleri zamandaki geliştirme veritabanı tablolarının verileriyle aynı olur. Şekil 12'de üretim veritabanındaki Books tablodaki veriler gösterilmektedir.

Veritabanı Nesneleri Üretim Veritabanında Çoğaltıldı

Şekil 11: Veritabanı Nesneleri Üretim Veritabanında Çoğaltıldı (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Üretim Veritabanı, Geliştirme Veritabanındakiyle Aynı Verileri İçerir

Şekil 12: Üretim Veritabanı, Geliştirme Veritabanındakiyle Aynı Verileri İçerir (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Bu noktada yalnızca geliştirme veritabanını üretim ortamına dağıtmış olduk. Web uygulamasının dağıtımını henüz incelemedik veya üretim ortamında uygulamanın üretim veritabanını kullanması için hangi yapılandırma değişikliklerinin gerekli olduğunu incelemedik. Sonraki öğreticide bu sorunları ele alacağız!

Özet

Veri temelli bir web uygulaması dağıtmak için geliştirme sırasında kullanılan veritabanının üretim ortamına kopyalanması gerekir. Birçok web barındırma sağlayıcısı, veritabanı dağıtma işlemini basitleştirmek için araçlar sunar. Örneğin, DiscountASP.NET ile veritabanı .mdf dosyanızı (veya bir yedeklemeyi) FTP'ye ekleyebilir ve ardından veritabanını Denetim Masası veritabanı sunucusuna ekleyebilirsiniz. Web barındırma sağlayıcınızın sunduğu özelliklerden bağımsız olarak çalışan bir diğer seçenek de geliştirme veritabanı şemasını ve verilerini oluşturmak için SQL komutlarının betiğini oluşturan Microsoft Veritabanı Yayımlama Sihirbazı aracıdır. Bu betik oluşturulduktan sonra üretim veritabanında yürütebilirsiniz.

Book Reviews web uygulamasının veritabanı üretimde olduğuna göre uygulamayı dağıtabiliriz. Ancak, web uygulamasının yapılandırma bilgileri veritabanına bağlantı dizesi belirtir ve bu bağlantı dizesi geliştirme veritabanına başvurur. Siteyi üretim ortamına dağıtırken bu bağlantı dizesi bilgilerini güncelleştirmemiz gerekiyor. Bir sonraki öğreticide bu yapılandırma farklılıklarına göz atılacak ve veri temelli Kitap İncelemeleri sitesini üretim ortamına yayımlamak için gereken adımlarda adım adım yol gösterilir.

Mutlu Programlama!

Daha Fazla Bilgi

Bu öğreticide ele alınan konular hakkında daha fazla bilgi için aşağıdaki kaynağa bakın: