یکی از تغییرات اساسی که در ساختار فروشگاه ساز ناپکامرس (nopCommerce) از نسخه 4.00 به بعد اعمال شد، استفاده از چهارچوب ASP.NET Core به منظور پیادهسازی و توسعه فروشگاه ساز بود. ASP.NET Core، دنبالهای از ASP.NET نیست، ASP.NET Core یک چهارچوب جدید،با قابلیت اجرا در چندین محیط (چندین پلتفرم مانند Windows، Linux و Mac)، کارایی بالا و منبع-باز (open-Source) است.
شاید برای شما سؤال پیش آید که دلیل انتقال فروشگاه ساز ناپکامرس (nopCommerce) از چهارچوب ASP.NET به ASP.NET Core چه میتواند باشد؟ به منظور پاسخگویی به این سؤال، قصد داریم تا عوامل و دلایل اصلی تصمیم سازنده فروشگاه ساز nopCommerce نسبت به انتقال به چهارچوب دیگر را بیان کنیم.
تیم سازنده و توسعه دهنده فروشگاه ساز ناپکامرس همواره در صدد بهرهگیری و استفاده از آخرین فناوری روز دنیا به منظور توسعه و پیشرفت فروشگاه ساز هستند. استفاده از آخرین فناوریهای روز دنیا به منظور توسعه فروشگاه ساز از بهینگی و کارا بودن فروشگاه ساز اطمینان کسب میکند.
در زمان عرضه نسخه 4.00 فروشگاه ساز ناپکامرس، چهارچوب ASP.NET Core، یک فناوری نسبتاً جدید و در عین حال بالغ در نظر گرفته میشد که قابلیتها و امکانات لازم برای پیادهسازی یک زیربنای مستحکم برای یک برنامه بر اساس وب (مانند فروشگاه ساز ناپکامرس) را دارا میبود. ASP.NET Core یک چهارچوب با امکانات کامل است ولی به منظور بیان بهتر دلیل انتخاب این چهارچوب، چندین مورد از امکانات مهم این چهارچوب دستچین شده و معرفی خواهند شد:
مفهوم جدید
چهارچوب ASP.NET Core از نظر مفهوم و پایه بسیار نزدیک به سیاستهای مورد استفاده تیم سازنده فروشگاه ساز ناپکامرس است. این چهارچوب به صورت منبع-باز (Open-Source) بوده و پیشرفت و گسترش آن با تمرکز و همکاری کاربران و متخصصان این چهارچوب پیگیری و پیادهسازی میشود. تمام کدهای منبع (Source Code) چهارچوب ASP.NET Core را میتوان به صورت رایگان با استفاده از لینک مشخص شده دریافت کرد.
قابل استفاده در چندین پلتفرم (قابل استفاده در چندین سیستم عامل)
یکی از امکانات مهم چهارچوب ASP.NET Core، قابلیت استفاده در چندین پلتفرم یا Cross-platform بودن است. این قابلیت به این معنی است که برنامههای ساخته شده با استفاده از این چهارچوب میتوانند در هر سه محیط Windows، Mac و Linux اجرا شوند. در حال حاضر نسخه 4.20 فروشگاه ساز nopCommerce قابلیت اجرا در دو محیط Windows و Linux را دارا است.
چهارچوب ماژولار (قسمتی، بخشی)
یکی از نوآوریهای استفاده شده در ASP.NET Core، سیستم میانافزار یا Middleware است. میانافزار یک Pipeline (تونل انتقال پیام بین بخشهای مختلف یک سیستم) سبک با کارایی بالا و با ساختار ماژولار برای ارسال و دریافت درخواستها در برنامه است. هر بخشی از Middleware یک درخواست HTTP را پردازش میکند و سپس تصمیم میگیرد که نتیجه پردازش درخواست را بازگردانده یا به قسمت دیگری از Middleware انتقال دهد. چنین رویکردی کنترل کامل بر HTTP Pipeline را در اختیار توسعه دهندگان قرار میدهد و همچنین تشویق کننده تولید و توسعه ماژولهای ساده برای یک برنامه نیز میشود. تولید و توسعه ماژولهای ساده یک امر مهم در برنامههای منبع-باز است.
کارایی
کارایی بالا و قابل قبول برای فروشگاه ساز ناپکامرس ضروری است و چهارچوب ASP.NET Core نیازهای لازم برای ارائه کارایی مناسب فروشگاه ساز را فراهم میکند. یکی از نکات مهم در بهینهسازی کارایی، فرایند کش کردن یا Caching است (فراینده ذخیره اطلاعات مهم در حافظهای با سرعت بالا ولی حجم محدود که به صورت متناوب دسترسی به آنها درخواست میشود تا سرعت پردازش افزایش یابد). چهارچوب ASP.NET Core چندین روش کش کردن را به صورت پیش فرض در خود دارد.
- روش اول کش کردن اطلاعات بر اساس IMemoryCache است. در این روش اطلاعات مورد نیاز به صورت حافظه کش در حافظه (Memory) Web Server ذخیره میشود.
- روش دوم حافظه کش توزیع شده (Distributed Cache) نام دارد. در نسخه 4.00 فروشگاه ساز nopCommerce، از روش Redis Cache استفاده میشد و هنوز از روش استاندارد ASP.NET Core بهرهبرداری نشده بود که در نسخههای آینده ناپکامرس از روش حافظه کش توزیع شده استفاده خواهد شد.
ASP.NET Core MVC
ASP.NET Core MVC امکاناتی را به منظور سادهسازی روند طراحی و توسعه مربوط به وب ارائه میدهد و فروشگاه ساز ناپکامرس (nopComerce) نیز از امکاناتی مانند الگوی Model-View-Controller (MVC)،Razor syntax ، اتصال دادن مدلها (Model Binding) و اعتبارسنجی در نسخههای قبلی (و آینده خود) استفاده کرده است تا فرایند اصلاح، توسعه و شخصیسازی فروشگاه برای توسعه دهندگان آسانتر و قابل اجرا شود. در زمان ارائه نسخه 4.00 فروشگاه ساز ناپکامرس، برخی از امکانات و قابلیتهایی که در ادامه یاد خواهند شد از جمله موارد جدید بودند که در ادامه فرایند توسعه فروشگاه ساز یا از این امکانات استفاده شده است یا استفاده خواهند شد:
- کمک کنندههای تگ (Tag Helpers): کمک کنندههای تگ، کدهای سمت سروری (کدهایی که در سرور پردازش شده و نتیجه این پردازشها به کاربر یا client ارسال میشوند) هستند که به منظور شرکت در ایجاد و رندر (Render) المانهای HTML در فایلهای Razor فعالیت میکنند. سؤالهایی که درباره کمک کنندههای تگ ممکن است به وجود آیند این است که کمک کنندههای تگ چه کمکی میکنند و چه امکاناتی برای توسعه دهندگان فراهم خواهند آورد؟
1- کمک کنندههای تگ به توسعه دهندگان این امکان را میدهند تا کدهای خود را با در نظر گرفتن استاندارهای HTML پیادهسازی کنند. این امر به این معنی است که نشانهگذاری Razor با استفاده از کمک کنندههای تگ، بسیار شبیه تگهای معمولی HTML خواهند شد. این امر به طراحان قالب (Front-end Designers) که با ساختار نحوی C# Razor آشنایی ندارند کمک کرده و فرایند طراحی و شخصیسازی قالب و تم (Theme) را بسیار آسانتر میکند.
2- استفاده از کمک کنندههای تگ به توسعه دهندگان این امکان را میدهد تا از محیط کامل و پر امکانات IntelliSense به منظور ایجاد HTML و نشانهگذاریهای Razor استفاده کنند. محیط IntelliSense به توسعه دهندگان امکان توسعه بهتر به همراه خلاقیت بالاتر را میدهد.
3- چهارچوب ASP.NET Core به صورت پیشفرض کمک کنندههای تگ فراوانی را در خود دارد که به توسعه دهندگان در فرایندهای مانند ایجاد فرمها (Form)، لینکها، بارگذاری عوامل و دیگر فرایندهای مشابه کمک میکنند.
- اجزاء صفحه نمایش داده شده (View Components): View components یک ابزار جدید و مشابه به partial view است که بسیار قدرتمندتر است. فروشگاه ساز ناپکامرس (nopCommerce) از این ابزار زمانی استفاده میکند که منطق رندر (Render) کردن عوامل قابل استفاده مجدد (منطقی که بر اساس آن نیاز نیست برای هر بخش یک صفحه کد جداگانه ایجاد شود بلکه هر قسمت از کدها به صورت جداگانه ایجاد شده و در زمانهای مورد نیاز در صفحات جداگانه آن بخش از کد به صفحه اضافه یا رند شود) مورد نیاز باشد. در چنین زمانهایی استفاده از partial view به دلیل پیچیدگی فرایند ناکارآمد است.
- فرایند تزریق وابستگی در صفحه نمایش (Dependency Injection into Views): در اکثر مواقع اطلاعات نمایش داده شده در صفحات نمایش یا Viewها، از طریق controllerها ارسال شدهاند. ناپکامرس دارای صفحات نمایش ای (View) است که استفاده از فرایند تزریق وابستگی (Dependency Injection) در آنها بیشتر قابل استفاده است.
نتیجهگیری و جمعبندی
انتقال فروشگاه ساز ناپکامرس (nopCommerce) از ASP.NET به ASP.NET Core یک قدم بزرگ در راستای پیشرفت فروشگاه ساز است که کاربران و توسعه دهندگان این فروشگاه ساز را نیز دربر میگیرد. بعد از نسخه 4.00 تغییرات زیادی در فروشگاه ساز ناپکامرس ایجاد شده است، تغییراتی که از قابلیتها و امکانات جدید ارائه شده در ASP.NET Core استفاده میکند. در عین حال مفاهیم پایه و منطقهای تجارتی استفاده شده در فروشگاه ساز و همچنین ساختار و منطق Controller و Routing بدون تغییر باقی ماندهاند.
مشابه باقی ماندن منطقهای تجاری و ساختارهای Controller و Routing به این معنی است که کاربران و توسعه دهندگانی که قبلاً از نسخههای قدیمیتر ناپکامرس استفاده میکردند، همچنان میتوانند از نسخههای جدید فروشگاه ساز نیز استفاده کنند.
استفاده از فناوریهای جدید و به روز باقی ماندن برای پلتفرمهای تجارت الکترونیک (مانند فروشگاه سازها) بسیار پر اهمیت است. در زمینه توسعه وب با استفاده از رویکرد .NET، ثابت شده است که فناوری ASP.NET Core راه پیشرفت به آینده است و انتقال دادن فروشگاه ساز ناپکامرس (nopCommerce) از ASP.NET به ASP.NET Core تضمین خواهد کرد که این فروشگاه ساز آیندهای روشن خواهد داشت.