PDA

View Full Version : نگاهی به Razor Pages در ASP Core



hakim22
سه شنبه 21 فروردین 1397, 18:04 عصر
تیم ASP Core تلاش زیادی می کند استفاده از Razor Pages را بجای MVC جا بندازد. الگوی MVC سالها از محبوبترین روشهای پیاده سازی سایت بوده است اما اشکالاتی هم دارد.


در الگوی MVC همیشه نیاز به کنترلر دارید. حتی وقتی می خواهید یک صفحه ی ساده "ارتباط با ما" نمایش دهید علاوه بر View باید کنترلر و اکشن داشته باشید. همچنین مدل و ویو و کنترلر در فولدرهای مجزا نگه داری میشوند و مدیریت کردن پروژه در درازمدت سخت میشود. اگر بخواهید یک کنترلر را به همراه مدل و ویوهایش به یک پروژه ی دیگر منتقل کنید با دردسرهای زیادی روبرو هستید.


در Razor Pages دیگر کنترلر نداریم و اکشن ها می توانند درون فایل ویو یا در یک فایل همنام ویو (مانند کلاسهای Win Form) قرار گیرند. در الگوی MVC در واقع Controller اهمیت ندارد بلکه اکشن های درون کنترلر هستند که درخواستها را مدیریت می کنند. این دقیقا بخشی است که Razor Pages روی آن تاکید دارد.


وقتی از Razor Pages استفاده می کنید تمام قابلیتهای MVC را دارید. Razor Page بخشی از MVC است و هر دو درون یک سرویس بارگذاری میشوند. وقتی یک پروژه ی MVC در ASP Core ایجاد می کنید همزمان Razor Page هم به پروژه اضافه میشود. (حتی اگر از آن استفاده نکنید). می توانید بخشی از سایت را MVC و بخش دیگر را با Razor Page طراحی کنید.


در Razor Page طراحی سایت بجای کنترلر روی صفحه تمرکز دارد. ابتدا صفحه ی HTML را ایجاد می کنید و سپس اکشن های آن را (اگر لازم داشت) می سازید. برای سایتهایی که صفحات زیادی دارند گزینه ی مناسبی است اما برای وب سرویس ها یا پروژه هایی که از AJAX زیاد استفاده می کنند کارایی ندارد.


مایکروسافت تاکید می کند که Razor Page فقط برای طراحی سایت های کوچک نیست و می توانید برای پیاده سازی هر سایتی از آن استفاده کنید. اما برنامه نویسان پر سابقه ی MVC هنوز با شک و تردید به این تکنولوژی نگاه می کنند.

r4hgozar
جمعه 24 فروردین 1397, 12:23 عصر
سلام.
با این کار در واقع داره بر می گرده به نسل قبلی که همون asp.net هستش؟
یعنی با هر صفحه ای که می سازین یک صفحه ایجاد می شه که مدیریت همون صفحه رو در دست می گیره!!؟؟

hakim22
شنبه 25 فروردین 1397, 14:55 عصر
با این کار در واقع داره بر می گرده به نسل قبلی که همون asp.net هستش؟
یعنی با هر صفحه ای که می سازین یک صفحه ایجاد می شه که مدیریت همون صفحه رو در دست می گیره!!؟؟

خیر به هیچ وجه برگشت به عقب نیست. اصلا قرار نیست مانند Web Form کار کنید. استفاده از Razor Page فقط نیاز به کنترلر رو از بین میبره. هر صفحه متدهای خودش رو مدیریت میکنه.
در واقع تمرکز پیاده سازی پروژه بجای کنترلر میره روی صفحات سایت.

در MVC اول کنترلر بعد اکشن بعد مدل و بعد ویو رو پیاده می کنید.
ولی در Razor Page اول ویو بعد مدل و بعد متد رو پیاده می کنید.
ممکنه یک ویو اصلا نیاز به اکشن نداشته باشه و مستقیم لود میشه. و طراحی از پایین به بالا هست و نه از بالا به پایین.

استفاده از Razor Page اجباری نیست و فقط در حد یک پیشنهاد است. گرچه موافقان و مخالفان خودش رو داره. همانطور که گفتم برای سایتهایی که صفحه زیاد دارند و کمتر از جاوا اسکریپت و AJAX استفاده می کنند گزینه ی بسیار خوبیه و حجم زیادی از کدها رو کم میکنه.

