انجام Migration از ASP.NET WebForms به Blazor

درس بعدی از سری آموزش Blazor برای برنامه نویسی ASP.NET Web Forms به صورت رایگان در این قسمت از وب سایت پرووید به شما تقدیم می گردد در خدمت شما هستیم در صورت تمایل حتماً توصیه می‌کنیم که از بسته ی آموزش ویدئویی Authentication و Authorization در بلیزر (Blazor) و بسته ی آموزش ویدئویی بلیزر (Blazor) پیشرفته و ساخت برنامه های تجاری و بسته ی آموزش ویدئویی شروع به کار با Blazor در ASP.NET Core وبسایت پرووید دیدن کنید. ضمنا حتماً قسمت های قبلی این آموزش نیز مطالعه کنید چرا که درک کردن هر کدام از قسمت ها نیازمند مطالعه کردن قسمت‌های پیشین می باشد. علاوه بر آموزشی که در حال حاضر در حال مطالعه کردن آن هستید می توانید از آموزش متنی توسعه وب با ASP.NET Core Blazor نیز دیدن کنید.انجام Migration از اپلیکیشن نوشته شده در ASP.NET Web Forms به Blazorانجام Migration و یا منتقل کردن یک کد بیس از تکنولوژی ASP.NET Web Forms به Blazor یک کار زمان‌بر است که نیاز به برنامه‌ریزی جدی دارد. در این درس و درس های بعدی در رابطه با این فرایند صحبت خواهیم کرد. یکی از موضوعات بسیار مهمی که می‌تواند این Migration و یا انتقال را ساده تر کند این است که برنامه از معماری چند لایه و یا N-tier استفاده نمایند. در این رابطه می توانید از بسته ی آموزش ویدئویی برنامه نویسی چند لایه در سی شارپ سری اول و بسته ی آموزش ویدئویی برنامه نویسی چند لایه در سی شارپ سری دوم دیدن کنید.در معماری ‌های چند لایه در واقع، مدل که در این قسمت Web Forms ما می‌باشد از Business Logic برنامه کاملاً تفکیک شده است. این تفکیک لایه ها که به صورت منطقی اتفاق می‌افتد امکان منتقل کردن کدهای برنامه به Blazor را ساده تر خواهد کرد. برای بررسی کردن روند Migration یک اپلیکیشن با استفاده از ASP.NET Web Forms به Blazor ما از یک اپلیکیشن نمونه به نام EShop که بر روی گیت هاب قرار داده شده است استفاده می‌کنیم. ضمنا برای یادگیری Github می توانید از بسته ی آموزش ویدئویی گیت هاب (GitHub) و مبانی استفاده کردن از آن دیدن کنید.اپلیکیشن EShop در واقع یک Catalog Service است که قابلیت‌های CRUD را با استفاده از Form Entry و یا وارد کردن داده ها و همچنین Validation در خود جای داده است. حال سوالی که ممکن است مطرح شود این است که چرا نیاز است که یک اپلیکیشن از ASP.NET Web Forms به Blazor منتقل شود؟ اولین پاسخ ما به این سوال، این است که در بسیاری از موارد اصلا انجام دادن چنین کاری ضرورتی ندارد. فریم ورک ASP.NET Web Forms برای سال های پیش رو نیز توسط مایکروسافت پشتیبانی خواهد شد، با این وجود بسیاری از ویژگی‌های منحصر به فرد Blazor فقط زمانی در دسترس شما قرار می گیرد که برنامه را به این فریم ورک منتقل کنید. برخی از این قابلیت ها شامل موارد زیر هستند:بهبود های‌ در Performance برنامه با استفاده از قابلیت هایی شبیه کلاس Span<T>امکان اجرا کردن برنامه با استفاده از WebAssembly در سمت کلاینتپشتیبانی Corss-Platform برای لینوکس و macOSاستفاده کردن از App-local Deployment و یا Shared Framework Deployment بدون تاثیر گذاردن بر روی دیگر اپلیکیشن های موجوداگر این نوع از قابلیت ها را می پسندید و می خواهید از آنها استفاده کنید راهی به جز Migrate کردن برنامه از ASP.NET Web Forms به Blazor ندارید. البته ذکر این نکته نیز ضروری است که مراحل انجام Migration می تواند به شکل های مختلفی انجام بشود. در واقع شما می توانید یک اپلیکیشن را به طور کامل از ASP.NET Web Forms به Blazor منتقل کرده و یا فقط تعدادی از Endpoint های خاص آن را که نیاز به تغییرات دارند مورد Migration قرار بدهید. تصمیم بر اینکه اپلیکیشن به طور کامل Migrate بشود و یا نه، به نیازمندی هایی که برنامه نویس در حال پیاده سازی کردن آنها می باشد بستگی دارد.بررسی مدل میزبانی Server-side و Client-sideهمانطور که در فصلهای قبلی بررسی کردیم در ساخت اپلیکیشن های Blazor دو مدل میزبانی و یا Hosting مدل به صورت Server-side و Client-side در اختیار ما قرار می‌گیرند.در مدل Server-Side در واقع یک اتصال از نوع Asp.NET Core SignalR مسئول مدیریت کردن آپدیت های مربوط به DOM می باشد. در این نوع از مدل میزبانی کد برنامه بر روی سرور اجرا خواهد شد در رابطه با SignalR می توانید از بسته ی آموزش ویدئویی شروع به کار با ASP.NET Core و SignalR دیدن کنید.این در حالی است که مدل میزبانی Client-side برنامه را با استفاده از WebAssembly و تمام آن در مرورگر کاربر اجرا کرده و نیاز به هیچگونه اتصال به سرور ندارد.تفاوت های متعددی بین این دو مدل میزبانی وجود دارند که آنها را برای اپلیکیشن های مختلف مناسب می کند برخی از این موارد را در قسمت زیر مشاهده خواهید کرد:اجرا کردن برنامه با استفاده از WebAssembly هنوز هم در حال توسعه دادن میباشد و تمامی قابلیت ها از قبیل Threading در حال حاضر پشتیبانی نمی شوند.اپلیکیشن هایی که نیاز به رد و بدل کردن اطلاعات زیادی بین کلاینت و سرور دارند ممکن است در مدل میزبانی Server-side دچار Latency و یا تاخیر های چشمگیری بشود.دسترسی پیدا کردن به دیتابیس ها و یا سرویس های Internal و Protected نیازمند یک سرویس جداگانه با مدل میزبانی Client-side دارند.در زمان تولید کردن این آموزش توسط وب سایت پرووید مدل میزبانی Server-side بیشتر بهترین ASP.NET Web Forms شبیه است، بنابراین در این قسمت و قسمت های بعدی ما تمرکز خود را بیشتر بر روی مدل میزبانی Server-side گذاشتیم .این درس را در این قسمت به پایان خواهیم رساند و در قسمت بعدی به طور رسمی وارد ایجاد کردن یک پروژه جدید و اقدام به Migrate کردن برنامه خواهیم شد.