Öğ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.

Published ASP.NET application in Azure App Service

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.

Ön koşullar

Bu öğreticiyi tamamlamak için:

Visual Studio 2022'yiASP.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

  1. Örnek projeyi indirin.

  2. 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

  1. Visual Studio'da dotnet-sqldb-tutorial-master/DotNetAppSqlDb.sln dosyasını açın.

  2. Uygulamayı çalıştırmak için F5 tuşlarına basın. Uygulama varsayılan tarayıcınızda görüntülenir.

    Dekont

    Visual Studio'yu ve önkoşulları yalnızca yüklediyseniz eksik paketleri NuGet aracılığıyla yüklemeniz gerekebilir.

  3. Yeni Oluştur bağlantısını seçin ve yapılacak birkaç iş oluşturun.

    New ASP.NET Project dialog box

  4. 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

  1. Çözüm Gezgini’nde DotNetAppSqlDb projenize sağ tıklayıp Yayımla’yı seçin.

    Publish from Solution Explorer

  2. Hedef olarak Azure'ı seçin ve İleri'ye tıklayın.

  3. Azure Uygulaması Hizmeti'nin (Windows) seçili olduğundan emin olun ve İleri'ye tıklayın.

Oturum açma ve uygulama ekleme

  1. Yayımla iletişim kutusunda Oturum Aç'a tıklayın.

  2. 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.

  3. App Service örnekleri bölmesinde öğesine tıklayın+.

    Sign in to Azure

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.

Dekont

Henüz Oluştur'u seçmeyin.

Create app service dialog

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.

  1. Kaynak Grubu’nun yanındaki Yeni öğesine tıklayın.

    Next to Resource Group, click New.

  2. 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)
  1. Barındırma Planı'nın yanında Yeni'ye tıklayın.

  2. 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ı
    Location West Europe Azure bölgeleri
    Büyüklük Ücretsiz Fiyatlandırma katmanları

    Create App Service plan

  3. Oluştur'a tıklayın ve Azure kaynaklarının oluşturulmasını bekleyin.

  4. Yayımla iletişim kutusunda yapılandırdığınız kaynaklar gösterilir. Finish (Son) düğmesine tıklayın.

    the resources you've created

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.

  1. 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.

    Dekont

    Bağlan Hizmetler sayfası yerine Yayımla sayfasından SQL Veritabanı yapılandırdığınızdan emin olun.

    Configure SQL Database dependency

  2. Azure SQL Veritabanı'ı seçin ve İleri'ye tıklayın.

  3. Azure SQL Veritabanı Yapılandır iletişim kutusunda öğesine tıklayın+.

  4. Veritabanı sunucusu'nın yanındaki Yeni'ye tıklayın.

    Sunucu adı, sunucunuz <server_name>.database.windows.netiç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.

  5. 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.

    Create server

    Ö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.

  6. Tamam'a tıklayın.

  7. 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.

    Configure database

Veritabanı bağlantısını yapılandırma

  1. Sihirbaz veritabanı kaynaklarını oluşturmayı tamamladığında İleri'ye tıklayın.

  2. Veritabanı bağlantı dizesi Adı alanına MyDb Bağlan ion yazın. Bu ad, Models/MyDatabaseContext.cs'de başvurulan bağlantı dizesiyle eşleşmelidir.

  3. 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.

  4. Azure Uygulaması Ayarlar seçildiğinden emin olun ve Son'a tıklayın.

    Dekont

    Bunun yerine Yerel kullanıcı gizli dizileri dosyalarını görüyorsanız, Yayımla sayfası yerine Bağlan Hizmetler sayfasından SQL Veritabanı yapılandırmış olmanız gerekir.

    Configure database connection string

  5. Yapılandırma sihirbazının tamamlanmasını bekleyin ve Kapat'a tıklayın.

