کدهک
1.92K subscribers
1.3K photos
7 videos
1 file
681 links
آموزشگاه تخصصی دات نت

https://codehaks.com

لینکدین :
https://www.linkedin.com/in/codehaks

یوتیوب:
https://www.youtube.com/@codehaksfa

ارتباط با مدیر :
Admin: @codehak
Email: ghods.hakim@hotmail.com
call: 09380146555
Download Telegram
ابزار Tag Helper ها در ASP Core جایگزینی برای HTML Helper ها هستند. با استفاده از -asp فعال میشوند و کدهای تمیزتری میسازند.
مسیر اجرای یک برنامه ی ASP Core 2 از متد Main در فایل program.cs شروع میشود. سپس سازنده ی کلاس startup.cs اجرا میشود. در ادامه کدها ConfigureServices و Configure اجرا میشوند.
در فایل startup.cs وجود سازنده ی کلاس و متد ConfigureServices اختیاری است. اما متد Configure حتما باید وجود داشته باشد. در غیر این صورت برنامه اجرا نخواهد شد.
سایت DigiKala در صفحات داخلی از React برای رابط کاربری استفاده میکند.
آشنایی با کد سازی

در بسیاری از موارد کد شما از الگوی یکسانی پیروی میکند. بسیاری از جداول در دیتابیس نیاز به عملیات های CRUD دارند. با توجه به اینکه قالب کلی سایتها یکدست است عملا همه ی صفحات نمایش ، ایجاد ، ویرایش و حذف مشابه هستند. این فرمها فرق میکند اما تفاوت فقط در نام مدلها و فیلدهاست و در ساختار کد نیست.

اینجاست که میتوانید از کد سازها بهره بگیرید. کد ساز با دریافت پارامتر کد میسازد. تصور کنید بجای تایپ کردن انبوهی از کد آن را یکجا دریافت کنید. البته درست است که کدهای تولید شده بی نقص نیستند اما همیشه می توانید با کمی ویرایش به خواسته ی خود برسید.

در این روش کار شما بیشتر شبیه ویرایش کردن کدهای یک برنامه ی آماده است بجای اینکه آن را از اول بنویسید. این تکنیک سرعت کار شما را بالا میبرد و ضریب خطا را کم میکند. سرعت کار شما حداقل دو تا سه برابر افزایش میابد و چون کدها توسط ماشین تولید میشود خطای تایپی ندارد و چیزی از قلم نمیوفتد.

مشکل کد ساز این است که هیچکدام خوب نیست مگر آنکه خودتان طراحی کرده باشید. ما معمولا از نام گذاری ها و نوشتار مخصوص به خود در کد نویسی استفاده میکنیم و کد ساز هم باید این موضوع را شامل شود. پس بهترین راه این است که کار با کد سازها را یاد بگیریم.

هدف از برنامه ی کد ساز تولید سریعتر کد است . لازم نیست کد ساز از اصول استاندارد پیروی کند یا بسیار تمیز پیاده شود. تنها کافی است کد مورد نیاز شما را تولید کند. پس نباید وقت زیادی روی آن صرف کنید . به این موضوع توجه کنید که کد ساز تنها یک وسیله است و نه هدف شما.
کد ساز برای قالب پرتال

با استفاده از این کد ساز میتوانید از روی کلاس مدل همه ی لایه های پروژه را با یک دستور کد سازی کنید

https://github.com/codehaks/CodeGen-Core
قالب پرتال

این قالب به صورت چند لایه و با استفاده از ASP MVC Core 2 پیاده شده است.
https://github.com/codehaks/Portal-Core-Fa

این لایه ها شامل UnitOfWork و Repositiry و Service میشود. برای هر مدلی که به پروژه اضافه میکنید این لایه ها باید پیاده شوند. کد نویسی این لایه ها نسبتا یکسان است و کدهای مشابه زیادی دارد. از این رو برای سرعت بخشیدن به روند کار یک کد ساز با استفاده از T4 ایجاد کردم که فایلهای ریپوزیتوری و سرویس ، ViewModel ها و همچنین کنترلر و ویوی هر قسمت را از روی کلاس Model می سازد.

