Azure İşlevleri çalışma zamanı sürümlerine genel bakış

Azure İşlevleri şu anda çalışma zamanı ana bilgisayarının üç sürümünü destekler: 3.x, 2.x ve 1.x. Üç sürüm de üretim senaryolarında de desteklemektedir.

Önemli

Sürüm 1.x bakım modundadır ve yalnızca Azure portal, Azure Stack Hub portalda veya yerel olarak Windows destekler. Geliştirmeler yalnızca sonraki sürümlerde sağlanır.

Bu makalede, çeşitli sürümler arasındaki bazı farklar, her sürümü oluşturma ve sürümleri değiştirme hakkında ayrıntılı bilgi ve bilgiler yer alanmıştır.

Diller

Sürüm 2.x'den başlayarak, çalışma zamanı bir dil genişletilebilirliği modeli kullanır ve işlev uygulamasındaki tüm işlevlerin aynı dili paylaşması gerekir. Bir işlev uygulamasındaki işlevlerin dili, uygulama oluşturulurken seçilir ve İşlevLER ÇALINAN ÇALINMA _ _ ZAMANI ayarında korunur.

Aşağıdaki tabloda, her çalışma zamanı sürümünde şu anda hangi programlama dillerin desteklen olduğu gösterir.

Dil 1.x 2.x 3.x
C#1 GA (.NET Framework 4.8) GA (.NET Core 2.12) GA (.NET Core 3.1)
GA (.NET 5.0)
JavaScript GA (Düğüm 6) GA (Düğüm 10 & 8) GA (Düğüm 14, 12, & 10)
F# GA (.NET Framework 4.8) GA (.NET Core 2.12) GA (.NET Core 3.1)
Java Yok GA (Java 8) GA (Java 11 & 8)
PowerShell Yok GA (PowerShell Core 6) GA (PowerShell 7 & Core 6)
Python Yok GA (Python 3.7 & 3.6) GA (Python 3.8, 3.7, & 3.6)
Önizleme (Python 3.9)
TypeScript Yok GA3 GA3

1 .NET 6.0 önizlemesini Azure İşlevleri deneysel bir sürümü mevcuttur. Daha fazla bilgi edinmek için Azure İşlevleri v4 erken önizleme sayfasına bakın. Çalışma zamanı sürüm 2.x'i hedef alan 2 .NET sınıf kitaplığı uygulamaları.NET Core 3.1'de .NET Core 2.x uyumluluk modunda çalışır. Daha fazla bilgi edinmek için bkz. İşlevler v2.x ile ilgili dikkat edilmesi gerekenler.
3 JavaScript'e geçiş ile desteklenen.

Desteklenen dil sürümleri hakkında daha fazla bilgi için dile özgü geliştirici kılavuzu makalesine bakın.
Dil desteğinde planlı değişiklikler hakkında bilgi için bkz. Azure yol haritası.

Belirli bir sürümde çalıştırma

Varsayılan olarak, Azure portal ve Azure CLI tarafından oluşturulan işlev uygulamaları sürüm 3.x olarak ayarlanır. Bu sürümü gereken şekilde değiştirebilirsiniz. Çalışma zamanı sürümünü yalnızca işlev uygulamanızı oluşturduk sonra ancak işlev eklemeden önce 1.x sürümüne düşürebilirsiniz. Mevcut işlevlere sahip uygulamalarla bile 2.x ile 3.x arasında geçişe izin verilir. Mevcut işlevlere sahip bir uygulamayı 2.x'den 3.x'e taşımadan önce, 2.x ile 3.xarasındaki tüm yeni değişikliklere dikkat edin.

Çalışma zamanının ana sürümünde değişiklik yapmadan önce, en son ana sürümde çalışan başka bir işlev uygulamasına dağıtarak mevcut kodunuzu test edin. Bu test, yükseltmeden sonra doğru şekilde çalıştırılaya yardımcı olur.

v3.x'den v2.x'e düşürmeler desteklenmiyor. Mümkün olduğunda, uygulamalarınızı her zaman İşlevler çalışma zamanının desteklenen en son sürümünde çalıştırabilirsiniz.

Azure'da uygulamaların sürümünü değiştirme

Azure'da yayımlanan uygulamalar tarafından kullanılan İşlevler çalışma zamanının sürümü, uygulama FUNCTIONS_EXTENSION_VERSION ayarına göre dikte eder. Aşağıdaki ana çalışma zamanı sürüm değerleri de destekler:

