معماری میکروسرویس می تواند به شما کمک کند تا برنامه هایی بسازید که انعطاف پذیر، مقیاس پذیر و نگهداری آسان باشند. در اینجا نحوه شروع کار با میکروسرویس ها در ASP.NET Core آمده است.
معماری میکروسرویسها مجموعهای از سرویسهای متصل به هم، توسعهپذیر و مستقل قابل استقرار را توصیف میکند که از طریق رابطهای کاملاً تعریف شده با یکدیگر تعامل دارند.
این مقاله معماری میکروسرویس ها، مزایا و معایب آن را بررسی می کند و سپس نشان می دهد که چگونه می توانیم یک میکروسرویس ساده را در ASP.NET Core پیاده سازی کنیم. در مقالات آینده، ما برنامه مبتنی بر میکروسرویس خود را با پیاده سازی یک دروازه API و تعاملات بین میکروسرویس های خود تکمیل خواهیم کرد.
برای استفاده از نمونه کدهای ارائه شده در این مقاله، باید Visual Studio 2022 را در سیستم خود نصب کنید. اگر قبلاً نسخهای ندارید، میتوانید Visual Studio 2022 را از اینجا بارگیری کنید.
معماری میکروسرویس چیست؟
اصطلاح میکروسرویس ها برای توصیف معماری نرم افزاری استفاده می شود که در آن یک برنامه کاربردی بزرگ به مجموعه ای از خدمات مستقل کوچک و مستقل تقسیم می شود. هر میکروسرویس برای انجام مجموعه محدودی از وظایف طراحی شده است و به طور مستقل قابل استقرار و نگهداری است.
به عبارت دیگر، یک برنامه کاربردی مبتنی بر ریزسرویس به چندین سرویس کوچک، گسسته، غیرمتمرکز، بهطور مستقل و با قابلیت استقرار مستقل تقسیم میشود که به عنوان یک کل منسجم با هم کار میکنند.
برنامههای مبتنی بر میکروسرویسها میتوانند به آسانی مقیاس شوند، و نگهداری از آنها آسانتر است، زیرا میتوانید کد منبع یک سرویس برنامه خود را مستقل از سایر سرویسها تغییر دهید، بدون اینکه نیازی به استقرار مجدد کل برنامه باشد. در عوض، میتوانید فقط سرویس آسیبدیده را مجدداً مستقر کنید.
مزایا و معایب میکروسرویس ها
در این بخش به طور خلاصه به بررسی مزایا و معایب کلیدی معماری میکروسرویس ها می پردازیم. مزایای کلیدی معماری میکروسرویس:
- مقیاسپذیری: میکروسرویسها با اجازه دادن به سرویسهای جداگانه به مقیاس مستقل بر اساس تقاضا، مقیاسپذیری کلی سیستم را بهبود میبخشند.
- توسعههای چابک: میکروسرویسها به تیمها اجازه میدهند تا به طور مستقل خدمات را توسعه و استقرار دهند، چرخههای توسعه سریعتر و تسهیل تحویل و استقرار مستمر مطابق با اصول و شیوههای توسعه.
- جداسازی خطا و انعطافپذیری: با معماری میکروسرویسها، خرابی یکی از سرویسها بر کل برنامه تأثیر نمیگذارد. این سیستم به دلیل جداسازی خطاها و توانایی رسیدگی به خرابیها بهخوبی انعطافپذیرتر است.
- انعطاف پذیری فناوری: میکروسرویس ها به هر سرویس اجازه می دهند از زبان برنامه نویسی، چارچوب و فناوری متفاوتی استفاده کنند. این توضیح می دهد که چرا تیم ها می توانند پشته فناوری مورد نظر را برای هر سرویس هنگام کار با برنامه های کاربردی مبتنی بر میکروسرویس انتخاب کنند.
- تیمهای مستقل: میکروسرویسها برای ارتقای تیمهای کوچک و چند منظوره طراحی شدهاند که بر روی خدمات فردی کار میکنند و تیمها را قادر میسازند مستقلتر، کارآمدتر و متمرکزتر شوند.
و معایب بالقوه معماری میکروسرویس:
- پیچیدگی: ماهیت توزیع شده معماری میکروسرویس ها سطح بالاتری از پیچیدگی را نسبت به نمونه یکپارچه خود معرفی می کند، از جمله تأخیر شبکه، ارتباطات همزمان، ثبات نهایی و مدیریت داده های توزیع شده.
- چالش های عملیاتی: برای اطمینان از کشف، نظارت، ثبت و ردیابی مناسب سرویس، به ابزارهای بیشتری نیاز دارید زیرا مدیریت و نظارت بر چندین سرویس در یک محیط توزیع شده چالش برانگیز است.
- افزایش تلاش برای توسعه: معماری میکروسرویس ها به دلیل نیاز به طراحی، توسعه، آزمایش و استقرار چندین سرویس فردی، اغلب به تلاش توسعه بالاتری نسبت به معماری یکپارچه نیاز دارد.
- مدیریت داده: در یک محیط میکروسرویس های توزیع شده، حفظ ثبات داده ها و یکپارچگی تراکنش نسبت به یک سیستم یکپارچه دشوارتر است.
حالا بیایید بررسی کنیم که چگونه می توانیم یک برنامه کاربردی مبتنی بر میکروسرویس ساده در ASP.NET Core بسازیم. ما با ایجاد یک پروژه ASP.NET Core Web API شروع می کنیم.
یک پروژه ASP.NET Core Web API در Visual Studio 2022 ایجاد کنید
برای ایجاد یک پروژه ASP.NET Core 7 Web API در Visual Studio 2022، مراحل ذکر شده در زیر را دنبال کنید.
- Visual Studio 2022 IDE را راه اندازی کنید.
- روی “ایجاد پروژه جدید” کلیک کنید.
- در پنجره “ایجاد پروژه جدید”، “ASP.NET Core Web API” را از لیست الگوهای نمایش داده شده انتخاب کنید.
- بعدی را کلیک کنید.
- در پنجره “پیکربندی پروژه جدید خود”، نام و مکان پروژه جدید را مشخص کنید.
- به صورت اختیاری، بسته به تنظیمات برگزیده خود، کادر انتخاب «قرار دادن راه حل و پروژه در یک فهرست راهنمای» را علامت بزنید.
- بعدی را کلیک کنید.
- در پنجره «اطلاعات اضافی» که در ادامه نشان داده شده است، کادر «استفاده از کنترلکنندهها (برای استفاده از حداقل APIها علامت آن را بردارید» را علامت بزنید. ما از حداقل API در این پروژه استفاده نخواهیم کرد.
- در جای دیگری از پنجره «اطلاعات اضافی»، «نوع احراز هویت» را روی «هیچکدام» (پیشفرض) بگذارید و مطمئن شوید که کادرهای «فعال کردن پشتیبانی باز API»، «پیکربندی برای HTTPS» و «فعال کردن داکر» را انتخاب کنید. ” کنترل نشده باقی بماند. ما در اینجا از هیچ یک از این ویژگی ها استفاده نخواهیم کرد.
- روی ایجاد کلیک کنید.
ما از این پروژه ASP.NET Core Web API برای کار با نمونههای کد در بخشهای زیر استفاده خواهیم کرد.
اجرای یک میکروسرویس در ASP.NET Core
برای سادگی، برنامه مبتنی بر ریزسرویسهای ما شامل سه سرویس به نامهای مشتری، محصول و تامینکننده خواهد بود. برای اختصار، من میکروسرویس مشتری را در اینجا ایجاد میکنم، و شما میتوانید همین مراحل را برای ایجاد دو میکروسرویس دیگر دنبال کنید.
خدمات ریز مشتری شامل انواع زیر خواهد بود:
- مشتری – کلاس موجودیت
- ICustomerRepository – رابط مخزن مشتری
- CustomerRepository – کلاس مخزن مشتری
- CustomerController – یک کنترلر API که یک نقطه پایانی را برای بازیابی داده ها در معرض دید قرار می دهد
برای ساده نگه داشتن کارها، میکروسرویس ما فقط یک روش عمل خواهد داشت، یعنی یک نقطه پایانی. برای ایجاد کلاس موجودیت، در پروژه CustomerAPI، یک فایل به نام Customer ایجاد کنید و کد زیر را در آنجا وارد کنید.
public class Customer { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string Address { get; set; } }
برای ایجاد مخزن مشتری، یک رابط به نام ICustomerRepository در فایلی با همین نام ایجاد کنید و کد زیر را وارد کنید.
public interface ICustomerRepository { public Customer GetById(int id); }
کلاس CustomerRepository رابط ICustomerRepository را پیاده سازی می کند و پیاده سازی متد GetById را ارائه می دهد.
public class CustomerRepository : ICustomerRepository { private readonly List<Customer> _customers; public CustomerRepository() { _customers = new List<Customer> { new Customer { Id = 1, FirstName = "Joydip", LastName = "Kanjilal", Address = "Hyderabad, India" }, new Customer { Id = 2, FirstName = "Steve", LastName = "Smith", Address = "Chicago, USA" } }; } public Customer GetById(int id) { return _customers.Find(x => x.Id == id); } }
شما باید یک نمونه از نوع ICustomerRepository در فایل Program.cs با استفاده از کد زیر ثبت کنید.
builder.Services.AddScoped<ICustomerRepository, CustomerRepository>();
این به شما امکان می دهد از تزریق وابستگی برای ایجاد نمونه ای از نوع ICustomerRepository در کلاس کنترلر استفاده کنید. در نهایت، یک کنترلر API جدید با نام Customer ایجاد کنید و کد پیشفرض ایجاد شده را با کد زیر جایگزین کنید.
using Microsoft.AspNetCore.Mvc; namespace CustomerAPI.Controllers { [Route("api/[controller]")] [ApiController] public class CustomerController : ControllerBase { private readonly ICustomerRepository _customerRepository; public CustomerController(ICustomerRepository customerRepository) { _customerRepository = customerRepository; } [HttpGet("{id}")] public Customer Get(int id) { return _customerRepository.GetById(id); } } }
و این تنها کاری است که باید برای ایجاد یک میکروسرویس مینیمال انجام دهید. هنگامی که برنامه را اجرا می کنید و نقطه پایانی HTTP GET میکروسرویس مشتری را می زنید، داده های مربوط به مشتری در مرورگر وب شما نمایش داده می شود.
Microservices در مقابل monolith
برنامههای کاربردی یکپارچه همه عملکردهای تجاری خود را در یک فرآیند واحد تجمیع میکنند. در نتیجه، چرخههای تغییر همه عملکردهای مختلف برنامه در هم تنیده میشوند و یک تغییر جزئی به یک تابع ممکن است نیاز به بازسازی و استقرار مجدد کل برنامه داشته باشد.
با معماری میکروسرویسها، عملکرد برنامه شما به بسیاری از سرویسهای قابل استقرار مستقل تقسیم میشود و شما را قادر میسازد تا هر سرویس را جداگانه بسازید، استقرار و مدیریت کنید.
در این پست نحوه ایجاد یک میکروسرویس ساده در ASP.NET Core را توضیح دادیم. در مقاله بعدی در مورد معماری میکروسرویسها، ما بررسی خواهیم کرد که چگونه میتوانیم از یک دروازه API با میکروسرویسهای خود برای اعمال امنیت و ارائه یک نقطه دسترسی واحد به سرویسهای بکاند استفاده کنیم. سپس ما برنامه مبتنی بر میکروسرویس خود را با اجرای تعاملات بین سرویسها تکمیل میکنیم.
پست های مرتبط
چگونه یک میکروسرویس در ASP.NET Core بسازیم
چگونه یک میکروسرویس در ASP.NET Core بسازیم
چگونه یک میکروسرویس در ASP.NET Core بسازیم