Aracılığıyla paylaş


Öğretici: Azure İşlevleri ve Mac için Visual Studio kullanmaya başlama

Önemli

Mac için Visual Studio 31 Ağustos 2024'te Microsoft'un Modern Yaşam Döngüsü İlkesi. Mac için Visual Studio ile çalışmaya devam edebilirsiniz ancak Mac'te geliştiriciler için VS Code için yeni C# Dev Kit uzantısının önizleme sürümü gibi birkaç seçenek daha vardır.

Destek zaman çizelgeleri ve alternatifleri hakkında daha fazla bilgi edinin.

Bu laboratuvarda, Mac için Visual Studio kullanarak Azure İşlevleri oluşturmaya nasıl başlayacağınızı öğreneceksiniz. Ayrıca, Azure İşlevleri geliştiricilerin kullanabileceği birçok bağlama ve tetikleyiciden birini temsil eden Azure Depolama tablolarıyla tümleştireceksiniz.

Hedefler

  • Yerel Azure İşlevleri oluşturma ve hatalarını ayıklama
  • Web ve Azure Depolama kaynaklarıyla tümleştirme
  • Birden çok Azure İşlevleri içeren bir iş akışını düzenleme

Gereksinimler

  • Mac için Visual Studio 7,5 veya üzeri.
  • Bir Azure aboneliği (ücretsiz https://azure.com/freeolarak kullanılabilir).

Alıştırma 1: Azure İşlevleri projesi oluşturma

  1. Mac için Visual Studio başlatın.

  2. Dosya > Yeni Çözüm'e tıklayın.

  3. Bulut > Genel kategorisinden Azure İşlevleri şablonunu seçin. Azure İşlevleri barındıran bir .NET sınıf kitaplığı oluşturmak için C# kullanacaksınız. İleri'ye tıklayın.

    Azure Functions template selection

  4. Proje Adı'nı "AzureFunctionsLab" olarak ayarlayın ve Oluştur'a tıklayın.

    naming and creating your Azure function project

  5. Çözüm Penceresi'ndeki düğümleri genişletin. Varsayılan proje şablonu, çeşitli Azure Webjobs paketlerine NuGet başvurularının yanı sıra Newtonsoft.Json paketini içerir.

    Ayrıca üç dosya da vardır: - konak için genel yapılandırma seçeneklerini açıklamaya yönelik host.json - hizmet ayarlarını yapılandırmaya yönelik local.settings.json . - Proje şablonu ayrıca varsayılan bir HttpTrigger oluşturur. Bu laboratuvarın iyiliği için HttpTrigger.cs dosyasını projeden silmeniz gerekir.

    local.settings.json'i açın. Varsayılan olarak iki boş bağlantı dizesi ayarına sahip olur.

    solution window displaying local.settings.json file

Alıştırma 2: Azure Depolama hesabı oluşturma

  1. adresinde Azure hesabınızda https://portal.azure.comoturum açın.

  2. Ekranın sol tarafında yer alan Sık Kullanılanlar bölümünde Hesaplar'ı Depolama seçin:

    favorites section of Azure portal showing storage accounts item

  3. Yeni bir depolama hesabı oluşturmak için Ekle'yi seçin:

    Button to add new storage account

  4. Ad için genel olarak benzersiz bir ad girin ve Kaynak grubu için yeniden kullanın. Diğer tüm öğeleri varsayılan olarak tutabilirsiniz.

    new storage account details

  5. Oluştur’a tıklayın. Depolama hesabının oluşturulması birkaç dakika sürebilir. Başarıyla oluşturulduktan sonra bir bildirim alırsınız.

    deployment successful notification

  6. Bildirimden Kaynağa git düğmesini seçin.

  7. Erişim tuşları sekmesini seçin.

    access key setting

  8. İlk Bağlan Dizesini kopyalayın. Bu dize, Azure Depolama daha sonra Azure işlevlerinizle tümleştirmek için kullanılır.

    information for key 1

  9. Mac için Visual Studio dönün ve tam bağlantı dizesi local.settings.json'da AzureWebJobs Depolama ayarı olarak yapıştırın. Artık kaynaklarına erişmesi gereken işlevlerin özniteliklerinde ayarın adına başvurabilirsiniz.

    local settings file with connection key entered

Örnek 3: Azure işlevi oluşturma ve hata ayıklama

  1. Artık kod eklemeye başlamaya hazırsınız. .NET sınıf kitaplığıyla çalışırken Azure İşlevleri statik yöntemler olarak eklenir. Çözüm Penceresi'nden AzureFunctions proje düğümüne sağ tıklayın ve İşlev Ekle'yi > seçin:

    Add function option

  2. Yeni Azure İşlevleri iletişim kutusunda Genel web kancası şablonunu seçin. Ad'ıEkle olarak ayarlayın ve tamam'a tıklayarak işlevinizi oluşturun:

    New Azure Functions dialog

  3. Yeni dosyanın en üstüne aşağıdaki using yönergelerini ekleyin:

    using Microsoft.Azure.WebJobs.Extensions.Http;
    using System.Web;
    using Microsoft.WindowsAzure.Storage.Table;
    
  4. Mevcut Run yöntemi kaldırın ve azure işlevi olarak sınıfına aşağıdaki yöntemi ekleyin:

    [FunctionName("Add")]
    public static int Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)]
    HttpRequestMessage req,
    TraceWriter log)
    {
        int x = 1;
        int y = 2;
    
        return x + y;
    }
    
  5. Şimdi yöntem tanımında parça parça ilerleyelim.

    Göreceğiniz ilk şey, bu yöntemi bir Azure işlevi olarak işaretleyen FunctionName özniteliğidir. özniteliği işlevin genel adını belirler. Öznitelik adının gerçek yöntem adıyla eşleşmesi gerekmez.

    New run method with FunctionName attribute highlighted

  6. Ardından yöntemi, gerekli olan bir genel statik yöntem olarak işaretlenir. Ayrıca dönüş değerinin bir int olduğunu da fark edeceksiniz. Yöntem öznitelikleri kullanılarak aksi belirtilmedikçe, Azure işlevinin geçersiz olmayan dönüş değerleri istemciye metin olarak döndürülür. Varsayılan olarak XML olarak döndürülür, ancak daha sonra laboratuvarda gerçekleştirebileceğiniz JSON olarak değiştirilebilir.

    New run method with method initialization highlighted

  7. İlk parametre, bu yöntemin bir HTTP isteği tarafından çağrıldığı belirten HttpTrigger özniteliğiyle işaretlenir. özniteliği, yöntemin yetkilendirme düzeyini ve desteklediği fiilleri de belirtir (bu durumda yalnızca "GET" ). Ayrıca isteğe bağlı olarak yöntemin yolunu geçersiz kılan ve yoldaki değişkenleri otomatik olarak ayıklamak için bir yol sunan bir Yol tanımlayabilirsiniz. Yol burada null olduğundan, bu yöntemin yolu varsayılan olarak /api/Add olur.

    New run method with parameter highlighted

  8. Yöntemin son parametresi, tanılama ve hatalar için iletileri günlüğe kaydetmek için kullanılabilecek bir TraceWriter'dır .

    New run method with TraceWriter highlighted

  9. Satırın kenar boşluğuna tıklayarak yöntemin dönüş satırında bir kesme noktası ayarlayın:

    Breakpoint set at return line

  10. F5 tuşuna basarak veya Hata Ayıklamayı Çalıştır'ı > seçerek projeyi bir hata ayıklama oturumunda derleyin ve çalıştırın. Alternatif olarak Çalıştır düğmesine tıklayabilirsiniz. Bu seçeneklerin tümü aynı görevi gerçekleştirir. Bu laboratuvarın geri kalanı F5'e başvurur, ancak en rahat bulduğunuz yöntemi kullanabilirsiniz.

    Build and Run project

  11. Proje çalıştırıldığında Terminal uygulaması otomatik olarak açılır.

  12. Proje, yöntem özniteliklerine ve bu makalenin devamında ele alınan bir dosya kuralına göre Azure İşlevleri algılama işleminden geçer. Bu durumda, tek bir Azure işlevini algılar ve 1 iş işlevini "oluşturur".

    Output of Azure function in Terminal

  13. Başlangıç iletilerinin en altında, Azure İşlevleri ana bilgisayarı herhangi bir HTTP tetikleyici API'sinin URL'lerini yazdırır. Sadece bir tane olmalı. Bu URL'yi kopyalayın ve yeni bir tarayıcı sekmesine yapıştırın.

    Azure function API URL

  14. Kesme noktası hemen tetiklenmelidir. Web isteği işleve yönlendirildi ve artık hata ayıklanabilir. Değerini görmek için fareyi x değişkeninin üzerine getirin.

    Breakpoint triggered

  15. Kesme noktasını daha önce eklemek için kullanılan yöntemi kullanarak kaldırın (kenar boşluğuna tıklayın veya satırı seçin ve F9 tuşuna basın).

  16. Çalışmaya devam etmek için F5 tuşuna basın.

  17. Tarayıcıda, yönteminin XML sonucu işlenir. Beklendiği gibi, sabit kodlanmış toplama işlemi makul bir toplam oluşturur. Safari'de yalnızca "3" ifadesini görüyorsanız Safari Tercihleri > Gelişmiş'egidin ve "Menü çubuğunda Geliştirme menüsünü göster" onay kutusunu işaretleyin ve sayfayı yeniden yükleyin.>

  18. Mac için Visual Studio'da, hata ayıklama oturumunu sonlandırmak için Durdur düğmesine tıklayın. Yeni değişikliklerin alındığından emin olmak için hata ayıklama oturumunu yeniden başlatmayı (durdurmayı ve çalıştırmayı) unutmayın.

    Stop debugging option

  19. Run yönteminde x ve y tanımlarını aşağıdaki kodla değiştirin. Bu kod, url'nin sorgu dizesinden değerleri ayıklar, böylece ekleme işlemi sağlanan parametrelere göre dinamik olarak gerçekleştirilebilir.

    var query = HttpUtility.ParseQueryString(req.RequestUri.Query);
    
    int x = int.Parse(query["x"]);
    
    int y = int.Parse(query["y"]);
    
    return x + y;
    
  20. Uygulamayı çalıştırın.

  21. Tarayıcı penceresine dönün ve dizeyi /?x=2&y=3 URL'ye ekleyin. URL'nin tamamı artık olmalıdır http://localhost:7071/api/Add?x=2&y=3. Yeni URL'ye gidin.

  22. Bu kez sonuç yeni parametreleri yansıtmalıdır. Projeyi farklı değerlerle çalıştırmaktan çekinmeyin. Hata denetimi olmadığını, bu nedenle geçersiz veya eksik parametrelerin hata oluşturacağını unutmayın.

  23. Hata ayıklama oturumunu durdurun.

