Visual Studio kullanarak Web İşleri geliştirme ve dağıtma

Bu makalede, Azure Web İşi olarak Azure App Service'da bir web uygulamasına konsol uygulaması projesi dağıtmak için Visual Studio'nun nasıl kullanılacağı açıklanmaktadır. Azure portal kullanarak Web İşleri dağıtma hakkında bilgi için bkz. Azure App Service'da Web İşleri ile arka plan görevleri çalıştırma.

.NET Core uygulaması veya .NET Framework uygulaması olarak çalışan bir Web İşi geliştirmeyi seçebilirsiniz. Azure Web İşleri SDK'sının 3.x sürümü.NET Core uygulamaları veya .NET Framework uygulamaları olarak çalışan Web İşleri geliştirmenize olanak tanırken, sürüm 2.x yalnızca .NET Framework destekler. Web İşleri projesini dağıtma yönteminiz .NET Core projelerinde .NET Framework projelerden farklıdır.

Bir web uygulamasındaki her Web İşinin benzersiz bir ada sahip olması koşuluyla, tek bir web uygulamasında birden çok Web İşi yayımlayabilirsiniz.

.NET Core konsol uygulamaları olarak Web İşleri

Azure Web İşleri SDK'sının 3.x sürümüyle Web İşleri'ni .NET Core konsol uygulamaları olarak oluşturabilir ve yayımlayabilirsiniz. .NET Core konsol uygulamasını oluşturma ve Web İşi olarak Azure'da yayımlamaya yönelik adım adım yönergeler için bkz. Olay odaklı arka plan işleme için Azure Web İşleri SDK'sını kullanmaya başlama.

Not

.NET Core Web Apps ve/veya .NET Core Web İşleri web projeleriyle ilişkilendirilemiyor. Web İşlerinizi bir web uygulamasıyla dağıtmanız gerekiyorsa, Web İşlerinizi .NET Framework konsol uygulaması olarak oluşturun.

Azure App Service'e dağıtma

Visual Studio'dan Azure App Service için .NET Core Web İşi yayımlamak, bir ASP.NET Core uygulamasını yayımlamayla aynı araçları kullanır.

  1. Çözüm Gezgini'nde projeye sağ tıklayın ve Yayımla'yı seçin.

  2. Yayımla iletişim kutusunda Hedef için Azure'ı ve ardından İleri'yi seçin.

  3. Belirli bir hedef için Azure Web İşleri'ne ve ardından İleri'ye tıklayın.

  4. App Service örneklerin üzerinde Yeni Azure Web İşi oluştur'a yönelik artı (+) düğmesini seçin.

  5. App Service (Windows) iletişim kutusunda, aşağıdaki tabloda yer alan barındırma ayarlarını kullanın.

    Ayar Önerilen değer Açıklama
    Ad Genel olarak benzersiz bir ad Yeni işlev uygulamanızı benzersiz şekilde tanımlayan ad.
    Abonelik Aboneliğinizi seçin Kullanılacak Azure aboneliği.
    Kaynak grubu myResourceGroup İşlev uygulamanızın oluşturulacağı kaynak grubunun adı. Yeni kaynak grubu oluşturmak Yeni'yi seçin.
    Barındırma Planı App Service planı App Service planı, uygulamanızı barındıran web sunucusu grubunun konumunu, boyutunu ve özelliklerini belirtir. Web uygulamalarında ortak bir App Service planının kullanılacağı şekilde yapılandırma gerçekleştirerek birden fazla uygulama barındırdığınızda maliyet tasarrufu elde edebilirsiniz. App Service planları bölgeyi, örnek boyutunu, ölçek sayısını ve SKU'yu (Ücretsiz, Paylaşılan, Temel, Standart veya Premium) tanımlar. Yeni bir App Service planı oluşturmak için Yeni'yi seçin. Ücretsiz ve Temel katmanlar, sitenizin sürekli çalışmasını sağlamak için Always On seçeneğini desteklemez.

    App Service oluştur iletişim kutusu

  6. Oluştur'u seçerek Azure'da bu ayarlarla bir Web İşi ve ilgili kaynaklar oluşturun ve proje kodunuzu dağıtın.

  7. Yayımla sayfasına dönmek için Son'u seçin.