جهت دانلود کد ساز به آدرس زیر مراجعه کنید
https://github.com/codehaks/CodeGen-Core
روش استفاده از کد ساز

1- ابتدا باید برنامه را دانلود و بیلد کنید
2-مسیر برنامه را در Path در Windows Enviroments اضافه کنید تا همه جا از طریق CMD در دسترس باشد
3- کلاس مدل را ایجاد کنید
4-برنامه را در مسیر فولدر Models با استفاده از دستور gen اجرا کنید.
دقت کنید که ابتدا عبارت gen و بعد نام کلاس مدل و بعد نوع دستور و در انتها Area قرار میگیرد.
مانند gen product go admin

5- انواع دستور :
ایجاد همه ی فایلها به صورت یکجا : go
ایجاد ویود مدل : vm
ایجادسرویس : sr
ایجاد ریپوزیتوری : rp
ایجاد کنترلر : cr
ایجاد ویوها : vi

6- این کد ساز عملیات CRUD را به صورت خودکار پیاده میکند. بعد از پیاده سازی معمولا نیاز به انجام تغییرات کوچک دارید. مثلا ممکن است مدل شما نیاز به عملیات حذف نداشته باشد و میتوانید کدهای آن قسمت را بردارید. همینطور ویو ها ساده طراحی شده اند و شامل همه ی فیلدهای مدل میشوند.

7- هنوز کد ساز بعضی از کارها را انجام نمیدهد. مثلا باید خودتان سرویس را به Dependency Injection اضافه کنید یا مدلها و ویو مدلها را به AutoMapper اضافه کنید. این عملیاتها چندان وقتگیر نیست . امیدوارم در آینده ی نزدیک با استفاده از Roslyn این بخش را هم به پروژه اضافه کنم.
روزلین یا Roslyn کامپایلر جدید #C و VB است که به صورت متن باز پیاده شده و به شما امکان آنالیز کد را از طریق کد میدهد.
مقایسه ای بین HTML Helper های قدیم و Tag Helper های جدید که در ASP Core معرفی شده است.

کدامیک را میپسندید ؟
قابلیت جدید ASP Core 2.0 قسمت Razor Page است که به شما امکان میدهد بدون استفاده از کنترلر روی ویو برنامه نویسی کنید.
معرفی Razor Pages در ASP Core 2.0

ویوهای Razor Page با عبارت page@ در ابتدای صفحه مشخص میشوند و دارای پسوند cshtml هستند. در نگاه اول هیچ فرق اساسی بین ویوهای Razor و Razor Page دیده نمیشود. اما Razor Page ها دارای یک فایل کد پس زمینه هستند.

این فایل با پسوند cshtml.cs همنام با فایل Razor Page است و همراه آن ساخته میشود. این فایل نقش Code Behind را داراست. چیزی شبیه فایل کد مخصوص فرم در WinForm . شما می توانید عملیات های POST یا GET روی ویو را مستقیما در این فایل کد نویسی کنید و دیگر نیاز به کنترلر جدا ندارید.

سیستم Razor Page بخشی از MVC جدید ASP Core است و همزمان در کنار Controller ها قابل استفاده است. یعنی مجبور به استفاده یکی یا دیگری نیستید. اگر نیاز به ارسال پارامتر به ویو داشته باشید می توانید آن را درون Code Behind تعریف کنید و در View مقدار دهی کنید.

امکان استفاده از تزریق وابستگی و کنترل معکوس در Razor Pages وجود دارد و بر خلاف ظاهرش کاملا کاربردی است. به نحوی که شما می توانید بجای استفاده از سیستم MVC همیشگی کل پروژه های خود را با Razor Pages پیاده سازی کنید.