davidrobert
سه شنبه 02 بهمن 1397, 01:12 صبح
سلام و خسته نباشید بنده هم با شما موافق هستم واقعا Razor Pages خیلی بهتر هستش. ولی تازه خودم شروع کردم با مشکلات زیادی برخورد کردم ولی بخاطر دردسر فراوان MVC به هیچ عنوان حاضر نیستم برم سمت MVC یعنی میخواهیم یک سایت بسازیم که یک میلیون Controllers داره و از طرفی یک میلیون یا حتی بیشتر View داره یعنی بخواهی این دو تا رو پیدا کنی خود من به شخصی عصبی میشم ولی امیدوارم بابت Razor Pages منابع بیشتر بیشه چون وقعا بخواهیم با Controller کار بشه اعصاب خورد کنی بیشتر هستش ولی این تکنولوژی کدنویسی اش کم هستش و راحت همه چیز مستقیر یکجا تعریف میشه عالیه ولی فقط امیدوارم منابع باشه انقدر روی اینترنت با تاکید کامل گفتم لطفا گوگل فقط Core Pages بیار ولی بدبختی همه اش میره سراغ MVC که خسته ام کرده من رو اگه منابع یا آدرسی فقط Pages باشه سراغ داشته باشید بدید ممنون میشم. همین الان با یه مشکل خنده دار برخورد کردم که اصلا درست نمیشه این تایپک بنده هستش لینک (http://barnamenevis.org/showthread.php?553593-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D9%85%D8%AA%D9%86-%D8%B1%D8%A7%D8%B3%D8%AA-%D8%A8%D9%87-%DA%86%D9%BE-%D8%AF%D8%B1-Asp-core-razor-pages&p=2409302#post2409302)تاپیک منم سعی میکنم هرچی از این Pages گیر بیارم قرار بدم دارم سعی میکنم یه فایل اموزشی خیلی ساده درست کنم مثل دفتر تلفن با Razor Pages با ADO به صورت Helper واقعا تو این تکنولوژی کم آوردم دستورات نمایش و ذخیره نوشتم و جواب گرفتم نمایش، ذخیره و ویرایش ولی خیلی از دستورات دیگه هم هستن واقعا هر لحظه کار سختر میشه چون منابعی نیست فقط آدرس یا آموزش خوب باشه ممنون. به بنده هم بدید با تشکر

ali_md110
جمعه 05 بهمن 1397, 19:52 عصر
یک سایت بسازیم که یک میلیون Controllers داره و از طرفی یک میلیون یا حتی بیشتر View داره یعنی بخواهی این دو تا رو پیدا کنی خود من به شخصی عصبی میشم
واقعا سایت شما یک میلیون کنترولر یا یک میلیون ویو نیاز دارد؟
بنظرم راه را اشتباه میرید و mvc را خوب مطالعه نکردید

davidrobert
شنبه 06 بهمن 1397, 16:49 عصر
واقعا سایت شما یک میلیون کنترولر یا یک میلیون ویو نیاز دارد؟
بنظرم راه را اشتباه میرید و mvc را خوب مطالعه نکردید

سایتی که برای خودم میخوام بسازم شامل تمام نرم افزار های حسابداری آنلاین در یک سایت هستش و حتی بیشتر از یک میلیون کنترولر داره.
بنده یک بار با MVC پروژه درست کردم بخاطر اینکه همه چیز جدا هستش ازش زده شدم یک کنترولر ایجاد میشه و برای هر رویداد یک ویو یعنی 4 تا عملیات بخواهم ایجاد کنم میشه یک کنترولر و یک 4 تا ویو که از هم جدا هستن.
اگه یک میلیون کنترولر بسازم باید حداقل یک تا 4 میلیون ویو ساخته بشه خدا بخیر کنه پیدا کردن اینها رو ولی داخل Pages دیدم خیلی قوی تر داره برخورد میکنه و راحتر ولی چون این تکنلوژی تازه امده این نوع تکنولوژِ منبع آموزشی نداره و از 100 درصد 5 درصد میشه مطالبش رو حتی داخل سایت های خارجی پیدا کرد ولی در سایت های داخلی هیچی پیدا نمیشه. آموزش های پولی زیادی بود دانلود کردم رایگان ولی متسفانه همه شون داخل MVC گیر هستن و سراغ Pages نرفتن

ali_md110
شنبه 06 بهمن 1397, 23:07 عصر
کنترولر قسمت فرماندهی برنامه شماست در mvc الزامی نداریم به ازای هر 4 عمل اصلی یک موجودیت یک کنترولر واحد بسازیم
ما میتوانیم به ازای 1 اکشن یا 100 تا اکشن یا هر تعداد اکشن دلخواه فقط یک کنترولر داشته باشیم
مهم این است که اکشن های مرتبط به همدیکه درون یک کنترولر قرار بدیم و مراقب شلوغ شدن کنترل هم باشیم
فرض کنیم در یک سیستم حسابداری قسمتی هست برای معرفی کالا
میتوان فقط یک کنترولر بنام Product ساخته و توی این کنترولر به معرفی و ویرایش موجودیتهایی مانند انبارکالا -کالا -واحد کالا -یا سایر خصوصیتهای یک کالای تجاری بپردازیم
و نیاز نیست به ازای موجودیتی مثل واحد کالا یک کنترولر بسازیم بنام UnitController
یا یک کنترولر فقط برای جدول کالا داشته باشیم و فقط 4 تا اکشن جهت عمل اصلی Crud این موجودیت در این کنترولر داشته باشیم

شما میتونید در همین سیستم حسابداری بخش فروش شامل -اکشن فروش کالا-و اکشن برگشت فروش در یک کنترولر قرار بدید
در ضمن در MVC تمپلیتها و پارشال ویوها کلی کارایی دارند و مانع از ساختن ویوهای تکراری خواهد شد.

Xcalivorse
چهارشنبه 10 بهمن 1397, 22:26 عصر
با نظر دوستی که در مورد یک میلیون کنترلر صحبت کردن اصلا موافق نیستم و نمیفهمم ایشون میخوان روی چه پروژه ای کار کنند!!! اما در مورد mvc باید بگم ساختار فوق العاده و بینظریش که کاملا منطبق با ذات HTTP طراحی شده باعث میشه آدم سختی ساخت چندتا کنترلر و ویو اضافی رو به جون بخره ولی در این سیستم ساختار یافته و عالی بمونه.