.NET Framework konsol uygulamaları olarak Web İşleri

Web İşleri'nin etkinleştirildiği bir .NET Framework konsol uygulaması projesi dağıtmak için Visual Studio kullanırsanız, çalışma zamanı dosyalarını web uygulamasında uygun klasöre kopyalar (sürekli Web İşleri için App_Data/işler/sürekli ve zamanlanmış veya isteğe bağlı Web İşleri için tetiklenen App_Data/işler/tetiklenir).

Visual Studio, Webjobs özellikli bir projeye aşağıdaki öğeleri ekler:

Web İşi olarak dağıtımı etkinleştirmek için konsol uygulamasına eklenenleri gösteren diyagram

Bu öğeleri mevcut bir konsol uygulaması projesine ekleyebilir veya şablon kullanarak yeni bir Web İşleri özellikli konsol uygulaması projesi oluşturabilirsiniz.

Projeyi tek başına bir Web İşi olarak dağıtın veya web projesini her dağıttığınızda otomatik olarak dağıtılması için bir web projesine bağlayın. Visual Studio, projeleri bağlamak için web projesindeki bir webjobs-list.json dosyasında Webjobs özellikli projenin adını içerir.

Web İşi projesinin web projesine bağlanmasını gösteren diyagram

Önkoşullar

Azure geliştirme iş yüküyle Visual Studio 2022'yi yükleyin.

Mevcut konsol uygulaması projesi için Web İşleri dağıtımlarını etkinleştirme

İki seçeneğiniz vardır:

  • Web projesiyle otomatik dağıtımı etkinleştirin.

    Var olan bir konsol uygulaması projesini, bir web projesi dağıttığınızda web İşi olarak otomatik olarak dağıtılacak şekilde yapılandırın. Web İşi'nizi ilgili web uygulamasını çalıştırdığınız web uygulamasında çalıştırmak istediğinizde bu seçeneği kullanın.

  • Web projesi olmadan dağıtımı etkinleştirin.

    Var olan bir konsol uygulaması projesini, web projesi bağlantısı olmadan tek başına bir Web İşi olarak dağıtacak şekilde yapılandırın. Web uygulamasında web uygulamasının çalışmadığı bir Web İşini tek başına çalıştırmak istediğinizde bu seçeneği kullanın. Web İşi kaynaklarınızı web uygulaması kaynaklarınızdan bağımsız olarak ölçeklendirmek için bunu yapmak isteyebilirsiniz.

  1. Çözüm Gezgini'da web projesine sağ tıklayın ve ardındanMevcut Projeyi Azure Web İşi OlarakEkle'yi> seçin.

    Azure Web İşi Olarak Mevcut Proje

    Azure Web İşi Ekle iletişim kutusu görüntülenir.

  2. Proje adı açılan listesinde, Web İşi olarak eklenecek konsol uygulaması projesini seçin.

    Azure Web İşi Ekle iletişim kutusunda proje seçme

  3. Azure Web İşi Ekle iletişim kutusunu tamamlayın ve ardından Tamam'ı seçin.

  1. Çözüm Gezgini'da konsol uygulaması projesine sağ tıklayın ve azure web işi olarak yayımla'yı seçin.

    Azure Web İşi olarak yayımlama

    Proje adı kutusunda proje seçili durumdayken Azure Web İşi Ekle iletişim kutusu görüntülenir.

  2. Azure Web İşi Ekle iletişim kutusunu tamamlayın ve ardından Tamam'ı seçin.

    Web'i Yayımla sihirbazı görüntülenir. Hemen yayımlamak istemiyorsanız sihirbazı kapatın. Girdiğiniz ayarlar , projeyi dağıtmak istediğiniz zaman için kaydedilir.

Web İşleri özellikli yeni bir proje oluşturma

Web İşleri özellikli yeni bir proje oluşturmak için konsol uygulaması proje şablonunu kullanın ve önceki bölümde açıklandığı gibi Web İşleri dağıtımını etkinleştirin. Alternatif olarak, Webjobs new-project şablonunu kullanabilirsiniz:

  • Bağımsız bir Web İşi için Webjobs new-project şablonunu kullanma

    Bir proje oluşturun ve web projesine bağlantısı olmayan bir Web İşi olarak tek başına dağıtılacak şekilde yapılandırın. Web uygulamasında web uygulamasının çalışmadığı bir Web İşini tek başına çalıştırmak istediğinizde bu seçeneği kullanın. Web İşi kaynaklarınızı web uygulaması kaynaklarınızdan bağımsız olarak ölçeklendirmek için bunu yapmak isteyebilirsiniz.

  • Web projesine bağlı bir Web İşi için Web İşleri yeni proje şablonunu kullanma

    Aynı çözümde bir web projesi dağıttığınızda web İşi olarak otomatik olarak dağıtılacak şekilde yapılandırılmış bir proje oluşturun. Web İşi'nizi ilgili web uygulamasını çalıştırdığınız web uygulamasında çalıştırmak istediğinizde bu seçeneği kullanın.

Not

Webjobs new-project şablonu NuGet paketlerini otomatik olarak yükler ve Web İşleri SDK'sı için Program.cs dosyasında kod içerir. Web İşleri SDK'sını kullanmak istemiyorsanız Program.cs dosyasında deyimini host.RunAndBlock kaldırın veya değiştirin.

  1. Dosya>Yeni Proje'yi> seçin. Yeni proje oluştur iletişim kutusunda C# için Azure Web İşi (.NET Framework) öğesini arayın ve seçin.

  2. Konsol uygulaması projesini bağımsız bir Web İşleri projesi yapmak için önceki yönergeleri izleyin.

  1. Çözüm Gezgini'de web projesine sağ tıklayın ve ardındanYeni Azure Web İşi ProjesiEkle'yi> seçin.

    Yeni Azure Web İşi Projesi menü girdisi

    Azure Web İşi Ekle iletişim kutusu görüntülenir.

  2. Azure Web İşi Ekle iletişim kutusunu tamamlayın ve ardından Tamam'ı seçin.

webjob-publish-settings.json dosyası

Web İşleri dağıtımı için bir konsol uygulaması yapılandırdığınızda Visual Studio, Microsoft.Web.WebJobs.Publish NuGet paketini yükler ve zamanlama bilgilerini Web İşleri projesinin proje Özellikler klasöründeki bir webjob-publish-settings.json dosyasında depolar. Bu dosyanın bir örneği aşağıda verilmiştir:

{
  "$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
  "webJobName": "WebJob1",
  "startTime": "null",
  "endTime": "null",
  "jobRecurrenceFrequency": "null",
  "interval": null,
  "runMode": "Continuous"
}

Bu dosyayı doğrudan düzenleyebilirsiniz ve Visual Studio IntelliSense sağlar. Dosya şeması konumunda https://schemastore.org depolanır ve burada görüntülenebilir.

webjobs-list.json dosyası

Web İşleri özellikli bir projeyi bir web projesine bağladığınızda, Visual Studio Webjobs projesinin adını web projesinin Özellikler klasöründeki bir webjobs-list.json dosyasında depolar. Liste, aşağıdaki örnekte gösterildiği gibi birden çok Web İşi projesi içerebilir:

{
  "$schema": "http://schemastore.org/schemas/json/webjobs-list.json",
  "WebJobs": [
    {
      "filePath": "../ConsoleApplication1/ConsoleApplication1.csproj"
    },
    {
      "filePath": "../WebJob1/WebJob1.csproj"
    }
  ]
}

Bu dosyayı IntelliSense ile doğrudan Visual Studio'da düzenleyebilirsiniz. Dosya şeması konumunda https://schemastore.orgdepolanır.

Web İşleri projesi dağıtma

Web projesine bağladığınız bir Web İşleri projesi, web projesiyle birlikte otomatik olarak dağıtılır. Web projesi dağıtımı hakkında bilgi için bkz. Nasıl yapılır kılavuzları> Sol gezinti bölmesindeuygulamayı dağıtma.

Bir Web İşleri projesini tek başına dağıtmak için, Çözüm Gezgini'da projeye sağ tıklayın ve Azure Web İşi Olarak Yayımla'yı seçin.

Azure Web İşi olarak yayımlama

Bağımsız bir Web İşi için, web projeleri için kullanılan Web'i Yayımla sihirbazı görüntülenir, ancak değiştirilebilecek daha az ayar bulunur.

Azure Web İşi Ekle iletişim kutusu

Azure Web İşi Ekle iletişim kutusu, Web İşlerinizin Web İşi adını ve çalıştırma modu ayarını girmenize olanak tanır.

Azure Web İşi Ekle iletişim kutusu

Bu iletişim kutusundaki alanlardan bazıları, Azure portal Web İşi Ekle iletişim kutusundaki alanlara karşılık gelir. Daha fazla bilgi için bkz. Azure App Service'da Web İşleri ile arka plan görevlerini çalıştırma.

Web İşi dağıtım bilgileri:

  • Komut satırı dağıtımı hakkında daha fazla bilgi için bkz. Azure Web İşlerinin Komut Satırını Etkinleştirme veya Sürekli Teslimi.

  • Bir Web İşi dağıtıp Web İşi türünü değiştirmek ve yeniden dağıtmak istediğinize karar verirseniz , webjobs-publish-settings.json dosyasını silin. Bunun yapılması Visual Studio'nun yayımlama seçeneklerini yeniden görüntülemesine neden olur, böylece Web İşinin türünü değiştirebilirsiniz.

  • Bir Web İşi dağıtır ve daha sonra çalıştırma modunu sürekli modundan sürekli olmayana (veya tam tersi) değiştirirseniz, yeniden dağıttığınızda Visual Studio Azure'da yeni bir Web İşi oluşturur. Diğer zamanlama ayarlarını değiştirir, ancak çalıştırma modunu aynı bırakırsanız veya Zamanlanmış ile İsteğe Bağlı arasında geçiş yaparsanız, Visual Studio yeni bir iş oluşturmak yerine var olan işi güncelleştirir.

Web İşi türleri

Web İşinin türü tetiklenebilir veya sürekli olabilir:

  • Tetiklenen (varsayılan): Tetiklenen Web İşi bağlama olayına göre, bir zamanlamaya göre veya el ile tetiklediğiniz zaman (isteğe bağlı olarak) başlatılır. Web uygulamasının üzerinde çalıştığı tek bir örnekte çalışır.

  • Sürekli: Web İşi oluşturulduğunda sürekli bir Web İşi hemen başlar. Varsayılan olarak tüm web uygulaması ölçeğine sahip örneklerde çalışır ancak settings.job aracılığıyla tek bir örnek olarak çalışacak şekilde yapılandırılabilir.

Not

Bir web uygulaması 20 dakika etkinlik dışı kaldıktan sonra zaman aşımına neden olabilir ve yalnızca gerçek web uygulamasına yapılan istekler zamanlayıcıyı sıfırlayabilir. Uygulamanın yapılandırmasını Azure portal görüntülemek veya gelişmiş araçlar sitesine (https://<app_name>.scm.azurewebsites.net) istek göndermek zamanlayıcıyı sıfırlamaz. İşinizi barındıran web uygulamasını sürekli çalışacak, bir zamanlamaya göre çalışacak veya olay temelli tetikleyiciler kullanacak şekilde ayarladıysanız, web uygulamanızın Azure Yapılandırması sayfasında Alwayson ayarını etkinleştirin. Her zaman açık ayarı, bu tür Web İşleri'nin güvenilir bir şekilde çalıştığından emin olmak için yardımcı olur. Bu özellik yalnızca Temel, Standart ve Premium fiyatlandırma katmanlarında kullanılabilir.

Tetiklenen Web İşi zamanlama

Azure'da bir konsol uygulaması yayımladığınızda Visual Studio, Web İşi türünü varsayılan olarak Tetiklenen olarak ayarlar ve projeye yeni bir settings.job dosyası ekler. Tetiklenen Web İşi türleri için bu dosyayı kullanarak Web İşleriniz için bir yürütme zamanlaması ayarlayabilirsiniz.

Web İşiniz için bir yürütme zamanlaması ayarlamak için settings.job dosyasını kullanın. Aşağıdaki örnek saat 09:00 ile 17:00 arasında çalışır:

{
    "schedule": "0 0 9-17 * * *"
}

Bu dosya, Veya wwwroot\app_data\jobs\continuous\{job name}gibi wwwroot\app_data\jobs\triggered\{job name} Webjob'ınızın betiğini içeren Web İşleri klasörünün kökünde bulunur. Visual Studio'dan bir Web İşi dağıttığınızda, Visual Studio'daki settings.job dosya özelliklerinizi daha yeniyse Kopyala olarak işaretleyin.

Azure portal bir Web İşi oluşturursanızsettings.job dosyası sizin için oluşturulur.

CRON ifadeleri

Web İşleri, Azure İşlevleri zamanlayıcı tetikleyicisi ile zamanlama için aynı CRON ifadelerini kullanır. CRON desteği hakkında daha fazla bilgi edinmek için bkz. Azure İşlevleri için zamanlayıcı tetikleyicisi.

Not

CRON ifadelerini çalıştırmak için kullanılan varsayılan saat dilimi Eşgüdümlü Evrensel Saat 'tir (UTC). CRON ifadenizin başka bir saat dilimine göre çalıştırılmasını sağlamak için işlev uygulamanız için WEBSITE_TIME_ZONE adlı bir uygulama ayarı oluşturun. Daha fazla bilgi edinmek için bkz. NCRONTAB saat dilimleri.

settings.job başvurusu

Aşağıdaki ayarlar Web İşleri tarafından desteklenir:

Ayar Tür Açıklama
is_in_place Tümü Web İşinin ilk olarak geçici bir klasöre kopyalanmadan yerinde çalışmasına izin verir. Daha fazla bilgi için bkz. Web İşi çalışma dizini.
is_singleton Sürekli Ölçeği genişletildiğinde Web İşini yalnızca tek bir örnekte çalıştırın. Daha fazla bilgi için bkz . Sürekli işi tekil olarak ayarlama.
schedule Tetik -lenen Web İşi'ni CRON tabanlı bir zamanlamaya göre çalıştırın. Daha fazla bilgi için bkz . NCRONTAB ifadeleri.
stopping_wait_time Tümü Kapatma davranışının denetlenmesini sağlar. Daha fazla bilgi için bkz . Düzgün kapatma.

Sürekli yürütme

Azure'da Always On'u etkinleştirirseniz, Web İşini sürekli çalışacak şekilde değiştirmek için Visual Studio'yu kullanabilirsiniz:

  1. Henüz yapmadıysanız projeyi Azure'da yayımlayın.

  2. Çözüm Gezgini'nde projeye sağ tıklayın ve Yayımla'yı seçin.

  3. Ayarlar bölümünde Tüm ayarları göster'i seçin.

  4. Profil ayarları iletişim kutusunda Web İşi Türü için Sürekli'yi ve ardından Kaydet'i seçin.

    Web İşi için Yayımlama Ayarları iletişim kutusu

  5. Web İşini güncelleştirilmiş ayarlarla yeniden yayımlamak için Yayımla sekmesinde Yayımla'yı seçin.

Sonraki adımlar