۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

نحوه کار با توابع Azure در سی شارپ

از توابع Azure برای اجرای قطعات کوچک کدی که می تواند توسط رویدادهای ابر Azure فعال شود، استفاده کنید.

از توابع Azure برای اجرای قطعات کوچک کدی که می تواند توسط رویدادهای ابر Azure فعال شود، استفاده کنید.

Azure Functions ارائه محاسبات بدون سرور در ابر Microsoft Azure است. در اصل، “بدون سرور” به این معنی است که شما حتی برای اجرای یک عملکرد Azure به یک ماشین مجازی نیاز ندارید. توابع Azure فقط پیاده‌سازی پلتفرم به‌عنوان سرویس (PaaS) هستند که بر اساس یک مدل برنامه‌نویسی رویداد محور است. این مقاله مقدمه ای بر توابع Azure، چرایی مفید بودن آنها و نحوه کار با آنها ارائه می دهد.

از آنجایی که هیچ سروری وجود ندارد که شما مجبور به مدیریت آن باشید، توابع Azure می توانند به صورت خودکار مقیاس شوند، و شما فقط برای مدت زمانی که کدتان اجرا می شود، پرداخت می کنید. می‌توانید از توابع Azure برای پردازش رویداد در زمان واقعی یا برای کارهای پردازش داده‌های زمان‌بندی‌شده، مانند پشتیبان‌گیری داده‌های برنامه‌ریزی‌شده یا پاک‌سازی داده‌ها استفاده کنید. حتی می‌توانید از توابع Azure به عنوان پشتیبان بدون سرور برای برنامه‌های تلفن همراه استفاده کنید.

