.NET

Azure Function: แบบ dotnet และ dotnet (isolate process) ต่างกันยังไง?

เรื่องที่เกี่ยวข้อง - Azure, Azure Functions

อันนี้เป็น tips เล็กๆ ที่พลอยากเอามาแชร์ โดยการเขียน note ไว้ครับ

ในการสร้างโปรเจค Azure Function ขึ้นมาบนเครื่องคอมพิวเตอร์ของเรา เราจะพบว่าตัวเลือกด้านภาษาโปรแกรม (โดยเฉพาะที่มีปัจจุบัน) จะมีตามนี้

  1. dotnet
  2. dotnet (isolate process)
  3. node
  4. python
  5. powershell
  6. custom

ส่วนที่ทำให้พวกเราหลายๆ คนแปลกใจ น่าจะเป็น 2 ตัวเลือกแรกนั่นเอง

เอาแบบง่ายๆ ก่อนเนอะ

ก่อนอื่นก็ต้องเข้าใจภาพด้านล่างให้เห็นภาพประมาณว่า ปกติ function ของเราก็คือโค้ดชุดหนึ่งที่เอาไปรันบนเครื่องคอมพิวเตอร์นั่นเอง แต่จะรันใช้งานในรูปแบบไหนนั้นก็จะแยกออกเป็น 2 รูปแบบครับ

dotnet แบบปกติ (ภาพซ้าย)

  • ทำงานรวมกับเครื่องที่ host ตัวโค้ด function อยู่ ส่งผลให้เกิดเงื่อนไขที่ตัว function ของเราต้องอิงการทำงานหลายๆ อย่างของเครื่อง host เช่น
    • เครื่อง Host นั้นจะลง Runtime เป็นเวอร์ชั่น Long-time support (LTS) เสมอ
    • ไม่รองรับ .NET Framework จะมีแค่ .NET Core และ .NET 6 ขึ้นไป

dotnet แบบ isolate process (เรียกเต็มๆ ว่า isolate worker process)

  • แยกการทำงาน process ของ function และ process ของเครื่อง host ออกจากกัน ทำให้ได้ข้อดีหลายอย่างคือ
    • ตัว process เลือกทำงานกับ runtime ที่ต้องการได้
    • ใช้งาน middleware ได้สะดวก
    • ใช้ dependency injection ได้
  • แต่ก็มีข้อจำกัดติดมาด้วยนะ เช่น
    • ถึงเราเลือกใช้ .NET Framework ในการพัฒนา Function app ได้ แต่ก็ต้องเลือกเครื่อง host เป็น Windows ด้วยนะ ทำให้ค่าใช้จ่ายสูงขึ้น

อ้างอิง – Guide for running C# Azure Functions in an isolated worker process | Microsoft Learn

เริ่มต้นยุค AI ด้วยคอร์สฟรี และพรีเมี่ยม กับพล

หากชอบสิ่งที่พลเล่า เรื่องที่พลสอน สามารถสนับสนุนพลโดยการเข้าเรียนคอร์สออนไลน์ของพลนะคร้าบ

  • เข้าใจง่าย ใช้ได้จริง ออกแบบการสอนอย่างเข้าใจโดยโค้ชพล
  • มีคอร์สสำหรับคนใช้งานทั่วไป จนถึงเรียนรู้เพื่อใช้งานในสายอาชีพขั้นสูง
  • ทุกคอร์สมีใบประกาศณียบัตรรับรองหลังเรียนจบ

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • Always Active

Save