Değer Çalışma zamanı hedefi
~3 3.x
~2 2.x
~1 1.x

Önemli

bu ayarı rastgele olarak değiştirme, çünkü işlev kodunda başka uygulama ayarı değişiklikleri ve değişiklikleri gerekebilir.

Daha fazla bilgi için bkz. Çalışma zamanı Azure İşlevleri hedefle.

Belirli bir ikincil sürüme sabitleme

İşlev uygulamanın en son ana sürümde çalışmasıyla ilgili sorunları çözmek için, uygulamanızı belirli bir ikincil sürüme sabitlemeniz gerekir. Bu, en son ana sürümde uygulamanın doğru şekilde çalıştırılana kadar zaman verir. İkincil bir sürüme sabitleme yolunuz, linux ile Windows farklılık gösterir. Daha fazla bilgi için bkz. Çalışma zamanı Azure İşlevleri hedefle.

Eski ikincil sürümler düzenli aralıklarla İşlevler'den kaldırılır. Belirli eski ikincil sürümlerin Azure İşlevleri dahil olmak üzere yayın sürümleriyle ilgili en son haberler için, Azure App Service duyurularını izleyebilirsiniz.

~2.0 sürümüne sabitleme

Sürüm 2.x ( ) üzerinde çalışan .NET işlev uygulamaları, .NET Core 3'ün uzun süreli bir destek sürümü olan ~2 .NET Core 3.1'de çalıştırilecek şekilde otomatik olarak yükseltilir. .NET işlevlerinizi .NET Core 3.1'de çalıştırmanız, en son güvenlik güncelleştirmelerinden ve ürün geliştirmelerinden yararlanmanıza olanak sağlar.

sabitlenmiş herhangi bir işlev uygulaması artık güvenlik ve diğer güncelleştirmeleri alan ~2.0 .NET Core 2.2'de çalıştırmaya devam eder. Daha fazla bilgi edinmek için bkz. İşlevler v2.x ile ilgili dikkat edilmesi gerekenler.

2.x'den 3.x'e

Azure İşlevleri 3.x sürümü, sürüm 2.x ile son derece geriye dönük olarak uyumludur. Birçok uygulama, kod değişikliği yapmadan güvenli bir şekilde 3.x sürümüne yükseltilebilmektedir. 3.x sürümüne taşımanız teşvik ederken üretim uygulamalarına ana sürümü değiştirmeden önce kapsamlı testler çalıştırmayı da göz önünde bulundurabilirsiniz.

2.x ile 3.x arasındaki yeni değişiklikler

Aşağıda, bir 2.x uygulamasını 3.x sürümüne yükseltmeden önce dikkat etmek için dikkat etmek gereken değişiklikler ve bilgiler ve ardından yer alan bilgiler ve bilgiler yer alan bilgilerdir.

JavaScript

  • aracılığıyla atanan veya dönüş context.done değerlerine sahip çıkış bağlamaları artık içinde ayarıyla aynı şekilde context.bindings davranır.

  • Zamanlayıcı tetikleyici nesnesi, PascalCase yerine camelCase

  • olay hub'ı tarafından dataType tetiklenen ve ikili ile tetiklenen işlevler yerine bir binary dizisi string alır.

  • HTTP istek yüküne artık üzerinden context.bindingData.req erişilemez. Yine de içinde bir giriş parametresi olarak ve context.req olarak context.bindings erişilebilir.

  • Node.js 8 artık desteklenmiyor ve 3.x işlevlerinde yürütülmez.

.NET Core

.NET sınıf kitaplığı işlevlerini çalıştırma sürümleri arasındaki temel farklar .NET Core çalışma zamanıdır. İşlevlerin 2.x sürümü .NET Core 2.2'de ve sürüm 3.x'in .NET Core 3.1'de çalıştıracak şekilde tasarlanmıştır.

Not

.NET Core 2.2'de destek sorunları nedeniyle sürüm 2'ye sabitlenen işlev uygulamaları ( ~2 ) temelde .NET Core 3.1 üzerinde çalışıyor. Daha fazla bilgi için bkz. İşlevler v2.x uyumluluk modu.

1.x'den sonraki sürümlere geçildi