Alıştırma 4: function.json ile çalışma

  1. Önceki bir alıştırmada, kitaplıkta tanımlanan Azure işlevi için bir iş işlevinin "oluşturulduğu" Mac için Visual Studio belirtildi. Bunun nedeni, Azure İşlevleri çalışma zamanında yöntem özniteliklerini kullanmaması, bunun yerine Azure İşlevleri nerede ve nasıl kullanılabilir hale getirileceği yapılandırmak için bir derleme zamanı dosya sistemi kuralı kullanmasıdır. Çözüm Penceresi'nde proje düğümünüzü sağ tıklatın ve Bulucu'da Göster'i seçin.

    Reveal in Finder menu option

  2. Bin/Debug/netstandard2.0'a ulaşana kadar dosya sisteminde aşağı gidin. Ekle adlı bir klasör olmalıdır. Bu klasör, C# kodundaki işlev adı özniteliğine karşılık gelen şekilde oluşturulmuştur. Klasör ekle'yi genişleterek tek bir function.json dosyası açın. Bu dosya, Azure işlevini barındırmak ve yönetmek için çalışma zamanı tarafından kullanılır. Derleme zamanı desteği olmayan diğer dil modelleri için (C# betiği veya JavaScript gibi), bu klasörlerin el ile oluşturulması ve korunması gerekir. C# geliştiricileri için bunlar derleme sırasında öznitelik meta verilerinden otomatik olarak oluşturulur. function.json sağ tıklayın ve Visual Studio'da açmak için seçin.

    function.json in the file directory

  3. Bu öğreticinin önceki adımları göz önünde bulundurulduğunda, C# öznitelikleri hakkında temel bilgilere sahip olmanız gerekir. Bunu hesaba katarak, bu JSON tanıdık görünmelidir. Ancak, önceki alıştırmalarda ele alınmayan birkaç öğe vardır. Örneğin, her bağlamanın yönünün ayarlanmış olması gerekir. Çıkarabileceğiniz gibi, "in" parametresinin giriş olduğu, "out" ise parametrenin bir dönüş değeri ($return aracılığıyla) veya yöntemin out parametresi olduğunu gösterir. Ayrıca betikDosyasını (bu son konuma göre) ve derleme içinde entryPoint yöntemini (genel ve statik) belirtmeniz gerekir. Sonraki birkaç adımda bu modeli kullanarak özel bir işlev yolu ekleyeceksiniz, bu nedenle bu dosyanın içeriğini panoya kopyalayın.

    function.json file open in Visual Studio for mac

  4. Çözüm Penceresinde AzureFunctionsLab proje düğümüne sağ tıklayın ve Yeni Klasör Ekle'yi > seçin. Yeni klasörü Ekleyici olarak adlandırın. Varsayılan kural olarak, bu klasörün adı api/Adder gibi API'nin yolunu tanımlar.

    New folder option

  5. Ekleyici klasörüne sağ tıklayın ve Yeni Dosya Ekle'yi > seçin.

    New file option

  6. Web kategorisini ve Boş JSON Dosyası şablonunu seçin. Ad'ı işlev olarak ayarlayın ve Yeni'ye tıklayın.

    Empty json file option

  7. Yeni oluşturulan dosyanın varsayılan içeriğini değiştirmek için diğer function.json (3. adımda) içeriğini yapıştırın.

  8. Json dosyasının üst kısmından aşağıdaki satırları kaldırın:

    "configurationSource":"attributes",
    "generatedBy":"Microsoft.NET.Sdk.Functions-1.0.13",
    
  9. İlk bağlamanın sonuna ("name": "req" satırından sonra) aşağıdaki özellikleri ekleyin. Önceki satıra virgül eklemeyi unutmayın. Bu özellik, varsayılan kökü geçersiz kılar, böylece artık yoldan int parametrelerini ayıklar ve bunları x ve y adlı yöntem parametrelerine yerleştirir.

    "direction": "in",
    "route": "Adder/{x:int?}/{y:int?}"
    
  10. İlk bağlamanın altına başka bir bağlama ekleyin. Bu bağlama işlevin dönüş değerini işler. Önceki satıra virgül eklemeyi unutmayın:

    {
    "name": "$return",
    "type": "http",
    "direction": "out"
    }
    
  11. Ayrıca dosyanın alt kısmındaki entryPoint özelliğini aşağıda gösterildiği gibi "Add2" adlı bir yöntem kullanacak şekilde güncelleştirin. Bu, yol api'sinin/Eklenti... öğesinin herhangi bir adla uygun bir yöntemle eşlendiğini göstermektir (Buraya Ekle2 ).

    "entryPoint": "<project-name>.<function-class-name>.Add2"
    
  12. Son function.json dosyanız aşağıdaki json gibi görünmelidir:

    {
    "bindings": [
        {
        "type": "httpTrigger",
        "methods": [
            "get"
        ],
        "authLevel": "function",
        "direction": "in",
        "name": "req",
        "route": "Adder/{x:int?}/{y:int?}"
        },
        {
        "name": "$return",
        "type": "http",
        "direction": "out"
        }
    ],
    "disabled": false,
    "scriptFile": "../bin/AzureFunctionsProject.dll",
    "entryPoint": "AzureFunctionsProject.Add.Add2"
    }
    
  13. Tüm bunları yapmak için gereken son adım, Mac için Visual Studio bu dosyayı her değiştiğinde çıkış dizinindeki aynı göreli yola kopyalamasını bildirmektir. Dosya seçili durumdayken sağ çubuktan özellikler sekmesini seçin ve Çıkış dizinine kopyala için Daha yeniyse Kopyala'yı seçin:

    Properties options for json file

  14. Add.cs,beklenen işlevi yerine getirmek için yöntemini (özniteliği dahil) aşağıdaki yöntemle değiştirinRun. öznitelik kullanmadığı ve x ve y için açık parametreleri olması dışında, öğesine çok benzerRun.

    public static int Add2(
        HttpRequestMessage req,
        int x,
        int y,
        TraceWriter log)
    {
        return x + y;
    }
    
  15. Projeyi derlemek ve çalıştırmak için F5 tuşuna basın.

  16. Derleme tamamlandıktan ve platform açıldıktan sonra, yeni eklenen yöntemle eşleşen istekler için ikinci bir yol olduğunu gösterir:

    URL for HTTP functions

  17. Tarayıcı penceresini döndürerek adresine http://localhost:7071/api/Adder/3/5gidin.

  18. Bu kez yöntem bir kez daha çalışır ve parametreleri yoldan çeker ve bir toplam oluşturur.

  19. Mac için Visual Studio dönün ve hata ayıklama oturumunu sonlandırın.

Alıştırma 5: Azure Depolama tablolarıyla çalışma

Genellikle, oluşturduğunuz hizmet şu ana kadar oluşturduğumuz hizmetten çok daha karmaşık olabilir ve yürütülmesi için önemli miktarda zaman veya altyapı gerekir. Bu durumda, kaynaklar kullanılabilir olduğunda işlenmek üzere kuyruğa alınan istekleri kabul etmek Azure İşlevleri etkili olabilir. Diğer durumlarda verileri merkezi olarak depolamak istersiniz. Azure Depolama tabloları bunu hızlı bir şekilde yapmanıza olanak sağlar.

  1. aşağıdaki sınıfı Add.cs ekleyin. Ad alanının içine, ancak mevcut sınıfın dışına gitmesi gerekir.

    public class TableRow : TableEntity
    {
        public int X { get; set; }
        public int Y { get; set; }
        public int Sum { get; set; }
    }
    
  2. Add sınıfına aşağıdaki kodu ekleyerek başka bir işlev ekleyin. Bu, http yanıtı içermediği için benzersizdir. Son satır, daha sonra (PartitionKey ve RowKey) ile parametreleri ve toplamını almayı kolaylaştıran bazı önemli bilgilerle doldurulmuş yeni bir TableRow döndürür. yöntemindeki kod, işlevin ne zaman çalıştırıldığında daha kolay bilinmesini sağlamak için TraceWriter'ı da kullanır.

    [FunctionName("Process")]
    [return: Table("Results")]
    public static TableRow Process(
        [HttpTrigger(AuthorizationLevel.Function, "get",
            Route = "Process/{x:int}/{y:int}")]
        HttpRequestMessage req,
        int x,
        int y,
        TraceWriter log)
    {
        log.Info($"Processing {x} + {y}");
    
        return new TableRow()
        {
            PartitionKey = "sums",
            RowKey = $"{x}_{y}",
            X = x,
            Y = y,
            Sum = x + y
        };
    }
    
  3. Projeyi derlemek ve çalıştırmak için F5 tuşuna basın.

  4. Tarayıcı sekmesinde adresine http://localhost:7071/api/Process/4/6gidin. Bu, kuyruğa başka bir ileti ekler ve sonunda tabloya başka bir satır eklenmesine neden olur.

  5. Terminal'e dönün ve 4 + 6 için gelen isteği izleyin.

    Terminal output showing addition request

  6. İsteği aynı URL'ye yenilemek için tarayıcıya dönün. Bu kez İşlem yönteminden sonra bir hata görürsünüz. Bunun nedeni, kodun zaten var olan bir bölüm ve satır anahtarı bileşimini kullanarak Azure Tablo Depolama tablosuna satır eklemeye çalışmasıdır.

    System.Private.CoreLib: Exception while executing function: Process. Microsoft.Azure.WebJobs.Host: Error while handling parameter $return after function returned:. Microsoft.Azure.WebJobs.Host: The specified entity already exists.

  7. Hata ayıklama oturumunu sonlandırın.

  8. Hatayı azaltmak için aşağıdaki parametreyi TraceWriter parametresinden hemen önce yöntem tanımına ekleyin. Bu parametre, Azure İşlevleri platformuna sonuçları depolamak için kullanmakta olduğumuz PartitionKey'deki Sonuçlar tablosundan TableRowalma girişiminde bulunur. Bununla birlikte, rowkey'in aynı yöntemin diğer x ve y parametrelerine göre dinamik olarak oluşturulduğunu fark ettiğinizde gerçek sihirden bazıları devreye girer. Bu satır zaten varsa tableRow, yöntem geliştirici tarafından ek bir çalışma gerekmeyen bir çalışmayla başladığında bu satıra sahip olur. Satır yoksa yalnızca null olur. Bu tür verimlilik, geliştiricilerin altyapıya değil önemli iş mantığına odaklanmasını sağlar.

    [Table("Results", "sums", "{x}_{y}")]
    TableRow tableRow,
    
  9. Aşağıdaki kodu yönteminin başına ekleyin. tableRow null değilse, istenen işlemin sonuçlarına zaten sahibiz ve hemen döndürebiliriz. Aksi takdirde işlev daha önce olduğu gibi devam eder. Bu, verileri döndürmenin en sağlam yolu olmasa da, çok az kodla birden çok ölçeklenebilir katmanda inanılmaz karmaşık işlemleri düzenleyebileceğiniz noktayı gösterir.

    if (tableRow != null)
    {
        log.Info($"{x} + {y} already exists");
        return null;
    }
    
  10. Projeyi derlemek ve çalıştırmak için F5 tuşuna basın.

  11. Tarayıcı sekmesinde url'sini http://localhost:7071/api/Process/4/6yenileyin. Bu kaydın tablo satırı mevcut olduğundan, hemen ve hatasız olarak döndürülmelidir. HTTP çıkışı olmadığından çıkışı Terminal'de görebilirsiniz.

    Terminal output showing table row already exists

  12. URL'yi, gibi henüz test edilmeyen bir bileşimi yansıtacak şekilde http://localhost:7071/api/Process/5/7güncelleştirin. Terminal'de tablo satırının bulunamadığını (beklendiği gibi) belirten iletiyi not edin.

    Terminal output showing new process

  13. Mac için Visual Studio dönün ve hata ayıklama oturumunu sonlandırın.

Özet

Bu laboratuvarda, Mac için Visual Studio ile Azure İşlevleri oluşturmaya başlamayı öğrendiniz.