Öğretici: Azure SQL Veritabanı ile Azure'a ASP.NET uygulaması dağıtma
Azure App Service, yüksek oranda ölçeklenebilen, kendi kendine düzeltme eki uygulayan bir web barındırma hizmeti sunar. Bu öğreticide, App Service'te veri temelli bir ASP.NET uygulamasının nasıl dağıtılacağı ve Azure SQL Veritabanı nasıl bağlanılacağı gösterilmektedir. İşiniz bittiğinde Azure'da çalışan ve SQL Veritabanı bağlı bir ASP.NET uygulamanız vardır.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Azure SQL Veritabanı'de veritabanı oluşturma
- ASP.NET uygulamasını SQL Veritabanı'na bağlama
- Uygulamayı Azure’da dağıtma
- Veri modelini güncelleştirme ve uygulamayı yeniden dağıtma
- Azure’daki günlüklerin terminalinize akışını sağlama
Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.
Önkoşullar
Bu öğreticiyi tamamlamak için:
Visual Studio 2022'yi ASP.NET, web geliştirme ve Azure geliştirme iş yükleriyle yükleyin.
Visual Studio’yu önceden yüklediyseniz, Araçlar>Araçları ve Özellikleri Al seçeneklerine tıklayarak Visual Studio’da iş yüklerini ekleyin.
Örneği indirme
Dotnet-sqldb-tutorial-master.zip dosyasını ayıklayın (sıkıştırmasını açın).
Örnek proje, Entity Framework Code First kullanan temel bir ASP.NET MVC oluşturma-okuma-güncelleştirme-silme (CRUD) uygulaması içerir.
Uygulamayı çalıştırma
Visual Studio'da dotnet-sqldb-tutorial-master/DotNetAppSqlDb.sln dosyasını açın.
Uygulamayı çalıştırmak için
F5
tuşlarına basın. Uygulama varsayılan tarayıcınızda görüntülenir.Not
Visual Studio'yu ve önkoşulları yalnızca yüklediyseniz eksik paketleri NuGet aracılığıyla yüklemeniz gerekebilir.
Yeni Oluştur bağlantısını seçin ve yapılacak birkaç iş oluşturun.
Düzenle, Ayrıntılar ve Sil bağlantılarını test edin.
Uygulama, veritabanıyla bağlantı kurmak için bir veritabanı bağlamı kullanır. Bu örnekte, veritabanı bağlamı MyDbConnection
adlı bir bağlantı dizesi kullanır. Bağlantı dizesi Web.config dosyasında ayarlanır ve Models/MyDatabaseContext.cs dosyasında bu bağlantı dizesine başvurulur. bağlantı dizesi adı öğreticinin devamında Azure uygulamasını bir Azure SQL Veritabanı bağlamak için kullanılır.
ASP.NET uygulamasını Azure'da yayımlama
Çözüm Gezgini’nde DotNetAppSqlDb projenize sağ tıklayıp Yayımla’yı seçin.
Hedef olarak Azure'ı seçin ve İleri'ye tıklayın.
Azure Uygulaması Hizmeti'nin (Windows) seçili olduğundan emin olun ve İleri'ye tıklayın.
Oturum açma ve uygulama ekleme
Yayımla iletişim kutusunda Oturum Aç'a tıklayın.
Azure aboneliğinizde oturum açın. Bir Microsoft hesabında zaten oturum açtıysanız hesabın Azure aboneliğinizi barındırdığından emin olun. Oturum açtığınız Microsoft hesabında Azure aboneliğiniz yoksa, doğru hesabı eklemek için tıklayın.
App Service örnekleri bölmesinde öğesine tıklayın+.
Web uygulaması adını yapılandırma
Oluşturulan web uygulaması adını koruyabilir veya başka bir benzersiz adla değiştirebilirsiniz (geçerli karakterler: a-z
, 0-9
ve -
). Web uygulaması adı, uygulamanızın varsayılan URL'sinin bir parçası olarak kullanılır (<app_name>.azurewebsites.net
; burada <app_name>
, web uygulamanızın adıdır). Web uygulaması adı Azure'daki tüm uygulamalar arasında benzersiz olmalıdır.
Not
Henüz Oluştur'u seçmeyin.
Kaynak grubu oluşturma
Kaynak grubu, web uygulamaları, veritabanları ve depolama hesapları gibi Azure kaynaklarının dağıtıldığı ve yönetildiği mantıksal bir kapsayıcıdır. Örneğin, daha sonra tek bir basit adımda kaynak grubun tamamını silmeyi seçebilirsiniz.
Kaynak Grubu’nun yanındaki Yeni öğesine tıklayın.
Kaynak grubunu myResourceGroup olarak adlandırın.
App Service planı oluşturma
App Service planı, uygulamanızı barındıran web sunucusu grubunun konumunu, boyutunu ve özelliklerini belirtir. Web uygulamalarını tek bir App Service planını paylaşacak şekilde yapılandırarak birden çok uygulama barındırırken tasarruf edebilirsiniz.
App Service planları şunları tanımlar:
- Bölge (örneğin, Kuzey Avrupa, Doğu ABD veya Güneydoğu Asya)
- Örnek boyutu (küçük, orta veya büyük)
- Ölçek sayısı (1 ila 20 örnek)
- SKU (Ücretsiz, Paylaşılan, Temel, Standart veya Premium)
Barındırma Planı'nın yanında Yeni'ye tıklayın.
App Service Planını Yapılandır iletişim kutusunda, yeni App Service planını aşağıdaki ayarlarla yapılandırın ve Tamam'a tıklayın:
Ayar Önerilen değer Daha fazla bilgi için App Service Planı myAppServicePlan App Service planları Konum West Europe Azure bölgeleri Büyüklük Ücretsiz Fiyatlandırma katmanları Oluştur'a tıklayın ve Azure kaynaklarının oluşturulmasını bekleyin.
Yayımla iletişim kutusunda yapılandırdığınız kaynaklar gösterilir. Finish (Son) düğmesine tıklayın.
Sunucu ve veritabanı oluşturma
Veritabanı oluşturmadan önce mantıksal bir SQL sunucusuna ihtiyacınız vardır. Mantıksal SQL sunucusu, grup olarak yönetilen bir veritabanı grubu içeren mantıksal bir yapıdır.
Yayımla iletişim kutusunda, aşağı kaydırarak Hizmet Bağımlılıkları bölümüne gelin. SQL Server Veritabanı'nın yanında Yapılandır'a tıklayın.
Not
Bağlı Hizmetler sayfası yerine Yayımla sayfasından SQL Veritabanı yapılandırdığınızdan emin olun.
Azure SQL Veritabanı'ı seçin ve İleri'ye tıklayın.
Azure SQL Veritabanı Yapılandır iletişim kutusunda öğesine tıklayın+.
Veritabanı sunucusu'nın yanındaki Yeni'ye tıklayın.
Sunucu adı, sunucunuz
<server_name>.database.windows.net
için varsayılan URL'nin bir parçası olarak kullanılır. Azure SQL'deki tüm sunucularda benzersiz olmalıdır. Sunucu adını istediğiniz değerle değiştirin.Bir yönetici kullanıcı adı ve parolası ekleyin. Parola karmaşıklık gereksinimleri için bkz. Parola İlkesi.
Bu kullanıcı adını ve parolayı unutmayın. Sunucuyu daha sonra yönetmek için bu sunucuya ihtiyacınız vardır.
Önemli
Bağlantı dizelerindeki (Visual Studio ve ayrıca App Service’te) parolanız maskelenmiş olsa bile, bir yerlerde tutulması uygulamanızın saldırı yüzeyine katkıda bulunur. App Service, kodunuzda veya uygulama yapılandırmanızda gizli dizileri tutma gereksinimini tamamen ortadan kaldırarak bu riski yok etmek için yönetilen hizmet kimliklerini kullanabilir. Daha fazla bilgi için bkz. Sonraki adımlar.
Tamam'a tıklayın.
Azure SQL Veritabanı iletişim kutusunda, varsayılan oluşturulan Veritabanı Adı'nı koruyun. Oluştur'u seçin ve veritabanı kaynaklarının oluşturulmasını bekleyin.
Veritabanı bağlantısını yapılandırma
Sihirbaz veritabanı kaynaklarını oluşturmayı tamamladığında İleri'ye tıklayın.
Veritabanı bağlantı dizesi Adı alanına MyDbConnection yazın. Bu ad, Models/MyDatabaseContext.cs'de başvurulan bağlantı dizesiyle eşleşmelidir.
Veritabanı bağlantısı kullanıcı adı ve Veritabanı bağlantısı parolası bölümüne Sunucu oluşturma bölümünde kullandığınız yönetici kullanıcı adını ve parolasını yazın.
Azure Uygulaması Ayarları'nın seçili olduğundan emin olun ve Son'a tıklayın.
Not
Bunun yerine Yerel kullanıcı gizli dizileri dosyalarını görüyorsanız, Yayımla sayfası yerine Bağlı Hizmetler sayfasından SQL Veritabanı yapılandırmış olmanız gerekir.
Yapılandırma sihirbazının tamamlanmasını bekleyin ve Kapat'a tıklayın.
ASP.NET uygulamanızı dağıtma
Yayımla sekmesinde, yukarı doğru yukarı kaydırın ve Yayımla'ya tıklayın. ASP.NET uygulamanız Azure'a dağıtıldıktan sonra. Varsayılan tarayıcınız dağıtılan uygulamanın URL'siyle başlatılır.
Yapılacak birkaç iş ekleyin.
Tebrikler! Veri temelli ASP.NET uygulamanız Azure App Service'de çalışıyor.
Veritabanına yerel olarak erişme
Visual Studio, SQL Server Nesne Gezgini Azure'daki yeni veritabanınızı kolayca keşfetmenize ve yönetmenize olanak tanır. Yeni veritabanı, güvenlik duvarını oluşturduğunuz App Service uygulamasına zaten açtı. Ancak yerel bilgisayarınızdan (visual studio gibi) erişmek için yerel makinenizin genel IP adresi için bir güvenlik duvarı açmanız gerekir. İnternet servis sağlayıcınız genel IP adresinizi değiştirirse güvenlik duvarını Azure veritabanına yeniden erişecek şekilde yeniden yapılandırmanız gerekir.
Veritabanı bağlantısı oluşturma
Görünüm menüsünde SQL Server Nesne Gezgini'ni seçin.
SQL Server Nesne Gezgini'nin üst kısmında SQL Server Ekle düğmesine tıklayın.
Veritabanı bağlantısını yapılandırma
Bağlan iletişim kutusunda Azure düğümünü genişletin. Azure'daki tüm SQL Veritabanı örnekleriniz burada listelenir.
Daha önce oluşturduğunuz veritabanını seçin. Daha önce oluşturduğunuz bağlantı, en altta otomatik olarak doldurulur.
Daha önce oluşturduğunuz veritabanı yöneticisi parolasını yazın ve Bağlan'a tıklayın.
Bilgisayarınızdan istemci bağlantısına izin verme
Yeni güvenlik duvarı kuralı oluştur iletişim kutusu açılır. Varsayılan olarak, bir sunucu yalnızca Azure uygulamanız gibi Azure hizmetlerinden veritabanlarına bağlantılara izin verir. Veritabanınıza Azure dışından bağlanmak için sunucu düzeyinde bir güvenlik duvarı kuralı oluşturun. Güvenlik duvarı kuralı yerel bilgisayarınızın genel IP adresine izin verir.
İletişim kutusu bilgisayarınızın genel IP adresiyle önceden doldurulmuştur.
İstemci IP değerimi ekle'nin seçili olduğundan emin olun ve Tamam'a tıklayın.
Visual Studio SQL Veritabanı örneğiniz için güvenlik duvarı ayarını oluşturmayı tamamladığında, bağlantınız SQL Server Nesne Gezgini'nde gösterilir.
Burada sorgu çalıştırma, görünümler ve saklı yordamlar oluşturma gibi daha birçok yaygın veritabanı işlemini yapabilirsiniz.
Bağlantınızı >genişletin Veritabanları><veritabanı>>tablolarınız.
Todoes
tablosuna sağ tıklayın ve Verileri Görüntüle'yi seçin.
Uygulamayı Code First Migrations ile güncelleştirme
Visual Studio'daki tanıdık araçları kullanarak Azure'daki veritabanınızı ve uygulamanızı güncelleştirebilirsiniz. Bu adımda, veritabanı şemanızda değişiklik yapmak ve bunu Azure'a yayımlamak için Entity Framework'te Code First Migrations'ı kullanırsınız.
Entity Framework Code First Migrations'ı kullanma hakkında daha fazla bilgi için bkz. MVC 5 Kullanarak Entity Framework 6 Code First ile Çalışmaya Başlama.
Veri modelinizi güncelleştirme
Kod düzenleyicide Models\Todo.cs dosyasını açın. ToDo
sınıfına aşağıdaki özelliği ekleyin:
public bool Done { get; set; }
Code First Migrations’ı yerel olarak çalıştırma
Yerel veritabanınızda güncelleştirme yapmak için birkaç komut çalıştırın.
Araçlar menüsünde NuGet Paket Yöneticisi>Paket Yöneticisi Konsolu'na tıklayın.
Paket Yöneticisi Konsolu penceresinde Code First Migrations'ı etkinleştirin:
Enable-Migrations
Bir geçiş ekleyin:
Add-Migration AddProperty
Yerel veritabanınızı güncelleştirin:
Update-Database
Uygulamayı çalıştırmak için
Ctrl+F5
tuşlarına basın. Düzenle, ayrıntılar ve sil bağlantılarını test edin.
Uygulama hatasız yüklerse, Code First Migrations başarılı olmuştur. Ancak, uygulama mantığınız henüz bu yeni özelliği kullanmadığından sayfanız aynı görünmeye devam eder.
Yeni özelliği kullanma
Done
özelliğini kullanarak kodunuzda birkaç değişiklik yapın. Bu öğreticide, daha kolay uygulama için, işlemin nasıl çalıştığını görmek üzere yalnızca Index
ve Create
görünümlerini değiştireceksiniz.
Controllers\TodosController.cs dosyasını açın.
52. satırda
Create()
yöntemini bulun veDone
değeriniBind
özniteliğindeki özellik listesine ekleyin. Hazır olduğunuzda,Create()
metot imzanız aşağıdaki koda benzer şekilde görünür:public ActionResult Create([Bind(Include = "Description,CreatedDate,Done")] Todo todo)
Views\Todos\Create.cshtml dosyasını açın.
Razor kodunda,
model.Description
kullanan bir<div class="form-group">
öğesi vemodel.CreatedDate
kullanan başka bir<div class="form-group">
öğesi görürsünüz. Bu iki öğenin hemen arkasınamodel.Done
kullanan başka bir<div class="form-group">
öğesi ekleyin:<div class="form-group"> @Html.LabelFor(model => model.Done, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> <div class="checkbox"> @Html.EditorFor(model => model.Done) @Html.ValidationMessageFor(model => model.Done, "", new { @class = "text-danger" }) </div> </div> </div>
Views\Todos\Index.cshtml dosyasını açın.
Boş
<th></th>
öğesini arayın. Bu öğenin hemen üstüne aşağıdaki Razor kodunu ekleyin:<th> @Html.DisplayNameFor(model => model.Done) </th>
<td>
yardımcı yöntemlerini içerenHtml.ActionLink()
öğesini bulun. Bu<td>
yönteminin üst kısmına, aşağıdaki Razor koduyla başka bir<td>
öğesi ekleyin:<td> @Html.DisplayFor(modelItem => item.Done) </td>
Index
veCreate
görünümlerindeki değişiklikleri görmek için yapmanız gerekenler bu kadardır.Uygulamayı çalıştırmak için
Ctrl+F5
tuşlarına basın.
Artık yapılacak bir öğe ekleyip öğeyi Bitti olarak işaretleyebilirsiniz. Daha sonra öğe, ana sayfanızda tamamlanmış bir öğe olarak görünmelidir. Edit
görünümünü değiştirmediğinizden, Edit
görünümünün Done
alanında görünmediğini göz önünde bulundurun.
Azure'da Code First Migrations’ı etkinleştirme
Artık veritabanı geçişi de dahil olmak üzere kod değişikliğiniz çalıştığına göre, bunu Azure uygulamanızda yayımlar ve SQL Veritabanı Code First Migrations ile de güncelleştirirsiniz.
Aynı daha önce yaptığınız gibi, projenize sağ tıklayıp Yayımla'yı seçin.
Yayımlama ayarlarını açmak için Diğer eylemler>Düzenle'ye tıklayın.
MyDatabaseContext açılan listesinde, Azure SQL Veritabanı için veritabanı bağlantısını seçin.
Önce Kod Uygulamalı Geçişler (uygulama başlatılırken çalışır) öğesini seçin ve Kaydet'e tıklayın.
Değişikliklerinizi yayımlama
Artık Azure uygulamanızda Code First Migrations'ı etkinleştirdiğinize göre kod değişikliklerinizi yayımlayın.
Yayımlama sayfasında Yayımla'ya tıklayın.
Yapılacaklar öğelerini yeniden eklemeyi deneyin ve Bitti'yi seçin; bunlar giriş sayfanızda tamamlanmış öğe olarak gösteriliyor olmalıdır.
Mevcut yapılacak öğeleriniz görüntülenmeye devam eder. ASP.NET uygulamanızı yeniden yayımladığınızda, SQL Veritabanı'nizdeki mevcut veriler kaybolmaz. Ayrıca, Code First Migrations yalnızca veri şemasını değiştirir ve mevcut verilerinizde herhangi bir değişiklik yapmaz.
Uygulama günlüklerinin akışı yapma
İzleme iletilerini doğrudan Azure uygulamanızdan Visual Studio'ya akışla aktarabilirsiniz.
Controllers\TodosController.cs dosyasını açın.
Her eylem bir Trace.WriteLine()
yöntemiyle başlar. Bu kod, Azure uygulamanıza izleme iletileri eklemeyi göstermek için eklenir.
Günlük akışını etkinleştirme
Yayımlama sayfasında, ekranı aşağı kaydırarak Barındırma bölümüne gelin.
Sağ köşedeki ... öğesine tıklayın .>Akış günlüklerini görüntüleyin.
Şimdi Çıkış penceresine günlüklerin akışı yapılır.
Öte yandan, henüz hiçbir izleme iletisi görmezsiniz. Bunun nedeni, Akış Günlüklerini Görüntüle'yi ilk seçtiğinizde Azure uygulamanızın izleme düzeyini olarak ayarladığı için yalnızca hata olaylarını günlüğe
Error
kaydeder (yöntemiyleTrace.TraceError()
).
İzleme düzeylerini değiştirme
İzleme düzeylerini diğer izleme iletilerinin çıkışını almak üzere değiştirmek için yayımlama sayfasına geri dönün.
Barındırma bölümünde ... öğesine tıklayın.> Azure portalında açın.
Uygulamanızın portal yönetimi sayfasında, soldaki menüden App Service günlükleri'ni seçin.
Uygulama Günlüğü (Dosya Sistemi) altında Düzey'de Ayrıntılı'yı seçin. Kaydet'e tıklayın.
İpucu
Her düzeyde hangi tür iletilerin gösterildiğini görmek için farklı izleme düzeyleriyle denemeler yapabilirsiniz. Örneğin, Bilgi düzeyi
Trace.TraceInformation()
,Trace.TraceWarning()
veTrace.TraceError()
tarafından oluşturulan tüm günlükleri içerir, amaTrace.WriteLine()
tarafından oluşturulan günlükleri içermez.Tarayıcınızda, uygulama adınız.azurewebsites.net> http://< yeniden uygulamanıza gidin, ardından Azure'da yapılacaklar listesi uygulamasına tıklamayı deneyin. Artık Visual Studio'da izleme iletileri akışla Çıkış penceresine aktarılır.
Application: 2017-04-06T23:30:41 PID[8132] Verbose GET /Todos/Index Application: 2017-04-06T23:30:43 PID[8132] Verbose GET /Todos/Create Application: 2017-04-06T23:30:53 PID[8132] Verbose POST /Todos/Create Application: 2017-04-06T23:30:54 PID[8132] Verbose GET /Todos/Index
Günlük akışını durdurma
Günlük akışı hizmetini durdurmak için, Çıkış penceresinde İzlemeyi durdur düğmesine tıklayın.
Kaynakları temizleme
Önceki adımlarda, bir kaynak grubunda Azure kaynakları oluşturdunuz. İleride bu kaynaklara ihtiyaç duymayacağınızı düşünüyorsanız kaynakları silmek için kaynak grubunu silebilirsiniz.
- Web uygulamanızın Azure portalındaki Genel Bakış sayfasından Kaynak grubu'nun altındaki myResourceGroup bağlantısını seçin.
- Kaynak grubu sayfasındaki listede yer alan kaynakların silmek istediğiniz kaynaklar olduğundan emin olun.
- Kaynak grubunu sil'i seçin, metin kutusuna myResourceGroup yazın ve sil'i seçin.
- Sil'i seçerek yeniden onaylayın.
Sonraki adımlar
Bu öğreticide, şunların nasıl yapıldığını öğrendiniz:
- Azure SQL Veritabanı'de veritabanı oluşturma
- ASP.NET uygulamasını SQL Veritabanı'na bağlama
- Uygulamayı Azure’da dağıtma
- Veri modelini güncelleştirme ve uygulamayı yeniden dağıtma
- Azure’daki günlüklerin terminalinize akışını sağlama
Azure SQL Veritabanı bağlantınızın güvenliğini kolayca iyileştirmeyi öğrenmek için sonraki öğreticiye ilerleyin.
Diğer kaynaklar:
Bulut harcamalarınızı iyileştirmek ve tasarruf etmek mi istiyorsunuz?