از مزایای اصلی Razor Page یکپارچه سازی کدهای هر قسمت و جمع کردن آنها درون یک فولدر است. در MVC مدلها ، ویوها و کنترلر ها هر کدام در فولدهای خودش قرار میگیرد که مدیریت کد را مشکل میکند.

این قابلیت جدید هنوز در ابتدای راه است و نمی توان گفت جای MVC را به طور کامل می گیرد اما گزینه ای است که برنامه نویسان ASP مدتها به دنبالش بودند.
در ASP Core 2 می توانید ویوها را کامپایل کنید و به فایل اصلی پروژه اضافه کنید. در این حالت پابلیش کردن پروژه ساده تر میشه ولی امکان تغییر فایل های ویو رو بعد از انتشار از دست میدهید.
تکنولوژی Docker یک راه برای انتشار نرم افزار است که کدهای شما را مستقل از نوع سیستم عامل اجرا میکند. راه حل مناسب برای انتشار در انواع هاست می باشد.
دیتابیس SQLite سبک است و بدون نیاز به سرور مرکزی کار میکند. از این رو برای پروژه های کوچک مناسب است.
در این جدول محدودیت های SQLite که در EF Core پشتبانی میشود لیست شده است.
دوره ی آموزشی مبانی برنامه نویسی در ASP Core

تعداد ویدیو ها : 25 قسمت
مدت زمان : یک ساعت و 56 دقیقه
حجم دانلود : 166 مگابایت
کیفیت فایها : 720p
فرمت فایلها : mp4
لینک دانلود : http://codehaks.com
در EF Core برای ایجاد کلیدهای ترکیبی باید از Fluent API استفاده کنید و دیگر Attribute ها قابل استفاده نیستند.
در ASP Core می توانید بجای استفاده از IISExpress از خود سایت برای میزبانی و اجرای سایت استفاده کنید. این قابلیت با استفاده از Kestrel ممکن میشود.
در ASP Core وقتی از Self-Hosting استفاده می کنید روند اجرای برنامه با جزئیات کامل در لوگ ثبت میشود و می توانید آن را در CMD مشاهده کنید.
این جزئیات شامل عملیات های SQL در EntityFramework هم میشود.
آشنایی با Anaemic Domain Model و Rich Domain Model

یک Anaemic Domain Model به مدلی (کلاس) گفته میشود که فقط دارای خصوصیات است و از خودش رفتاری ندارد. در واقع یک سری Property دارد بدون آنکه متدی درونش تعریف شده باشد.
طبیعی است که این نوع مدل ها امکان اعتبار سنجی از داده های خود را ندارند. معمولا وقتی از یک ADM استفاده می کنید لایه ی سرویس عملیات Validation ، Business Logic را انجام میدهد. که نتیجه اش داشتن لایه سرویس قطور با انبوه کد است.

در مقابل Rich Domain Model سهم بیشتری از عملیات را درون خود انجام میدهد و سعی می کند بر مبنای برنامه نویسی شی گرا حداکثر استفاده را از قابلیت های یک Class ببرد. در نتیجه Service Layer کوچکتر شده و یا ممکن است اصلا وجود نداشته باشد.

در بسیاری موارد ADM یک Anti-pattern شناخته میشود . مخصوصا اگر Business Logic در پروژه پیچیده باشد مدیریت کردن داده ها به صورت فرآیندی ( متدها) مشکل میشود. اما این مسئله مطلق نیست. اگر بخواهیم اصول SOLID را در برنامه نویسی در نظر بگیریم داشتن یک کلاس که همه کار انجام میدهد با اصلی که می گوید هر کلاس تنها و تنها باید مسئول انجام یک کار باشد در تضاد است.

در نهایت شما باید به هدف فکر کنید. باید بسنجید با توجه به شرایط موجود کدام روش مناسب است. آیا پروژه خود را بر اساس مفاهیم و الگوها پیاده می کنید یا از الگوها و مفاهیم برای پیاده سازی پروژه خود استفاده می کنید ؟