در اینجا نگاهی گذرا به برخی از ویژگی‌های چشمگیر Azure Functions آورده شده است:

  • استقرار کد انعطاف پذیر (برای مثال از طریق پورتال Azure یا GitHub)
  • پشتیبانی از چندین زبان (C#، F#، Java، Node.js، یا PHP)
  • پشتیبانی از وابستگی های خارجی از طریق NuGet یا NPM
  • ادغام آسان با سایر سرویس های Azure

برای کار با نمونه کدهای ارائه شده در این مقاله، باید Visual Studio 2022 را در سیستم خود نصب کنید. اگر قبلاً نسخه‌ای ندارید، می‌توانید Visual Studio 2022 را از اینجا بارگیری کنید.

همچنین باید جدیدترین نسخه Azure Function Tools و اشتراک Azure. ابزارهای عملکرد Azure به عنوان بخشی از حجم کاری توسعه Azure در Visual Studio 2022 گنجانده شده است.

توابع Azure چیست؟ چرا به آنها نیاز داریم؟

توابع Azure خدمات میزبانی شده در ابر مایکروسافت Azure هستند که کد را بدون نیاز به تهیه یا مدیریت زیرساخت اجرا می کنند. شما فقط کدی را می نویسید که برای کار در دست نیاز دارید، و Azure Functions همه چیز را مدیریت می کند.

یک Azure Function می‌تواند توسط یک رویداد (یک درخواست HTTP) یا در یک زمان‌بندی (با استفاده از عبارت CRON) فعال شود. هنگام نوشتن توابع خود قبل از استقرار آنها در Azure، می توانید به سرعت عملکردها را به صورت محلی آزمایش کنید.

مزایا و معایب توابع Azure

کاهش هزینه‌ها: یکی از قانع‌کننده‌ترین دلایل استفاده از توابع Azure این است که هزینه اجرای برنامه‌ها را به‌طور چشمگیری کاهش می‌دهد. شما فقط باید برای منابعی که مصرف کرده اید هزینه کنید و تا زمانی که عملکرد شما اجرا نشود هیچ منبعی مصرف نمی شود.

انعطاف پذیری: می‌توانید با تغییر نیازمندی‌هایتان، عملکردهای جدید مبتنی بر رویداد را ایجاد و اجرا کنید، و همچنین می‌توانید عملکردهای موجود را تغییر دهید.

مقیاس‌پذیری: توابع Azure مقیاس‌پذیری را فراهم می‌کنند و به شما امکان می‌دهند به سرعت نمونه‌های جدیدی از یک تابع را در هنگام افزایش تقاضا بچرخانید. این امر نیاز به مقیاس‌پذیری دستی نمونه‌ها را از قبل حذف می‌کند، فرآیندی که اگر تقاضا به‌طور غیرقابل پیش‌بینی یا به ندرت افزایش یابد، پر زحمت می‌شود و همچنین می‌تواند ناکارآمد باشد.

تریگرها و اتصالات در توابع Azure

توابع Azure از محرک‌ها و به صورت اختیاری از اتصالات استفاده می‌کنند. تریگرها توابع تعریف شده توسط کاربر هستند که نحوه اجرای یک تابع Azure را مشخص می کنند. یک راه‌انداز را می‌توان با یک ویژگی کد تعریف کرد و با یک پیام صف، یک تایمر، یک درخواست HTTP، یک حباب و غیره راه‌اندازی کرد.

نحوه استفاده از عملگر is و به عنوان در سی شارپ

تریگرها دارای اتصالات ورودی هستند که داده‌های موجود در کد را در طول اجرا تعریف می‌کنند. بدنه درخواست HTTP معمولاً به عنوان یک شی JSON به پارامتر ورودی Azure Function در یک راه‌انداز HTTP ارسال می‌شود.

Binding راهی است برای اتصال منابع به یک تابع Azure به صورت اعلامی. دو نوع اتصال وجود دارد: ورودی و خروجی. در حالی که اولی اجازه می دهد تا داده ها را به تابع Azure وارد کند، دومی به تابع Azure اجازه می دهد تا داده ها را به منابع خارجی ارسال کند. شما می‌توانید تنها یک ماشه برای یک تابع Azure داشته باشید اما چندین اتصال داشته باشید.

انواع تریگرها در توابع Azure

انواع مختلف راه‌اندازها در توابع Azure این امکان را برای شما فراهم می‌کنند که عملکردی را تنظیم کنید که هنگام به‌روزرسانی یک منبع اجرا شود، مانند یک راه‌انداز مرکز رویداد که هر بار که سرویس شما به‌روزرسانی می‌شود، یک هشدار ایمیل ارسال می‌کند.

راه‌انداز HTTP: راه‌انداز HTTP از نقطه پایانی HTTP برای فراخوانی تابع از طریق درخواست HTTP استفاده می‌کند. می‌توانید از محرک‌های HTTP برای ایجاد یک برنامه وب بدون سرور برای دریافت وبکهک‌ها از سرویس‌های دیگر استفاده کنید.

راه‌انداز تایمر: ماشه تایمر بر اساس یک برنامه از پیش تعریف‌شده فراخوانی می‌شود. این جدول زمانی را می توان در نحو CRON یا با استفاده از فواصل بیان کرد. راه‌انداز تایمر برای برنامه‌ریزی هر کار معمولی، مانند یک کار تمیز کردن یا گزارش هفتگی ایمیل، مفید است.

راه‌انداز Event Hubs: ماشه Event Hubs به پیام جریانی Event Hubs پاسخ می‌دهد. هنگام استفاده از ویژگی EventHubTrigger، می‌توانید به جریان پیام‌ها از همه پارتیشن‌ها متصل شوید.

راه‌انداز Blob Storage: ماشه Blob به رویدادها در Azure Blob Storage پاسخ می‌دهد. هر زمان که یک Blob جدید ایجاد می شود یا یک Blob موجود به روز می شود، یک ماشه Blob می تواند یک عملکرد Azure را شروع کند.

راه‌انداز Cosmos DB: ماشه Cosmos DB به رویدادهای ایجاد شده توسط Azure Cosmos DB پاسخ می‌دهد. به عنوان مثال، اگر می‌خواهید هنگام ایجاد سند جدید در پایگاه داده، عملکرد Azure شما اجرا شود، می‌توانید یک راه‌انداز Cosmos DB ایجاد کنید و کد لازم را برای مدیریت رویداد اضافه کنید.

راه‌انداز شبکه رویداد: یک راه‌انداز شبکه رویداد به رویدادهای شبکه رویداد Azure پاسخ می‌دهد. Event Grid یک سرویس مسیریابی رویداد بدون سرور است که به شما امکان می‌دهد قوانینی را ایجاد کنید که رویدادها را از سرویس‌های Azure مانند ذخیره‌سازی Blob، گروه‌های منابع، و منابع شخص ثالث به هر مقصدی که توسط Event Grid پشتیبانی می‌شود هدایت کند.

راه‌انداز ذخیره‌سازی صف: هنگامی که پیام‌ها به فضای ذخیره‌سازی صف Azure اضافه می‌شوند، یک راه‌انداز Azure Queue Storage فعال می‌شود. Azure Queue Storage پیام‌های قابل اعتماد و ناهمزمان را بین اجزای برنامه ارائه می‌کند.

وب هوک عمومی: یک وب هوک مشابه پاسخ تماس HTTP تعریف شده توسط کاربر است. این یک روش سبک وزن برای اطلاع رسانی توسط سرویس دیگری در صورت بروز برخی موارد فراهم می کند. یک وب هوک عمومی دسته دیگری از محرک‌ها است که وقتی درخواست HTTP از یک سرویس نشات می‌گیرد فعال می‌شود.

جاوا را سریع بسازید! تنظیم عملکرد جاوا

وب هوک GitHub: هنگامی که رویدادی در مخزن GitHub شما رخ می دهد، مانند ایجاد یک شعبه جدید، حذف یک شعبه موجود، یا تعهد یا اظهار نظر کد، یک راه انداز وب هوک GitHub اجرا می شود.< /p>

راه‌انداز سرویس اتوبوس: یک راه‌انداز گذرگاه سرویس به پیام‌های یک صف یا موضوع Azure Service Bus پاسخ می‌دهد.

یک پروژه برنامه کاربردی Azure Functions در ویژوال استودیو ایجاد کنید

ابتدا، بیایید یک پروژه برنامه کاربردی .NET Azure Functions در ویژوال استودیو ایجاد کنیم. با فرض اینکه Visual Studio 2022 در سیستم شما نصب شده است، مراحل ذکر شده در زیر را برای ایجاد یک پروژه Azure Functions دنبال کنید.

  1. Visual Studio IDE را راه اندازی کنید.
  2. روی “ایجاد پروژه جدید” کلیک کنید.
  3. در پنجره “ایجاد پروژه جدید”، “عملکردهای Azure” را از لیست الگوهای نمایش داده شده انتخاب کنید.
  4. بعدی را کلیک کنید.
  5. در پنجره “پیکربندی پروژه جدید خود” که در ادامه نشان داده شده است، نام و مکان پروژه جدید را مشخص کنید.
  6. روی ایجاد کلیک کنید.
  7. در صفحه «ایجاد یک برنامه کاربردی جدید Azure Functions»، نوع محرکی را که می‌خواهید برای عملکرد Azure خود استفاده کنید، انتخاب کنید.
  8. روی ایجاد کلیک کنید.

اکنون باید یک پروژه برنامه کاربردی جدید .NET Azure Functions را در Visual Studio 2022 آماده داشته باشید. ما از این پروژه در بخش های بعدی این مقاله استفاده خواهیم کرد.

یک تابع Azure جدید ایجاد کنید

به‌طور پیش‌فرض، یک تابع Azure با نام Function1 به‌طور خودکار در فایلی به نام Function1.cs ایجاد می‌شود. بیایید تابع پیش فرض را با کد زیر جایگزین کنیم:

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
namespace Azure_FunctionAppDemo
{
    public static class Demo
    {
        [FunctionName("Demo")]
        public static async Task<IActionResult> Run(
          [HttpTrigger(AuthorizationLevel.Function, "get",
          "post", Route = null)] HttpRequest request,
            ILogger logger)
        {
            logger.LogInformation("An HTTP triggered Azure Function.");
            string requestBody = String.Empty;
            using (StreamReader streamReader = new StreamReader(request.Body))
            {
                requestBody = await streamReader.ReadToEndAsync();
            }
            return new OkObjectResult(!string.IsNullOrEmpty(requestBody));
        }
    }

به فهرست کد بالا مراجعه کنید. یک تابع Azure با یک کلاس ثابت با یک تابع استاتیک به نام Run نشان داده می شود. در این مثال، نام تابع Azure Demo است. ویژگی FunctionName برای نشان دادن اینکه تابع یک تابع Azure است استفاده می شود. علاوه بر این، متد Run را به عنوان نقطه ورود مشخص می کند. نام تابع باید در یک پروژه منحصر به فرد باشد.

دو پارامتر متد Run از نوع HttpRequest و ILogger هستند. پارامتر اول به شما امکان می دهد با شی HttpRequest کار کنید (مثلاً برای بازیابی فراداده درخواست). پارامتر دوم به شما امکان می دهد داده های مربوط به عملکرد Azure خود را به یک هدف گزارش از پیش تعریف شده وارد کنید.

ما می دانیم که توابع Azure بر اساس تریگرهای از پیش پیکربندی شده اجرا می شوند. استفاده از ویژگی HttpTrigger نشان می دهد که تابع Azure به نام Demo بر اساس یک تریگر Http خواهد بود. شکل ۱ زیر نشان می دهد که چگونه می توانید هنگام ایجاد برنامه Azure Functions خود در ویژوال استودیو، ماشه را برای عملکرد خود انتخاب کنید.

صفحه پرطرفدار GitHub Doomed ممکن است ذخیره شود

Azure functions 01

شکل ۱. هنگامی که یک برنامه کاربردی جدید Azure Functions در ویژوال استودیو ایجاد می کنید، نوع ماشه ای را که می خواهید برای عملکرد Azure خود استفاده کنید، انتخاب می کنید.

یک تابع Azure را به صورت محلی تست کنید

اکنون که عملکرد Azure شما آماده است، مرحله بعدی اجرای آن است. می توانید از ابزارهای توابع Azure برای اجرای توابع Azure به صورت محلی در سیستم خود استفاده کنید. شما فقط می توانید F5 را فشار دهید تا عملکرد Azure خود را اجرا و آزمایش کنید. توجه داشته باشید که اگر Azure Functions Tools نصب نشده باشد، هنگامی که می خواهید عملکرد خود را اجرا کنید، از شما خواسته می شود که آن را نصب کنید. فقط زمانی که از شما خواسته شد، درخواست دانلود و نصب ابزارها را بپذیرید.

اگر Azure Functions Tools نصب شده باشد، پنجره کنسول URL تابع Azure شما را همانطور که در شکل ۲ زیر نشان داده شده است نشان می دهد.

azure functions 02

شکل ۲. Azure Functions Tools URL توابع راه اندازی شده توسط HTTP را خروجی می دهد.

URL نمایش داده شده برای عملکرد Azure خود را یادداشت کنید. اکنون از Postman، یکی از محبوب‌ترین ابزارهای تست API، برای آزمایش عملکرد استفاده خواهیم کرد. . هنگامی که URL را در Postman اجرا می کنید، باید خروجی مشابه آنچه در شکل ۳ در زیر نشان داده شده است ببینید.

azure functions 03

شکل ۳: عملکرد Azure در عمل!

انتشار یک تابع Azure در Azure

با فرض اینکه به Azure وارد شده اید، مراحل ذکر شده در زیر را برای انتشار پروژه برنامه کاربردی Azure Functions در Azure دنبال کنید:

  1. روی پروژه برنامه کاربردی Azure Functions در پنجره Solution Explorer کلیک راست کنید.
  2. انتشار را کلیک کنید.
  3. Azure را به عنوان هدف انتشار انتخاب کنید.
  4. برنامه عملکرد Azure (ویندوز) را به عنوان هدف خاص انتخاب کنید.
  5. بعدی را کلیک کنید.
  6. در نهایت، برای تکمیل فرآیند، روی Finish کلیک کنید.

azure functions 02

شکل ۴. می توانید برنامه Azure Functions خود را مستقیماً از Visual Studio در Microsoft Azure منتشر کنید. فقط مطمئن شوید که به Azure وارد شده اید.

شما می توانید از توابع Azure برای پیاده سازی توابع محاسباتی بدون سرور در Azure استفاده کنید. قابلیت اجرا در محیط بدون سرور، توابع Azure را بسیار مقیاس پذیر و کارآمد می کند. توابع Azure برای کارهای زمان‌بندی‌شده، اعلان‌ها و APIهای سبک مناسب هستند—هر کار ساده‌ای که می‌توان هر زمان که رویداد مشخصی رخ داد، اجرا کرد.

توابع Azure را می توان با درخواست HTTP، همانطور که در اینجا نشان داده شده است، یا توسط یک وب هوک، یا با رویدادی در Azure Cosmos DB، Blob Storage، Mobile Apps و بسیاری دیگر از خدمات Azure فراخوانی کرد. حتی می‌توانید یک Azure Function را از OneDrive، Excel یا Outlook فعال کنید. و در صورت تمایل می‌توانید داده‌های پردازش شده توسط توابع Azure را در یک سرویس ذخیره‌سازی Azure، یک پایگاه داده اسناد، یا حتی یک پایگاه داده SQL ذخیره کنید.

در نهایت، توجه داشته باشید که می‌توانید از توابع بادوام Azure، یک برنامه افزودنی از توابع Azure، برای ساخت عملکردهای بادوام و حالتی که در ابر Azure اجرا می‌شوند، استفاده کنید. در پست بعدی اینجا نگاهی به کار با Azure Durable Functions خواهیم داشت.