Forwarded from Easy Microservices (Ali Yousefi ˢᵒᶠᵗʷᵃʳᵉ ᴰᵉᵛᵉˡᵒᵖᵉʳ)
چرا باید از پترن MVVM توی میکروکامپوننتها استفاده کنیم؟ مزیت این پترن روی معماری میکروکامپوننت چیه؟
همانطور که در تصویر میبینید ما به ازای رابط کاربری برای هر کامپوننت بهتره که فقط یک View Model داشته باشیم. View Model شامل بیزینس لاجیک یا به عبارتی Code Behind شما میشن.
فرض کنید من یک میکرو کامپوننت میزنم که قراره فقط صفحهی لاگین رو پوشش بده.
طراحی، پیاده سازی UI ممکنه توی سه تا بیزنس زیر متفاوت باشه:
1.دسکتاپ
2.وب
3.موبایل
4.پنل
آیا به ازای هر کدوم از این رابط کاربری ها باید یکبار بیزینس لاجیک ها و Api call ها رو پیاده سازی کنم؟ خیر.
برای همین ما یک لایه به نام View Model میسازیم تا تمامی UI ها از اون رابط کاربری استفاده کنند. اینطوری رابط کاربری از لاجیک کاملا جداسازی شده و وابستگی بینشون از بین میره و توسعه سریعتر و خطایابی آسونتر از همه مهمتر تست نویسی رو آسونتر میکنیم.
@easymicroservice
@easymicroservices
@csharptips
#microcomponent
#میکروکامپوننت
#میکروفرانت
#microfrontend
همانطور که در تصویر میبینید ما به ازای رابط کاربری برای هر کامپوننت بهتره که فقط یک View Model داشته باشیم. View Model شامل بیزینس لاجیک یا به عبارتی Code Behind شما میشن.
فرض کنید من یک میکرو کامپوننت میزنم که قراره فقط صفحهی لاگین رو پوشش بده.
طراحی، پیاده سازی UI ممکنه توی سه تا بیزنس زیر متفاوت باشه:
1.دسکتاپ
2.وب
3.موبایل
4.پنل
آیا به ازای هر کدوم از این رابط کاربری ها باید یکبار بیزینس لاجیک ها و Api call ها رو پیاده سازی کنم؟ خیر.
برای همین ما یک لایه به نام View Model میسازیم تا تمامی UI ها از اون رابط کاربری استفاده کنند. اینطوری رابط کاربری از لاجیک کاملا جداسازی شده و وابستگی بینشون از بین میره و توسعه سریعتر و خطایابی آسونتر از همه مهمتر تست نویسی رو آسونتر میکنیم.
@easymicroservice
@easymicroservices
@csharptips
#microcomponent
#میکروکامپوننت
#میکروفرانت
#microfrontend
Forwarded from Easy Microservices (Ali Yousefi ˢᵒᶠᵗʷᵃʳᵉ ᴰᵉᵛᵉˡᵒᵖᵉʳ)
Easy Microservices
Photo
ارثبری در رابط کاربری چگونه است؟ آیا قابلیت پیادهسازی دارد؟
ارثبری در رابط کاربری مانند برنامهنویسی نیست و پیادهسازی آن بهمراتب دشوارتر است، چرا که ابزارهای رابط کاربری هنوز در حال توسعهاند و به آن بلوغ نرسیدهاند که بتوان روی آنها معماری دقیق و کاملی را پیاده کرد.
امروز ما میخواهیم یک نمونه از ارثبری در رابط کاربری را به شما نشان دهیم تا ببینید که ما در Easy Microservices چگونه این موضوع را حل میکنیم.
تصور کنید که ما دو UI Kit قدرتمند MudBlazor و Radzen را در اختیار داریم. هر یک از این کامپوننتها خصوصیات خود را دارند؛ به طور مثال یک دکمه در MudBlazor با نام MudButton و در Radzen با نام RadzenButton معرفی شده است و هر کدام ویژگیهای خاص خود را دارند.
حال اگر به وابستگیها بپردازیم، فرض کنید کل پروژه را با Radzen توسعه دادهایم و بعد متوجه شویم که پشتیبانی از RTL (متن چپ-بهراست) را ندارد، دیگر چه عملی باید انجام داد؟ آیا باید وقت زیادی صرف کنیم تا کل پروژه را به MudBlazor تبدیل کنیم؟
راهحلی که ما ارائه کردهایم به این ترتیب است که ما یک کنترل به نام EasyButton میسازیم و سپس آن را برای Radzen و MudBlazor پیادهسازی میکنیم، دقیقاً همان کاری که در ارثبری دو کلاس از یک interface انجام میدهیم.
در نتیجه، اگر سیاستمان تغییر کند، تنها کافی است که چند خط کد را تغییر دهیم و بین UI Kits جابهجا شویم.
شما میتوانید نمونه پروژه سادهای که من به صورت پیادهسازی شده در اینجا توصیف کردم را در گیتهاب مشاهده کنید:
https://github.com/EasyMicroservices/UI-Kits/
#inheritance
#csharp
#blazor
#microcomponent
#easymicroservices
@easymicroservice
@easymicroservices
@csharptips
ارثبری در رابط کاربری مانند برنامهنویسی نیست و پیادهسازی آن بهمراتب دشوارتر است، چرا که ابزارهای رابط کاربری هنوز در حال توسعهاند و به آن بلوغ نرسیدهاند که بتوان روی آنها معماری دقیق و کاملی را پیاده کرد.
امروز ما میخواهیم یک نمونه از ارثبری در رابط کاربری را به شما نشان دهیم تا ببینید که ما در Easy Microservices چگونه این موضوع را حل میکنیم.
تصور کنید که ما دو UI Kit قدرتمند MudBlazor و Radzen را در اختیار داریم. هر یک از این کامپوننتها خصوصیات خود را دارند؛ به طور مثال یک دکمه در MudBlazor با نام MudButton و در Radzen با نام RadzenButton معرفی شده است و هر کدام ویژگیهای خاص خود را دارند.
حال اگر به وابستگیها بپردازیم، فرض کنید کل پروژه را با Radzen توسعه دادهایم و بعد متوجه شویم که پشتیبانی از RTL (متن چپ-بهراست) را ندارد، دیگر چه عملی باید انجام داد؟ آیا باید وقت زیادی صرف کنیم تا کل پروژه را به MudBlazor تبدیل کنیم؟
راهحلی که ما ارائه کردهایم به این ترتیب است که ما یک کنترل به نام EasyButton میسازیم و سپس آن را برای Radzen و MudBlazor پیادهسازی میکنیم، دقیقاً همان کاری که در ارثبری دو کلاس از یک interface انجام میدهیم.
در نتیجه، اگر سیاستمان تغییر کند، تنها کافی است که چند خط کد را تغییر دهیم و بین UI Kits جابهجا شویم.
شما میتوانید نمونه پروژه سادهای که من به صورت پیادهسازی شده در اینجا توصیف کردم را در گیتهاب مشاهده کنید:
https://github.com/EasyMicroservices/UI-Kits/
#inheritance
#csharp
#blazor
#microcomponent
#easymicroservices
@easymicroservice
@easymicroservices
@csharptips
GitHub
GitHub - EasyMicroservices/UI-Kits
Contribute to EasyMicroservices/UI-Kits development by creating an account on GitHub.
👍2