CodeShot

Azure Functions در مقابل Azure App Service

Azure Functions یک پلتفرم serverless است که کد را به‌صورت توابع مستقل و رویدادمحور اجرا می‌کند و تنها بابت زمان اجرای واقعی هزینه می‌گیرد؛ Azure App Service یک پلتفرم PaaS برای میزبانی برنامه‌های وب و API کامل است که به‌صورت پیوسته اجرا می‌شود و کنترل بیشتری روی محیط اجرا می‌دهد.

ویژگیAzure FunctionsAzure App Service
مدل اجراتوابع مجزا و رویدادمحوربرنامه وب کامل و پیوسته
مدل هزینهبر اساس مصرف (Consumption Plan)بر اساس پلن App Service (ثابت‌تر)
Cold Startممکن است رخ دهد (در Consumption Plan)معمولاً وجود ندارد
مناسب برایپردازش پس‌زمینه، webhook، تایمروب‌سایت، Web API با ترافیک پیوسته

کِی از Azure Functions استفاده کنیم؟

برای پردازش‌های رویدادمحور، کوتاه‌مدت و با بار نامنظم (وظایف پس‌زمینه، webhook، پردازش صف) از Azure Functions استفاده کنید تا هزینه با مصرف واقعی متناسب باشد.

کِی از Azure App Service استفاده کنیم؟

برای میزبانی یک وب‌اپلیکیشن یا Web API کامل با ترافیک پیوسته که نیاز به کنترل بیشتر روی تنظیمات، session state یا WebSocket دارد، از App Service استفاده کنید.

مثال Azure Functions

[Function("ProcessOrder")]
public async Task Run(
    [QueueTrigger("orders")] string orderJson)
{
    var order = JsonSerializer.Deserialize<Order>(orderJson);
    await _orderService.ProcessAsync(order);
}

مثال Azure App Service

// Standard ASP.NET Core app deployed continuously to App Service
var app = builder.Build();
app.MapControllers();
app.Run();  // Runs continuously, handles all incoming HTTP traffic

اشتباه رایج

تلاش برای میزبانی یک API با ترافیک بالا و پیوسته روی Consumption Plan توابع Functions که به cold start مکرر و هزینه غیرقابل‌پیش‌بینی منجر می‌شود؛ در مقابل، استفاده از App Service برای یک وظیفه ساده و کم‌تکرار (مثل پاکسازی روزانه دیتابیس) هزینه idle غیرضروری ایجاد می‌کند.

جمع‌بندی

وظیفه کوچک و رویدادمحور → Functions؛ اپلیکیشن کامل با ترافیک پیوسته → App Service.