Daha yeni bir sürüm kullanmak için 1.x çalışma zamanı sürümünü kullanmak üzere yazılmış mevcut bir uygulamayı geçirmeyi seçebilirsiniz. Yapmak için gereken değişikliklerin çoğu, 4.8 ile .NET Core arasındaki C# API değişiklikleri gibi dil çalışma zamanı değişiklikleriyle .NET Framework ilgili. Ayrıca kodunuzun ve kitaplıkların seçtiğiniz dil çalışma zamanıyla uyumlu olduğundan da emin olun. Son olarak, aşağıda vurgulanan tetikleyici, bağlama ve özelliklerde yapılan değişiklikleri not edin. En iyi geçiş sonuçları için yeni bir sürümde yeni bir işlev uygulaması oluşturmanız ve mevcut sürüm 1.x işlev kodunuzu yeni uygulamaya taşımanız gerekir.

Uygulama yapılandırmasını el ile güncelleştirerek "yerinde" yükseltme yapmak mümkünken, 1.x sürümünden daha yüksek bir sürüme kadar bazı yeni değişiklikler de vardır. Örneğin, C# içinde hata ayıklama nesnesi olarak TraceWriter ILogger değiştirilir. Yeni bir sürüm 3.x projesi oluşturarak, en son sürüm 3.x şablonlarına göre güncelleştirilmiş işlevlerle başlarsınız.

Sürüm 1.x'den sonra tetikleyicilerde ve bağlamalarda yapılan değişiklikler

Sürüm 2.x'den başlayarak, uygulamanıza işlevler tarafından kullanılan belirli tetikleyiciler ve bağlamalar için uzantıları yüklemeniz gerekir. Bu HTTP ve zamanlayıcı tetikleyicileri için uzantı gerektirmeyen tek özel durum. Daha fazla bilgi için bkz. Bağlama uzantılarını kaydetme ve yükleme.

Ayrıca, işlevde sürümler function.js öznitelikleri üzerinde birkaç değişiklik de vardır. Örneğin, Olay Hub'ı path özelliği artık eventHubName olur. Her bağlamaya ilişkin belgelerin bağlantıları için mevcut bağlama tablosuna bakın.

Sürüm 1.x'den sonra özellik ve işlevsellik değişiklikleri

Sürüm 1.x sonrasında birkaç özellik kaldırıldı, güncelleştirildi veya değiştirildi. Bu bölümde, sürüm 1.x'i kullandıktan sonra sonraki sürümlerde gördüğünüz değişiklikler ayrıntılı olarak açık bir şekilde açık bir şekilde ve hatta daha sonra kullanılmaktadır.

Sürüm 2.x'te aşağıdaki değişiklikler yapıldı:

  • HTTP uç noktalarını çağırma anahtarları her zaman Azure Blob depolama alanında şifrelenmiş olarak depolanır. Sürüm 1.x'te anahtarlar varsayılan olarak Azure Dosyalar depolanıyor. Bir uygulamayı sürüm 1.x'den sürüm 2.x'e yükseltirken, Azure Dosyalar gizli diziler sıfırlanır.

  • Sürüm 2.x çalışma zamanı, web kancası sağlayıcıları için yerleşik destek içermemektedir. Bu değişiklik performansı artırmak için yapıldı. Http tetikleyicilerini web kancaları için uç nokta olarak kullanmaya devam edin.

  • Konak yapılandırma dosyası (host.js) boş olmalı veya dizesine sahip "version": "2.0" olmalıdır.

  • İzlemeyi geliştirmek için portalda ayarı kullanan WebJobs panosu, ayarı kullanan AzureWebJobsDashboard Azure Application Analizler ile APPINSIGHTS_INSTRUMENTATIONKEY değiştirilir. Daha fazla bilgi için bkz. Azure İşlevleri.

  • Bir işlev uygulamasındaki tüm işlevler aynı dili paylaştırmalı. Bir işlev uygulaması oluşturdukta, uygulama için bir çalışma zamanı yığını seçmeniz gerekir. Çalışma zamanı yığını, uygulama FUNCTIONS_WORKER_RUNTIME ayarlarındaki değer tarafından belirtilir. Bu gereksinim, ayak izini ve başlangıç süresini geliştirmek için eklenmiştir. Yerel olarak geliştirmede, bu ayarı dosyasındakilocal.settings.jsde dahil etmek gerekir.

  • Bir App Service planında işlevler için varsayılan zaman aşımı 30 dakika olarak değiştirilir. host.jsüzerindeki functiontimeout ayarını kullanarak, zaman aşımını tekrar sınırsız olarak değiştirebilirsiniz.

  • HTTP eşzamanlılık kısıtlılığı, örnek başına 100 eşzamanlı istek içeren tüketim planı işlevleri için varsayılan olarak uygulanır. Bunu maxConcurrentRequests dosyadaki host.jsayarda değiştirebilirsiniz.

  • .NET Core sınırlamalarınedeniyle F # Script (. FSX) işlevleri için destek kaldırılmıştır. Derlenen F # işlevleri (. FS) hala desteklenmektedir.

  • Event Grid tetikleyicisi Web kancalarının URL biçimi olarak değiştirildi https://{app}/runtime/webhooks/{triggerName} .