ASP.NET uygulamanızı dağıtma

  1. 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.

  2. Yapılacak birkaç iş ekleyin.

    Published ASP.NET application in Azure app

    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

  1. Görünüm menüsünde SQL Server Nesne Gezgini'ni seçin.

  2. 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

  1. Bağlan iletişim kutusunda Azure düğümünü genişletin. Azure'daki tüm SQL Veritabanı örnekleriniz burada listelenir.

  2. Daha önce oluşturduğunuz veritabanını seçin. Daha önce oluşturduğunuz bağlantı, en altta otomatik olarak doldurulur.

  3. Daha önce oluşturduğunuz veritabanı yöneticisi parolasını yazın ve Bağlan'a tıklayın.

    Configure database connection from Visual Studio

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.

  1. İstemci IP değerimi ekle'nin seçili olduğundan emin olun ve Tamam'a tıklayın.

    Create firewall rule

    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.

  2. 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.

    Explore SQL Database objects

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.

  1. Araçlar menüsünde NuGet Paket Yöneticisi>Paket Yöneticisi Konsolu'na tıklayın.

  2. Paket Yöneticisi Konsolu penceresinde Code First Migrations'ı etkinleştirin:

    Enable-Migrations
    
  3. Bir geçiş ekleyin:

    Add-Migration AddProperty
    
  4. Yerel veritabanınızı güncelleştirin:

    Update-Database
    
  5. 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.

  1. Controllers\TodosController.cs dosyasını açın.

  2. 52. satırda Create() yöntemini bulun ve Done değerini Bind ö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)
    
  3. Views\Todos\Create.cshtml dosyasını açın.

  4. Razor kodunda, model.Description kullanan bir <div class="form-group"> öğesi ve model.CreatedDate kullanan başka bir <div class="form-group"> öğesi görürsünüz. Bu iki öğenin hemen arkasına model.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>
    
  5. Views\Todos\Index.cshtml dosyasını açın.

  6. Boş <th></th> öğesini arayın. Bu öğenin hemen üstüne aşağıdaki Razor kodunu ekleyin:

    <th>
        @Html.DisplayNameFor(model => model.Done)
    </th>
    
  7. <td> yardımcı yöntemlerini içeren Html.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 ve Create görünümlerindeki değişiklikleri görmek için yapmanız gerekenler bu kadardır.

  8. 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.

  1. Aynı daha önce yaptığınız gibi, projenize sağ tıklayıp Yayımla'yı seçin.

  2. Yayımlama ayarlarını açmak için Diğer eylemler>Düzenle'ye tıklayın.

    Open publish settings

  3. MyDatabaseContext açılan listesinde, Azure SQL Veritabanı için veritabanı bağlantısını seçin.

  4. Önce Kod Uygulamalı Geçişler (uygulama başlatılırken çalışır) öğesini seçin ve Kaydet'e tıklayın.

    Enable Code First Migrations in Azure app

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.

  1. Yayımlama sayfasında Yayımla'ya tıklayın.

  2. Yapılacaklar öğelerini yeniden eklemeyi deneyin ve Bitti'yi seçin; bunlar giriş sayfanızda tamamlanmış öğe olarak gösteriliyor olmalıdır.

    Azure app after Code First Migration

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

  1. Yayımlama sayfasında, ekranı aşağı kaydırarak Barındırma bölümüne gelin.

  2. Sağ köşedeki ... öğesine tıklayın .>Akış günlüklerini görüntüleyin.

    Enable log streaming

    Şimdi Çıkış penceresine günlüklerin akışı yapılır.

    Log streaming in Output window

    Ö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 Errorkaydeder (yöntemiyleTrace.TraceError()).

İzleme düzeylerini değiştirme

  1. İzleme düzeylerini diğer izleme iletilerinin çıkışını almak üzere değiştirmek için yayımlama sayfasına geri dönün.

  2. Barındırma bölümünde ... öğesine tıklayın.>Azure portalında açın.

  3. Uygulamanızın portal yönetimi sayfasında, soldaki menüden App Service günlükleri'ni seçin.

  4. Uygulama Günlüğü (Dosya Sistemi) altında Düzey'de Ayrıntılı'yı seçin. Kaydet'e tıklayın.

    Bahşiş

    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() ve Trace.TraceError() tarafından oluşturulan tüm günlükleri içerir, ama Trace.WriteLine() tarafından oluşturulan günlükleri içermez.

  5. 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.

Stop log streaming

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.

  1. Web uygulamanızın Azure portalındaki Genel Bakış sayfasından Kaynak grubu'nun altındaki myResourceGroup bağlantısını seçin.
  2. Kaynak grubu sayfasındaki listede yer alan kaynakların silmek istediğiniz kaynaklar olduğundan emin olun.
  3. Sil'i seçin, metin kutusuna myResourceGroup yazın ve ardından Sil'e tıklayı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?