Öğretici: Olay odaklı arka plan işleme için Azure Web İşleri SDK'sını kullanmaya başlama
Web uygulamalarınızın arka plan görevlerini, zamanlanmış görevleri çalıştırmasını ve olaylara yanıt vermesini sağlamak üzere Azure App Service için Azure Web İşleri SDK'sını kullanmaya başlayın.
Visual Studio 2022'yi kullanarak Azure Depolama Kuyruğu iletilerine yanıt vermek için Web İşleri SDK'sını kullanan bir .NET Core konsol uygulaması oluşturun, projeyi yerel olarak çalıştırın ve son olarak Azure'a dağıtın.
Bu öğreticide şunların nasıl yapıldığını öğrenirsiniz:
- Konsol uygulaması oluşturma
- İşlev ekleme
- Yerel olarak test edin
- Azure’a dağıtın
- Application Insights günlüğünü etkinleştirme
- Giriş/çıkış bağlamaları ekleme
Önkoşullar
Azure geliştirme iş yüküyle Visual Studio 2022. Visual Studio 2022'yi yükleyin.
Etkin aboneliği olan bir Azure hesabı. Ücretsiz bir hesap oluşturun.
Konsol uygulaması oluşturma
Bu bölümde, Visual Studio 2022'de bir proje oluşturarak başlayacaksınız. Ardından Azure geliştirme, kod yayımlama ve tetikleyicileri ve çağrı işlevlerini dinleyen işlevler için araçlar ekleyeceksiniz. Son olarak, eski bir izleme aracını devre dışı bırakabilen ve varsayılan filtrelemeye sahip bir konsol sağlayıcısını etkinleştiren konsol günlüğünü ayarlayacaksınız.
Not
Bu makaledeki yordamlar, .NET 6.0 üzerinde çalışan bir .NET Core konsol uygulaması oluşturmak için doğrulanmıştır.
Proje oluşturma
Visual Studio'da Dosya>Yeni Proje'yi> seçin.
Yeni proje oluştur'un altında Konsol Uygulaması (C#) öğesini ve ardından İleri'yi seçin.
Yeni projenizi yapılandırın altında projeyi WebjobsSDKSample olarak adlandırın ve İleri'yi seçin.
Hedef çerçevenizi seçin ve Oluştur'u seçin. Bu öğretici .NET 6.0 kullanılarak doğrulanmıştır.
Webjobs NuGet paketlerini yükleme
En son Web İşleri NuGet paketini yükleyin. Bu paket, işlev kodunuzu Azure App Service'de Webjobs'ta yayımlamanıza olanak tanıyan Microsoft.Azure.WebJobs'ı (Web İşleri SDK' sı) içerir.
Microsoft.Azure.WebJobs.Extensions NuGet paketinin en son kararlı 4.x sürümünü edinin.
Visual Studio'da Araçlar>NuGet Paket Yöneticisi'ne gidin.
Paket Yöneticisi Konsolu'nu seçin. NuGet cmdlet'lerinin listesini, belgelerin bağlantısını ve giriş
PM>
noktasını görürsünüz.Aşağıdaki komutta değerini 1. adımda bulduğunuz geçerli sürüm numarasıyla değiştirin
<4_X_VERSION>
.Install-Package Microsoft.Azure.WebJobs.Extensions -version <4_X_VERSION>
Paket Yöneticisi Konsolu'nda komutunu yürütür. Uzantı listesi görüntülenir ve otomatik olarak yüklenir.
Konağı Oluşturma
Konak, tetikleyicileri dinleyen ve işlevleri çağıran işlevler için çalışma zamanı kapsayıcısıdır. Aşağıdaki adımlar, ASP.NET Core'de Genel Ana Bilgisayar olan uygulamasını uygulayan IHost
bir konak oluşturur.
Program.cs sekmesini seçin, var olan içeriği kaldırın ve şu
using
deyimleri ekleyin:using System.Threading.Tasks; using Microsoft.Extensions.Hosting;
Ayrıca Program.cs'nin altına aşağıdaki kodu ekleyin:
namespace WebJobsSDKSample { class Program { static async Task Main() { var builder = new HostBuilder(); builder.ConfigureWebJobs(b => { b.AddAzureStorageCoreServices(); }); var host = builder.Build(); using (host) { await host.RunAsync(); } } } }
ASP.NET Core'da konak yapılandırmaları örnekteki yöntemler çağrılarak HostBuilder
ayarlanır. Daha fazla bilgi için bkz. .NET Genel Ana Bilgisayarı.
ConfigureWebJobs
Uzantı yöntemi Web İşleri konağını başlatır. içinde ConfigureWebJobs
, Depolama bağlama uzantısı gibi belirli bağlama uzantılarını başlatın ve bu uzantıların özelliklerini ayarlayın.
Konsol günlüğünü etkinleştirme
ASP.NET Core günlük çerçevesini kullanan konsol günlüğünü ayarlayın. Microsoft.Extensions.Logging adlı bu çerçeve, çeşitli yerleşik ve üçüncü taraf günlük sağlayıcılarıyla çalışan bir API içerir.
NuGet paketinin
Microsoft.Extensions.Logging.Console
Microsoft.Extensions.Logging
içeren en son kararlı sürümünü alın.Aşağıdaki komutta değerini 1. adımda bulduğunuz geçerli sürüm numarasıyla değiştirin
<6_X_VERSION>
. Her NuGet Paketi türünün benzersiz bir sürüm numarası vardır.Install-Package Microsoft.Extensions.Logging.Console -version <6_X_VERSION>
Paket Yöneticisi Konsolu'nda geçerli sürüm numarasını doldurun ve komutunu yürütür. Uzantı listesi görüntülenir ve otomatik olarak yüklenir.
Program.cs sekmesinin altına şu
using
deyimi ekleyin:using Microsoft.Extensions.Logging;
Program.cs altında devam ederek komutunun
ConfigureLogging
önüneBuild
yönteminiHostBuilder
ekleyin. yöntemi yapılandırmayaAddConsole
konsol günlüğü ekler.builder.ConfigureLogging((context, b) => { b.AddConsole(); });
Main
yöntemi şimdi şöyle görünür:static async Task Main() { var builder = new HostBuilder(); builder.ConfigureWebJobs(b => { b.AddAzureStorageCoreServices(); }); builder.ConfigureLogging((context, b) => { b.AddConsole(); }); var host = builder.Build(); using (host) { await host.RunAsync(); } }
Bu ekleme şu değişiklikleri yapar:
- Pano günlüğünü devre dışı bırakır. Pano eski bir izleme aracıdır ve yüksek aktarım hızına sahip üretim senaryoları için pano günlüğü önerilmez.
- Varsayılan filtreleme ile konsol sağlayıcısını ekler.
Artık Azure Depolama kuyruğuna gelen iletiler tarafından tetiklenen bir işlev ekleyebilirsiniz.
İşlev ekleme
İşlev, bir zamanlamaya göre çalışan, olaylara göre tetiklenen veya isteğe bağlı olarak çalıştırılacak kod birimidir. Tetikleyici bir hizmet olayını dinler. Web İşleri SDK'sı bağlamında tetiklenen dağıtım moduna başvurmaz. SDK kullanılarak oluşturulan olay temelli veya zamanlanmış Web İşleri her zaman "Always on" etkin sürekli Web İşleri olarak dağıtılmalıdır.
Bu bölümde, Azure Depolama kuyruğundaki iletiler tarafından tetiklenen bir işlev oluşturacaksınız. İlk olarak, Azure Depolama'ya bağlanmak için bir bağlama uzantısı eklemeniz gerekir.
Depolama bağlama uzantısını yükleme
Web İşleri SDK'sının 3. sürümünden başlayarak Azure Depolama hizmetlerine bağlanmak için ayrı bir Depolama bağlama uzantısı paketi yüklemeniz gerekir.
Not
5.x sürümünden başlayarak, Microsoft.Azure.WebJobs.Extensions.Storage depolama hizmetine göre bölünmüştür ve uzantı yöntemini hizmet türüne AddAzureStorage()
göre geçirmiştir.
Microsoft.Azure.WebJobs.Extensions.Storage NuGet paketinin en son kararlı sürümünü, sürüm 5.x'i edinin.
Aşağıdaki komutta değerini 1. adımda bulduğunuz geçerli sürüm numarasıyla değiştirin
<5_X_VERSION>
. Her NuGet Paketi türünün benzersiz bir sürüm numarası vardır.Install-Package Microsoft.Azure.WebJobs.Extensions.Storage -Version <5_X_VERSION>
Paket Yöneticisi Konsolu'nda, giriş noktasında geçerli sürüm numarasıyla komutunu yürütür
PM>
.Program.cs dosyasında devam ederek, uzantı yönteminde
ConfigureWebJobs
, Depolama uzantısınıAddAzureStorageQueues
başlatmak için örneğineHostBuilder
(komutundanBuild
önce) yöntemini ekleyin. Bu noktadaConfigureWebJobs
yöntemi şu şekilde görünür:builder.ConfigureWebJobs(b => { b.AddAzureStorageCoreServices(); b.AddAzureStorageQueues(); });
örneği eklendikten sonra yöntemine
Main
builder
aşağıdaki kodu ekleyin:builder.UseEnvironment(EnvironmentName.Development);
Geliştirme modunda çalıştırmak, kuyruk yoklama üstel geri çekilmesini azaltır ve bu da çalışma zamanının iletiyi bulması ve işlevi çağırması için gereken süreyi önemli ölçüde geciktirebilir. Geliştirme ve test işlemini tamamladığınızda bu kod satırını kaldırmanız veya
Production
geçiş yapmanız gerekir.Yöntemi
Main
şimdi aşağıdaki örnekteki gibi görünmelidir:static async Task Main() { var builder = new HostBuilder(); builder.UseEnvironment(EnvironmentName.Development); builder.ConfigureLogging((context, b) => { b.AddConsole(); }); builder.ConfigureWebJobs(b => { b.AddAzureStorageCoreServices(); b.AddAzureStorageQueues(); }); var host = builder.Build(); using (host) { await host.RunAsync(); } }
Kuyruk ile tetiklenen işlev oluşturma
özniteliği, QueueTrigger
adlı queue
bir Azure Depolama kuyruğuna yeni bir ileti yazıldığında çalışma zamanına bu işlevi çağırmasını söyler. Kuyruk iletisinin içeriği parametresindeki yöntem koduna message
sağlanır. Yöntemin gövdesi, tetikleyici verilerini işlediğiniz yerdir. Bu örnekte kod yalnızca iletiyi günlüğe kaydeder.
Çözüm Gezgini'da projeye sağ tıklayın,Yeni ÖğeEkle'yi> ve ardından Sınıf'ı seçin.
Yeni C# sınıf dosyasını Functions.cs olarak adlandırın ve Ekle'yi seçin.
Functions.cs dosyasında, oluşturulan şablonu aşağıdaki kodla değiştirin:
using Microsoft.Azure.WebJobs; using Microsoft.Extensions.Logging; namespace WebJobsSDKSample { public class Functions { public static void ProcessQueueMessage([QueueTrigger("queue")] string message, ILogger logger) { logger.LogInformation(message); } } }
Çalışma zamanının yöntemine erişmesi ve yöntemi yürütmesi için İşlevler sınıfını olarak
public static
işaretlemeniz gerekir. Yukarıdaki kod örneğinde adlı kuyruğaqueue
bir ileti eklendiğinde işlev yürütülür vemessage
dize günlüklere yazılır. İzlenen kuyruk, sonraki adımda oluşturacağınız varsayılan Azure Depolama hesabındadır.
parametresinin message
bir dize olması gerekmez. Ayrıca bir JSON nesnesine, bayt dizisine veya CloudQueueMessage nesnesine de bağlanabilirsiniz.
Bkz. Kuyruk tetikleyicisi kullanımı. Her bağlama türünün (kuyruklar, bloblar veya tablolar gibi) bağlanabileceğiniz farklı bir parametre türü kümesi vardır.
Azure depolama hesabı oluşturma
Yerel olarak çalışan Azure Depolama Öykünücüsü, Web İşleri SDK'sının ihtiyaç duyduğu tüm özelliklere sahip değildir. Azure'da bir depolama hesabı oluşturacak ve projeyi bunu kullanacak şekilde yapılandıracaksınız.
Genel amaçlı v2 depolama hesabı oluşturmayı öğrenmek için bkz. Azure Depolama hesabı oluşturma.
Bağlantı dizenizi bulma ve kopyalama
Depolamayı yapılandırmak için bir bağlantı dizesi gerekir. Sonraki adımlar için bu bağlantı dizesini saklayın.
Azure portal depolama hesabınıza gidin ve Ayarlar'ı seçin.
Ayarlar'daErişim anahtarları'nı seçin.
key1 altındaki Bağlantı dizesi için Panoya kopyala simgesini seçin.
Depolamayı yerel olarak çalışacak şekilde yapılandırma
Web İşleri SDK'sı, Azure'daki Uygulama Ayarları'nda depolama bağlantı dizesini arar. Yerel olarak çalıştırdığınızda, yerel yapılandırma dosyasında veya ortam değişkenlerinde bu değeri arar.
Projeye sağ tıklayın,Yeni ÖğeEkle'yi> seçin, JavaScript JSON yapılandırma dosyası'nı seçin, yeni dosyaya appsettings.json dosyasını adlandırın ve Ekle'yi seçin.
Yeni dosyada, aşağıdaki örnekte olduğu gibi bir
AzureWebJobsStorage
alan ekleyin:{ "AzureWebJobsStorage": "{storage connection string}" }
{storage connection string} değerini daha önce kopyaladığınız bağlantı dizesiyle değiştirin.
Çözüm Gezgini'de appsettings.json dosyasını seçin ve Özellikler penceresinde Çıkış Dizinine Kopyala eylemini Daha yeniyse Kopyala olarak ayarlayın.
Bu dosya bir bağlantı dizesi gizli dizisi içerdiğinden, dosyayı uzak kod deposunda depolamamalısınız. Projenizi Azure'da yayımladıktan sonra, Azure App Service'de uygulamanıza aynı bağlantı dizesi uygulama ayarını ekleyebilirsiniz.
Yerel olarak test edin
Projeyi yerel olarak derleyip çalıştırın ve işlevi tetikleyen bir ileti kuyruğu oluşturun.
Azure portal depolama hesabınıza gidin ve Kuyruklar sekmesini (1) seçin. + Kuyruk (2) öğesini seçin ve Kuyruk adı (3) olarak kuyruk girin. Ardından Tamam (4) öğesini seçin.
Yeni kuyruğa tıklayın ve İleti ekle'yi seçin.
İleti Ekle iletişim kutusunda İleti metni olarak Merhaba Dünya! yazıp Tamam'ı seçin. Artık kuyrukta bir ileti var.
Projeyi çalıştırmak için Ctrl+F5 tuşlarına basın.
Konsol, çalışma zamanının işlevinizi bulduğunu gösterir. işlevinde
ProcessQueueMessage
özniteliğiniQueueTrigger
kullandığınızdan, Web İşleri çalışma zamanı adlıqueue
kuyruktaki iletileri dinler. Bu kuyrukta yeni bir ileti bulduğunda çalışma zamanı, ileti dizesi değerini geçirerek işlevini çağırır.Kuyruk penceresine Geri dön ve yenileyin. yerel olarak çalıştırılan işleviniz tarafından işlendiğinden ileti kayboldu.
Konsol penceresini kapatın.
Şimdi Web İşleri SDK'sı projenizi Azure'da yayımlamanın zamanı geldi.
Azure’a dağıtın
Dağıtım sırasında, işlevlerinizi çalıştıracağınız bir app service örneği oluşturursunuz. Azure'da App Service için bir .NET konsol uygulaması yayımladığınızda, bu uygulama otomatik olarak bir Web İşi olarak çalışır. Yayımlama hakkında daha fazla bilgi edinmek için bkz. Visual Studio kullanarak Web İşleri geliştirme ve dağıtma.
Azure kaynakları oluşturma
Çözüm Gezgini'nde projeye sağ tıklayın ve Yayımla'yı seçin.
Yayımla iletişim kutusunda Hedef için Azure'ı ve ardından İleri'yi seçin.
Belirli bir hedef için Azure Web İşleri'ne ve ardından İleri'ye tıklayın.
App Service örneklerin üst kısmında Yeni Azure Web İşi oluştur seçeneğinin yanındaki artı (+) düğmesini seçin.
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. Bu ayarlarla Azure'da bir Web İşi ve ilgili kaynaklar oluşturmak ve proje kodunuzu dağıtmak için Oluştur'u seçin.
Yayımla sayfasına dönmek için Son'u seçin.
AlwaysOn’u etkinleştirme
Sürekli bir Web İşi için, Web İşlerinizin düzgün çalışması için sitede Her zaman açık ayarını etkinleştirmeniz gerekir. Always On'u etkinleştirmezseniz, çalışma zamanı birkaç dakika etkinlik dışı kaldıktan sonra boşta olur.
Yayımla sayfasında Barındırma profili bölüm eylemlerini göstermek için Barındırma'nın üstündeki üç noktayı seçin ve Azure portal'de aç'ı seçin.
Ayarlar'ın altında Yapılandırma>Genel ayarları'nı seçin, Her zaman açık'ıAçık olarak ayarlayın ve ardından kaydet ve devam et'i seçerek siteyi yeniden başlatın.
Projeyi yayımlama
Azure'da oluşturulan web uygulamasıyla Web İşleri projesini yayımlamanın zamanı geldi.
Barındırma altındaki Yayımla sayfasında düzenle düğmesini seçin, Web İşi Türü'nü
Continuous
olarak değiştirin ve Kaydet'i seçin. Bu, iletiler kuyruğa eklendiğinde Web İşinin çalıştığından emin olur. Tetiklenen Web İşleri genellikle yalnızca el ile yapılan web kancaları için kullanılır.Yayımla sayfasının sağ üst köşesindeki Yayımla düğmesini seçin. İşlem tamamlandığında Web İşleriniz Azure'da çalışır.
Depolama bağlantısı uygulaması ayarı oluşturma
Azure'da appsettings.json yapılandırma dosyanızda yerel olarak kullandığınız depolama bağlantı dizesi ayarını oluşturmanız gerekir. Bu, bağlantı dizesini daha güvenli bir şekilde depolamanıza ve
Profili yayımla sayfanızda Barındırma profili bölüm eylemlerini göstermek için Barındırma'nın üstündeki üç noktayı seçin ve Azure App Service ayarlarını yönet'i seçin.
Uygulama ayarları'nda+ Ayar ekle'yi seçin.
Yeni uygulama ayarı adı alanına yazın
AzureWebJobsStorage
ve Tamam'ı seçin.Uzak'ta yerel ayarınızdan bağlantı dizesini yapıştırın ve Tamam'ı seçin.
Bağlantı dizesi artık Azure'daki uygulamanızda ayarlanır.
Azure'da işlevi tetikleme
Yerel olarak çalışmadığınızdan emin olun. Hala açıksa konsol penceresini kapatın. Aksi takdirde, oluşturduğunuz tüm kuyruk iletilerini ilk işleyen yerel örnek olabilir.
Visual Studio'daki Kuyruk sayfasında, kuyruğa daha önce olduğu gibi bir ileti ekleyin.
Kuyruk sayfasını yenilediğinizde yeni ileti, Azure'da çalışan işlev tarafından işlendiğinden kaybolur.
Application Insights günlüğünü etkinleştirme
Web İşi Azure'da çalıştırıldığında, konsol çıkışını görüntüleyerek işlev yürütmeyi izleyemezsiniz. Web İşinizi izleyebilmek için projenizi yayımlarken ilişkili bir Application Insights örneği oluşturmanız gerekir.
Application Insights örneği oluşturma
Yayımlama profili sayfanızda Barındırma profili bölüm eylemlerini göstermek için Barındırma'nın üstündeki üç noktayı seçin ve Azure Portalda Aç'ı seçin.
Web uygulamasında Ayarlar'ın altında Application Insights'ı ve ardından Application Insights'ı aç'ı seçin.
Örnek ve Konum için oluşturulan Kaynak adını doğrulayın ve Uygula'yı seçin.
Ayarlar'ın altında Yapılandırma'yı seçin ve yeni bir oluşturulduğunu
APPINSIGHTS_INSTRUMENTATIONKEY
doğrulayın. Bu anahtar, Web İşi örneğinizi Application Insights'a bağlamak için kullanılır.
Application Insights günlüğünden yararlanmak için günlük kodunuzu da güncelleştirmeniz gerekir.
Application Insights uzantısını yükleme
Microsoft.Azure.WebJobs.Logging.ApplicationInsights NuGet paketinin 3.x sürümünün en son kararlı sürümünü edinin.
Aşağıdaki komutta değerini 1. adımda bulduğunuz geçerli sürüm numarasıyla değiştirin
<3_X_VERSION>
. Her NuGet Paketi türünün benzersiz bir sürüm numarası vardır.Install-Package Microsoft.Azure.WebJobs.Logging.ApplicationInsights -Version <3_X_VERSION>
Paket Yöneticisi Konsolu'nda, giriş noktasında geçerli sürüm numarasıyla komutunu yürütür
PM>
.
Application Insights günlük sağlayıcısını başlatma
Program.cs dosyasını açın ve çağrısından sonra öğesine ConfigureLogging
aşağıdaki başlatıcıyı AddConsole
ekleyin:
// If the key exists in settings, use it to enable Application Insights.
string instrumentationKey = context.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
if (!string.IsNullOrEmpty(instrumentationKey))
{
b.AddApplicationInsightsWebJobs(o => o.InstrumentationKey = instrumentationKey);
}
Yöntem Main
kodu şimdi aşağıdaki örnekteki gibi görünmelidir:
static async Task Main()
{
var builder = new HostBuilder();
builder.UseEnvironment(EnvironmentName.Development);
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddAzureStorage();
});
builder.ConfigureLogging((context, b) =>
{
b.AddConsole();
// If the key exists in settings, use it to enable Application Insights.
string instrumentationKey = context.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
if (!string.IsNullOrEmpty(instrumentationKey))
{
b.AddApplicationInsightsWebJobs(o => o.InstrumentationKey = instrumentationKey);
}
});
var host = builder.Build();
using (host)
{
await host.RunAsync();
}
}
Bu, Application Insights günlük sağlayıcısını varsayılan filtreleme ile başlatır. Yerel olarak çalışırken, tüm Bilgiler ve üst düzey günlükler hem konsola hem de Application Insights'a yazılır.
Projeyi yeniden yayımlayın ve işlevi yeniden tetikleyin
Çözüm Gezgini'nde projeye sağ tıklayın ve Yayımla'yı seçin.
Daha önce olduğu gibi Azure portal kullanarak daha önce yaptığınız gibi bir kuyruk iletisi oluşturun; ileti metni olarak Hello App Insights! ifadesini girin.
Yayımlama profili sayfanızda Barındırma profili bölüm eylemlerini göstermek için Barındırma'nın üstündeki üç noktayı seçin ve Azure Portalda Aç'ı seçin.
Web uygulamasında Ayarlar'ın altında Application Insights'ı ve ardından Application Insights verilerini görüntüle'yi seçin.
Ara'yı ve ardından Son 24 saat içindeki tüm verileri gör'e tıklayın.
Hello App Insights! iletisini görmüyorsanız Birkaç dakika boyunca düzenli aralıklarla yenile'yi seçin. Application Insights istemcisinin işlediği günlükleri temizlemesi biraz zaman aldığından günlükler hemen görünmez.
Giriş/çıkış bağlamaları ekleme
Bağlamalar, verileri okuyan ve yazan kodu basitleştirir. Giriş bağlamaları, verileri okuyan kodu basitleştirir. Çıkış bağlamaları, veri yazan kodu basitleştirir.
Bağlama ekleme
Giriş bağlamaları, verileri okuyan kodu basitleştirir. Bu örnekte kuyruk iletisi, Azure Depolama'da bir blobu bulmak ve okumak için kullanacağınız blobun adıdır. Ardından, dosyanın bir kopyasını aynı kapsayıcıya yazmak için çıkış bağlamalarını kullanacaksınız.
Functions.cs dosyasına bir
using
ekleyin:using System.IO;
ProcessQueueMessage
yöntemini aşağıdaki kod ile değiştirin:public static void ProcessQueueMessage( [QueueTrigger("queue")] string message, [Blob("container/{queueTrigger}", FileAccess.Read)] Stream myBlob, [Blob("container/copy-{queueTrigger}", FileAccess.Write)] Stream outputBlob, ILogger logger) { logger.LogInformation($"Blob name:{message} \n Size: {myBlob.Length} bytes"); myBlob.CopyTo(outputBlob); }
Bu kodda bir
queueTrigger
bağlama ifadesidir ve bu da çalışma zamanında farklı bir değere çözümlendiği anlamına gelir. Çalışma zamanında, kuyruk iletisinin içeriğine sahiptir.Bu kod, kuyruk iletisi tarafından tanımlanan dosyanın bir kopyasını oluşturmak için çıkış bağlamalarını kullanır. Dosya kopyasına copy- ön eki eklenir.
Program.cs dosyasındaki uzantı yönteminde
ConfigureWebJobs
, Depolama uzantısınıAddAzureStorageBlobs
başlatmak için örnekteki (komutundanBuild
önce) yönteminiHostBuilder
ekleyin. Bu noktadaConfigureWebJobs
yöntemi şöyle görünür:builder.ConfigureWebJobs(b => { b.AddAzureStorageCoreServices(); b.AddAzureStorageQueues(); b.AddAzureStorageBlobs(); });
Depolama hesabınızda bir blob kapsayıcısı oluşturun.
a. Azure portal Veri depolama alanının altındaki Kapsayıcılar sekmesine gidin ve + Kapsayıcı'yı seçin
b. Yeni kapsayıcı iletişim kutusunda kapsayıcı adı olarak kapsayıcı yazın ve Oluştur'u seçin.
Program.cs dosyasını blob kapsayıcısına yükleyin. (Bu dosya burada örnek olarak kullanılır; herhangi bir metin dosyasını karşıya yükleyebilir ve dosyanın adıyla bir kuyruk iletisi oluşturabilirsiniz.)
a. Oluşturduğunuz yeni kapsayıcıyı seçin
b. Karşıya Yükle düğmesini seçin.
c. Program.cs dosyasını bulup seçin ve ardından Tamam'ı seçin.
Projeyi yeniden yayımlama
Çözüm Gezgini'nde projeye sağ tıklayın ve Yayımla'yı seçin.
Yayımla iletişim kutusunda geçerli profilin seçili olduğundan emin olun ve yayımla'yı seçin. Yayımlamanın sonuçları Çıkış penceresinde ayrıntılı olarak gösterilir.
Daha önce oluşturduğunuz kuyrukta, iletinin metni Program.cs olacak şekilde bir kuyruk iletisi oluşturun.
Blob kapsayıcısında copy-Program.cs dosyasının bir kopyası görüntülenir.
Sonraki adımlar
Bu öğreticide Web İşleri SDK 3.x projesi oluşturma, çalıştırma ve dağıtma işlemleri gösterilir.