Yerel olarak geliştirilen uygulama sürümleri

Hedeflenen sürümleri yerel olarak değiştirmek için uygulama işlevleri işlevine aşağıdaki güncelleştirmeleri yapabilirsiniz.

Visual Studio çalışma zamanı sürümleri

Visual Studio, bir proje oluştururken çalışma zamanı sürümünü seçersiniz. Visual Studio için Azure işlevleri araçları, üç ana çalışma zamanı sürümünü destekler. Hata ayıklama sırasında ve proje ayarlarına bağlı olarak yayımlandığında doğru sürüm kullanılır. Sürüm ayarları, .csproj dosyasında aşağıdaki özelliklerde tanımlanmıştır:

Sürüm 3. x
<TargetFramework>netcoreapp3.1</TargetFramework>
<AzureFunctionsVersion>v3</AzureFunctionsVersion>

Not

Azure Işlevleri 3. x ve .NET, Microsoft.NET.Sdk.Functions uzantının en az olmasını gerektirir 3.0.0 .

Sürüm 2. x
<TargetFramework>netcoreapp2.1</TargetFramework>
<AzureFunctionsVersion>v2</AzureFunctionsVersion>
Sürüm 1. x
<TargetFramework>net472</TargetFramework>
<AzureFunctionsVersion>v1</AzureFunctionsVersion>
2. x uygulamalarını Visual Studio 'de 3. x 'e güncelleştirme
  1. x hedefleme var olan bir işlevi açabilir ve .csproj dosyayı düzenleyerek ve yukarıdaki değerleri güncelleştirerek 3. x ' e geçebilirsiniz. Visual Studio, çalışma zamanı sürümlerini proje meta verilerine göre sizin için otomatik olarak yönetir. ancak, Visual Studio önce, makinenizde 3. x için şablonlar ve çalışma zamanına sahip olmayan bir 3. x uygulaması oluşturmadıysanız mümkün olur. Bu, "projede belirtilen sürümle eşleşen Işlevler çalışma zamanı yok" gibi bir hatayla kendi kendine sunabilir. En son şablonları ve çalışma zamanını getirmek için yeni bir işlev projesi oluşturma deneyiminden yararlanın. sürüm ve şablon seç ekran ' e geldiğinizde, en son şablonları getirme Visual Studio tamamlanmasını bekleyin. En son .NET Core 3 şablonları kullanılabilir ve görüntülendikten sonra, sürüm 3. x için yapılandırılmış herhangi bir projeyi çalıştırabilir ve hata ayıklaması yapabilirsiniz.

Önemli

sürüm 3. x işlevleri yalnızca Visual Studio 16,4 veya daha yeni bir sürümü kullanılırken Visual Studio geliştirilebilir.

VS Code ve Azure Functions Core Tools

Azure Functions Core Tools , komut satırı geliştirme ve ayrıca Visual Studio Code Için Azure işlevleri uzantısı tarafından kullanılır. Sürüm 3. x ' e karşı geliştirmek için çekirdek araçların 3. x sürümünü yükler. Sürüm 2. x geliştirme temel araçların sürüm 2. x 'i gerektirir ve bu şekilde devam eder. Daha fazla bilgi için bkz. Azure Functions Core Tools yüklemesi.

Visual Studio Code geliştirmek için, için kullanıcı ayarını, azureFunctions.projectRuntime yüklü araçların sürümüyle eşleşecek şekilde güncelleştirmeniz de gerekebilir. Bu ayar, işlev uygulaması oluşturma sırasında kullanılan şablonları ve dilleri de güncelleştirir. ' De uygulama oluşturmak için ~3 azureFunctions.projectRuntime Kullanıcı ayarını olarak güncelleştirebilirsiniz ~3 .

Azure Işlevleri uzantısı çalışma zamanı ayarı

Maven ve Java uygulamaları

Yerel olarak çalıştırmak için gereken çekirdek araçların 3. x sürümünü yükleyerek , Java uygulamalarını 2. x sürümünden 3. x ' e geçirebilirsiniz. Uygulamanızın, sürüm 3. x üzerinde yerel olarak çalışır şekilde çalıştığını doğruladıktan sonra, POM.xml FUNCTIONS_EXTENSION_VERSION ~3 Aşağıdaki örnekte olduğu gibi, ayarını olarak değiştirmek için uygulamanın dosyasını güncelleştirin:

<configuration>
    <resourceGroup>${functionResourceGroup}</resourceGroup>
    <appName>${functionAppName}</appName>
    <region>${functionAppRegion}</region>
    <appSettings>
        <property>
            <name>WEBSITE_RUN_FROM_PACKAGE</name>
            <value>1</value>
        </property>
        <property>
            <name>FUNCTIONS_EXTENSION_VERSION</name>
            <value>~3</value>
        </property>
    </appSettings>
</configuration>

Bağlamalar

Çalışma zamanı, sürüm 2. x ile başlayarak bu avantajları sunan yeni bir bağlama genişletilebilirlik modeli kullanır:

  • Üçüncü taraf bağlama uzantıları için destek.

  • Çalışma zamanının ve bağlamaların ayrılması. Bu değişiklik, bağlama uzantılarının bağımsız olarak yayınlanabilmesini ve serbest bırakılacağını sağlar. Örneğin, temel bir SDK 'nın daha yeni bir sürümüne bağımlı olan bir uzantının sürümüne yükseltmeyi tercih edebilirsiniz.

  • Yalnızca kullanımdaki bağlamaların bilinen ve çalışma zamanı tarafından yüklendiği, daha hafif bir yürütme ortamıdır.

HTTP ve Zamanlayıcı Tetikleyicileri hariç olmak üzere tüm bağlamalar, işlev uygulaması projesine açıkça eklenmelidir veya portalda kayıtlı olmalıdır. Daha fazla bilgi için bkz. bağlama uzantılarını kaydetme.

Aşağıdaki tabloda, her çalışma zamanı sürümünde hangi bağlamaların desteklendiği gösterilmektedir.

Bu tabloda, Azure Işlevleri çalışma zamanının ana sürümlerinde desteklenen bağlamalar gösterilmektedir:

Tür 'in 2. x ve üzeri1 Tetikleyici Girdi Çıktı
Blob depolama
Azure Cosmos DB
Davpr3
Event Grid
Event Hubs
HTTP & Web kancaları
IoT Hub’ı
Kafka2
Mobile Apps
Notification Hubs
Kuyruk depolama
Çbbitmq2
SendGrid
Service Bus
SignalR
Tablo depolama
Zamanlayıcı
Twilio

1 sürüm 2. x çalışma zamanı ile başlayarak, http ve Zamanlayıcı hariç tüm bağlamaların kayıtlı olması gerekir. Bkz. bağlama uzantılarını kaydetme.

2 tetikleyici tüketim planında desteklenmez. Çalışma zamanına dayalı Tetikleyicilergerektirir.

3 yalnızca Kubernetes, IoT Edge ve yalnızca diğer şirket içinde barındırılan modlarda desteklenir.

İşlev uygulaması zaman aşımı süresi

Bir işlev uygulamasının zaman aşımı süresi, proje functionTimeout dosyasındakihost.js tarafından tanımlanır. Aşağıdaki tabloda hem planlar hem de farklı çalışma zamanı sürümleri için dakikalar içinde varsayılan ve maksimum değerler yer alır:

Planlama Çalışma Zamanı Sürümü Varsayılan Maksimum
Tüketim 1.x 5 10
Tüketim 2.x 5 10
Tüketim 3.x 5 10
Premium 1.x Sınırsız Sınırsız
Premium 2.x 30 Sınırsız
Premium 3.x 30 Sınırsız
App Service 1.x Sınırsız Sınırsız
App Service 2.x 30 Sınırsız
App Service 3.x 30 Sınırsız

Not

İşlev uygulaması zaman aşımı ayarından bağımsız olarak 230 saniye, HTTP ile tetiklenen bir işlevin i isteği yanıtlamak için sahip olduğu en uzun süredir. Bunun nedeni, varsayılan boşta kalma zaman aşımının Azure Load Balancer. Daha uzun işlem süreleri için, zaman uyumsuz Dayanıklı İşlevler kullanmayı veya gerçek işi erteleyerek anında yanıtını dönmesini göz önünde bulundurarak.

Sonraki adımlar

Daha fazla bilgi için aşağıdaki kaynaklara bakın: