ما را دنبال کنید:
image

راهنمای گام به گام برای تبدیل شدن به یک برنامه نویس ASP

در این مقاله می خواهیم همه اطلاعات لازم درخصوص نحوه تبدیل شدن به یک برنامه نویس ASP را بررسی کنیم. همه مواردی که اگر می خواهیم در این مسیر گام برداریم به صورت قدم به قدم بتوانیم بهترین راه را انتخاب کنیم و با چشمان باز در این مسیر قدم برداریم.

مطالبی که در این مقاله بررسی می کنیم عبارتند از:

  • مرحله اول- یادگیری مفاهیم پایه C#
  • یادگیری مهارتهای عمومی توسعه
  • مرحله دوم- یادگیری مقدمات پایگاه داده
  • مرحله سوم- یادگیری اصول ASP.net Core
  • یادگیری ORM
  • یادگیری وابستگی ها
  • Caching
  • مرحله چهارم- پایگاه داده های حرفه ای
  • فریم رک های LOG
  • ایجاد ارتباطات API
  • ایجاد ارتباطات Real Time
  • نگاشت شیء
  • برنامه ریزی وظایف
  • تست و آزمون
  • میکروسرویس ها
  • CI/CD
  • مرحله پنجم- معماری و طراحی نرم افزار
  • کتابخانه های سمت کلاینت
  • موتورهای Template
  • کتابخانه های بیشتر
  • ادامه: مسیر یادگیری بک اند

 

مرحله اول- یادگیری مفاهیم پایه C#

C# (با تلفظ سی شارپ) یک زبان برنامه نویسی همه منظوره و شی گرا است که توسط مایکروسافت توسعه یافته است. این زبان بخشی از خانواده زبان‌های دات‌نت است و برای ساخت طیف وسیعی از برنامه‌ها، از برنامه‌های وب و موبایل گرفته تا بازی‌ها و سرویس‌های ابری استفاده می‌شود.

سی شارپ یک زبان استاتیکی تایپ شده است، به این معنی که نوع متغیر باید در زمان اعلان مشخص شود و پس از تخصیص، نمی توان نوع آن را تغییر داد. سی شارپ همچنین از برنامه نویسی شی گرا پشتیبانی می کند، به این معنی که ویژگی هایی مانند کپسوله سازی، وراثت و چندشکلی را ارائه می دهد.

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

مرحله اول ورود به دنیای برنامه نویسی .net Core همین زبان سی شارپ است. در این مسیر این موارد را آموزش خواهید دید:

C#

.NET :

دات نت (تلفظ می شود "دات نت") یک چارچوب نرم افزاری توسعه یافته توسط مایکروسافت است که می تواند برای ایجاد طیف گسترده ای از برنامه ها از جمله برنامه های دسکتاپ و وب ویندوز، برنامه های موبایل و بازی استفاده شود. .NET Framework کتابخانه بزرگی از عملکردهای از پیش ساخته شده، شامل مجموعه ها، ورودی/خروجی فایل و شبکه را فراهم می کند که می تواند توسط برنامه های NET استفاده شود. همچنین شامل زمان اجرای زبان مشترک CLR) ) است که اجرای کد را مدیریت می کند و ویژگی هایی مانند مدیریت حافظه، امنیت و مدیریت استثنا را ارائه می دهد.

.Net CLI :

NET CLI رابط خط فرمان CLI) ) برای پلت فرم دات نت است. این ابزاری است که یک رابط مشترک برای اجرای ابزارها و ابزارهای خط فرمان .NET Core فراهم می کند. NET Core یک نسخه متقابل پلتفرم، متن باز و ماژولار از چارچوب دات نت است و NET CLI راهی برای تعامل با آن از طریق خط فرمان فراهم می کند.

دوره های برنامه نویسی C# لایتک را به صروت عملی و کاربردی از دست ندهید.

 

در کنار یادگیری زبان برنامه نویسی C# لازم است تا مهارتهای عمومی توسعه را نیز یاد بگیرید تا بتوانید به صورت حرفه ای در این مسیر گام بردارید.

مهارتهای عمومی همچون موارد زیر لازم و ضروری است:

  • Git- Version Control
  • یک سیستم کنترل نسخه توزیع شده رایگان و متن باز است که برای مدیریت همه چیز از پروژه های کوچک تا بسیار بزرگ با سرعت و کارایی طراحی شده است.
  • Azure Devops Services

Azure DevOps Services مجموعه ای از خدمات ارائه شده توسط مایکروسافت است که می تواند برای برنامه ریزی، ساخت، آزمایش و استقرار برنامه های NET استفاده شود. این خدمات می توانند با هم یا به طور مستقل برای پشتیبانی از جنبه های مختلف فرآیند توسعه نرم افزار استفاده شوند. برخی از خدمات اصلی عبارتند از:

Azure Boards: ویژگی هایی را برای برنامه ریزی و ردیابی چابک ارائه می دهد، مانند برنامه ریزی های عقب افتاده، تخته ها و برنامه ریزی سرعت.

Azure Repos: مدیریت کنترل منبع را برای مخازن Git و Team Foundation Version Control (TFVC) فراهم می کند.

Azure Artifacts: مدیریت بسته را برای بسته های NuGet، npm و Maven ارائه می دهد.

Azure Test Plans: از تست های دستی و اکتشافی و همچنین تست و آزمایش مداوم در تولید پشتیبانی می کند.

Azure Pipeline: راهی برای ساخت، آزمایش و استقرار کد به صورت خودکار با پشتیبانی از چندین زبان و پلتفرم از جمله دات نت ارائه می دهد.

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

  • GitHub, GitLab, BitBucket

سرویس های میزبانی مخزن مختلفی وجود دارد که معروف ترین آنها GitHub، GitLab و BitBucket است. ایجاد یک حساب کاربری در GitHub را توصیه می کنیم، زیرا بیشتر کارهای OpenSource در آنجا انجام می شود و بیشتر توسعه دهندگان در آنجا هستند.

  • HTTP/HTTPS Protocol
  • پروتکل ارتباطی لایه برنامه مبتنی بر TCP/IP است که نحوه ارتباط کلاینت و سرور با یکدیگر را استاندارد می کند. نحوه درخواست و انتقال محتوا در اینترنت را مشخص می کند.
  • (پروتکل انتقال ابرمتن امن) نسخه ایمن HTTP است که پروتکل اولیه ای است که برای ارسال داده ها بین مرورگر وب و وب سایت استفاده می شود.

HTTPS = HTTP + SSL/TLS

  • الگوریتمها و ساختارداده ها

همانطور که از نام آن مشخص است، ساختار داده راهی برای سازماندهی داده ها در حافظه است تا بتوان از آن به طور موثر استفاده کرد. برخی از ساختارهای داده رایج عبارتند از: آرایه، لیست پیوندی، پشته، hashtable، صف، درخت، پشته و گراف.

مرحله دوم- یادگیری مقدمات پایگاه داده

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

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

پایگاه‌های داده NoSQL ذخیره‌سازی و بازیابی داده‌ها را ارائه می‌دهند که متفاوت از پایگاه‌های داده رابطه‌ای «سنتی» مدل‌سازی می‌شوند. پایگاه‌های داده NoSQL معمولاً بیشتر بر مقیاس‌بندی افقی، ثبات نهایی، سرعت و انعطاف‌پذیری تمرکز می‌کنند و معمولاً برای داده‌های بزرگ و برنامه‌های پخش بلادرنگ استفاده می‌شوند.

در این بخش مواردی همچون زیر باید یاد فراگرفته شود:

  • اصول طراحی پایگاه های داده

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

  • مفاهیم SQL

SQL مخفف Structured Query Language است. SQL به شما امکان می دهد به پایگاه های داده دسترسی داشته باشید و آنها را دستکاری کنید. SQL در سال 1986 به استاندارد موسسه استاندارد ملی آمریکا ANSI) ) و در سال 1987 استاندارد سازمان بین المللی استاندارد ISO) ) تبدیل شد.

اگرچه SQL یک استاندارد ANSI/ISO است، اما نسخه های مختلفی از زبان SQL وجود دارد.

با این حال، برای انطباق با استاندارد ANSI، همه آنها حداقل از دستورات اصلی (مانند SELECT، UPDATE، DELETE، INSERT، WHERE) به روشی مشابه پشتیبانی می کنند.

  • رویه های ذخیره شده

رویه ذخیره شده مجموعه ای از پیش کامپایل شده از دستورات SQL است که می تواند بر روی یک سرور پایگاه داده اجرا شود. رویه های ذخیره شده معمولاً برای انجام وظایف خاص مانند بازیابی داده ها از پایگاه داده، درج یا به روز رسانی داده ها یا انجام محاسبات پیچیده استفاده می شوند. آنها در سرور پایگاه داده ذخیره می شوند و می توانند از یک برنامه مشتری یا سایر رویه های ذخیره شده فراخوانی یا اجرا شوند. رویه‌های ذخیره‌شده می‌توانند عملکرد پایگاه داده را با کاهش مقدار کد SQL مورد نیاز برای اجرا بهبود بخشند و به توسعه‌دهندگان اجازه دهند تا از کدهای رایج استفاده مجدد کنند. آنها همچنین می توانند با اجازه دادن به مدیران پایگاه داده برای کنترل دسترسی کاربران به رویه های ذخیره شده خاص، امنیت را تامین کنند.

  • محدودیت ها

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

  • محرک ها

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

رویدادهای تغییر داده (INSERT، UPDATE، DELETE) در یک جدول یا نمای خاص.

رویدادهای تعریف داده (CREATE، ALTER، DROP) بر روی اشیاء پایگاه داده خاص مانند جداول یا نماها.

رویدادهای ورود (CONNECT، DISCONNECT) که زمانی رخ می‌دهند که کاربر به پایگاه داده متصل شود یا از آن جدا شود.

 

مرحله سوم- یادگیری اصول ASP.net Core

ASP.NET Core یک چارچوب وب متن باز و چند پلتفرمی برای ساخت برنامه های کاربردی وب مدرن با استفاده از دات نت است. برخی از اصول اولیه ASP.NET Core عبارتند از Cross-platform، Open Source، Modular، High performance، MVC pattern، Dependency Injection، Middleware، Razor Pages and Razor Components، EF Core.

مواردی که در این بخش باید فراگرفت عبارتند از:

  • MVC

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

Model - Handles  منطق مربوط به داده ها را کنترل می کند. با پایگاه داده تعامل دارد.

View – Handles  بخش UI از برنامه ها را کنترل می کند (ارائه داده ها).

Controller - Handles  درخواست را کنترل می کند و به عنوان یک واسطه بین view و model عمل می کند.

  • REST

REST (Representational State Transfer)  یک سبک معماری برای ساخت خدمات وب است. در زمینه دات نت، خدمات وب RESTful را می توان با استفاده از چارچوب ASP.NET Web API ایجاد کرد، که به توسعه دهندگان اجازه می دهد خدمات مبتنی بر HTTP ایجاد کنند که می تواند توسط طیف گسترده ای از مشتریان، از جمله مرورگرهای وب و دستگاه های تلفن همراه مصرف شود. چارچوب Web API مجموعه‌ای از ابزارها و کتابخانه‌ها را برای ایجاد سرویس‌های RESTful، از جمله مسیریابی، رسیدگی به درخواست/پاسخ و پشتیبانی از انواع فرمت‌های داده مانند JSON و XML فراهم می‌کند.

  • Razor Pages

Razor Pages یکی از ویژگی‌های چارچوب ASP.NET Core است که به توسعه‌دهندگان اجازه می‌دهد تا با استفاده از ترکیبی از نشانه‌گذاری  Razor (یک نحو نشانه‌گذاری برای تعریف HTML پویا) و کد سی شارپ، برنامه‌های وب بسازند. Razor Pages بر روی چارچوب ASP.NET Core MVC (Model-View-Controller) ساخته شده است و روشی ساده تر و شهودی برای ساخت صفحات وب و مدیریت ورودی کاربر ارائه می دهد.

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

  • Razore Components

Razor Components یکی از ویژگی‌های ASP.NET Core است که به توسعه‌دهندگان اجازه می‌دهد تا اجزای قابل استفاده مجدد و مستقلی بسازند که می‌توانند در چندین صفحه یا حتی چندین برنامه استفاده شوند. Razor Components در بالای موتور نمایش Razor ساخته شده است، که به توسعه دهندگان اجازه می دهد تا با استفاده از ترکیبی از نشانه گذاری Razor و کد C#، اجزا را تعریف کنند.

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

  • MiddleWares

میان‌افزار نرم‌افزاری است که بین یک سیستم‌عامل و نرم‌افزار کاربردی قرار می‌گیرد و ارتباط و تبادل داده بین آنها را تسهیل می‌کند. در زمینه توسعه وب، میان افزار به اجزای نرم افزاری اطلاق می شود که درخواست ها و پاسخ ها را در یک برنامه وب مدیریت می کند. این مؤلفه‌ها معمولاً در یک خط لوله اجرا می‌شوند و هر مؤلفه وظایف خاصی مانند تأیید اعتبار، ثبت‌نام یا مسیریابی را انجام می‌دهد.

در چارچوب ASP.NET Core، میان افزار یک مفهوم کلیدی است که برای ساخت برنامه های کاربردی وب استفاده می شود. اجزای میان‌افزار با استفاده از رابط ApplicationBuilder به خط لوله برنامه اضافه می‌شوند و به ترتیبی که اضافه می‌شوند اجرا می‌شوند. به عنوان مثال، یک برنامه ممکن است دارای اجزای میان افزاری برای مدیریت احراز هویت، ورود به سیستم، و مسیریابی به ترتیب باشد.

  • Filters and Attributes

در چارچوب ASP.NET Core، از فیلترها و ویژگی‌ها برای افزودن قابلیت‌های اضافی به کنترل‌کننده‌ها و روش‌های عمل، مانند احراز هویت، مجوز، کش کردن و مدیریت استثنا استفاده می‌شود.

فیلترها کلاس هایی هستند که یک یا چند رابط فیلتر ارائه شده توسط فریمورک را پیاده سازی می کنند، مانند IActionFilter، IResultFilter، IExceptionFilter و IAuthorizationFilter.  فیلترها را می توان برای کنترلرها، روش های عمل یا به صورت سراسری برای کل برنامه اعمال کرد. آنها را می توان برای انجام کارهایی مانند ورود به سیستم، ذخیره سازی و مدیریت استثناها استفاده کرد.

ویژگی‌ها کلاس‌هایی هستند که از کلاس Attribute مشتق شده‌اند و برای تزئین کنترل‌کننده‌ها، روش‌های عمل یا ویژگی‌ها با ابرداده اضافی استفاده می‌شوند. به عنوان مثال، ویژگی Authorize می‌تواند برای احراز هویت کاربر قبل از دسترسی به یک روش اقدام خاص استفاده شود و ویژگی ValidateAntiForgeryToken می‌تواند برای محافظت در برابر حملات جعل درخواست بین‌سایتی (CSRF) استفاده شود.

  • App Setting and Config

در چارچوب ASP.NET Core، تنظیمات و تنظیمات برنامه به فرآیند ذخیره و مدیریت تنظیمات و داده های پیکربندی خاص برنامه اشاره دارد.

تنظیمات برنامه به جفت داده‌های کلید-مقدار اشاره دارد که یک برنامه کاربردی برای پیکربندی رفتار خود از جمله رشته‌های اتصال پایگاه داده، کلیدهای api یا تنظیمات دیگر استفاده می‌کند. این تنظیمات معمولاً در فایل‌های پیکربندی مانند appsettings.json، appsettings.development.json یا appsettings.production.json ذخیره می‌شوند و با استفاده از رابط IConfiguration قابل دسترسی هستند.

تنظیمات به فرآیند بارگیری و مدیریت تنظیمات برنامه، از جمله تعیین منبع تنظیمات و فرمت فایل های پیکربندی اشاره دارد. در ASP.NET Core، کلاس Startup مسئول پیکربندی تنظیمات برنامه است و معمولاً داده های پیکربندی را از منابع مختلف مانند فایل های JSON، متغیرهای محیطی یا آرگومان های خط فرمان بارگیری می کند.

یادگیری ORM در مرحله دوم

ORM مخفف Object-Relational Mapping است و تکنیکی است که به توسعه دهنده اجازه می دهد با استفاده از اشیا با پایگاه داده کار کند. این روشی برای انتزاع پایگاه داده است تا توسعه دهنده بتواند به جای جداول و پرس و جوهای SQL به اشیاء فکر کند. این می تواند نوشتن و نگهداری کد را آسان تر کند و همچنین عملکرد برنامه را بهبود بخشد.

در ORM لازم است تا موارد زیر یاد گرفته شود:

  • Entity Framework Core

Entity Framework Core (EF Core) یک چارچوب متن باز Object-Relational Mapping (ORM) برای دات نت است. این یک نسخه سبک وزن و چند پلتفرمی از Entity Framework است، چارچوب ORM که بخشی از چارچوب دات نت بود. EF Core به توسعه دهندگان اجازه می دهد تا با استفاده از اشیاء خاص دامنه با داده های رابطه ای کار کنند و نیاز به نوشتن دستورات SQL خام را از بین می برد. در عوض، EF Core مجموعه‌ای از APIها را ارائه می‌کند که می‌توانند برای تعامل با پایگاه داده استفاده شوند و روشی ساده و کارآمد برای انجام عملیات رایج پایگاه داده مانند پرس‌وجو، درج، به‌روزرسانی و حذف داده‌ها ارائه می‌دهند.

در این بخش، موارد زیر پیشنهاد می شود که فراگرفته شود:

  • مبانی فریم ورک

یک چارچوب ORM  (نگاشت شیء-رابطه ای) ابزاری است که اشیاء یک برنامه کاربردی را به جداول پایگاه داده نگاشت می کند و به توسعه دهندگان این امکان را می دهد تا با استفاده از مفاهیم آشنا و شی گرا با پایگاه داده کار کنند.

چارچوب های ORM ابزارهایی هستند که اشیاء یک برنامه کاربردی را به جداول پایگاه داده نگاشت می کنند و به توسعه دهندگان این امکان را می دهند تا با استفاده از مفاهیم آشنا و شی گرا مانند Entities، Mapping، Context، Queries، Lazy Loading، Change Tracking و Caching با پایگاه داده کار کنند.

  • اولین مهاجرت های کد

Code First Migrations یکی از ویژگی های Entity Framework است که به شما امکان می دهد کلاس های مدل را در برنامه خود تغییر دهید و سپس آن تغییرات را در پایگاه داده منتشر کنید. وقتی از Code First Migrations استفاده می کنید، Entity Framework دستورات SQL لازم را برای به روز رسانی طرح پایگاه داده برای مطابقت با کلاس های مدل تولید می کند.

برای استفاده از Code First Migrations، باید آن را در برنامه Entity Framework خود فعال کنید. این را می توان با افزودن یک مرجع به بسته Entity Framework Migrations NuGet و سپس فعال کردن Migrations در برنامه خود انجام داد.

پس از فعال شدن Migrations، می توانید از کنسول Package Manager برای اضافه کردن یک انتقال جدید به برنامه خود استفاده کنید. این یک کلاس ایجاد می کند که حاوی دستورات SQL لازم برای به روز رسانی طرح پایگاه داده است. سپس می توانید از دستور Update-Database برای اعمال مهاجرت به پایگاه داده استفاده کنید.

  • API Tracker را تغییر دهید

Change Tracker API یکی از ویژگی‌های چارچوب‌های ORM  (نگاشت شیء-رابطه‌ای)، مانند Entity Framework Core است که به توسعه‌دهندگان اجازه می‌دهد تغییرات موجودیت‌ها را ردیابی کنند و به‌طور خودکار آنها را در پایگاه داده باقی بمانند.

Change Tracker API معمولاً از طریق کلاس context که کلاس اصلی است که اتصال به پایگاه داده را مدیریت می کند و دسترسی به موجودیت ها را فراهم می کند، نمایش داده می شود.

هنگامی که یک موجودیت از پایگاه داده بازیابی می شود، Change Tracker API آن را به عنوان "بدون تغییر" علامت گذاری می کند. هنگامی که یک ویژگی موجودیت اصلاح می شود، Change Tracker API موجودیت را به عنوان "تغییر یافته" علامت گذاری می کند. و هنگامی که یک موجودیت جدید به زمینه اضافه می شود، Change Tracker API آن را به عنوان "افزوده شده" علامت گذاری می کند.

  • Lazy Eager Explicit Loading

Eager Loading

Eager Loading به شما کمک می کند تا همه موجودیت های مورد نیاز خود را به یکباره بارگیری کنید. به عنوان مثال، تمام موجودیت های فرزند شما در یک تماس پایگاه داده بارگیری می شوند. این را می توان با استفاده از روش Include به دست آورد، که موجودیت های مرتبط را به عنوان بخشی از پرس و جو برمی گرداند و حجم زیادی از داده ها به یکباره بارگذاری می شود.

Lazy Loading

این رفتار پیش‌فرض یک Entity Framework است، که در آن یک موجودیت فرزند تنها زمانی بارگیری می‌شود که برای اولین بار به آن دسترسی داشته باشید. این به سادگی بارگذاری داده های مرتبط را به تاخیر می اندازد، تا زمانی که شما آن را درخواست کنید.

  • Dapper

Dapper یک نقشه‌نگار شی-رابطه‌ای سبک وزن برای چارچوب دات‌نت است. این طراحی شده است تا دسترسی سریع و ساده به داده های ذخیره شده در یک پایگاه داده را با نگاشت داده ها به اشیاء در برنامه فراهم کند.

Dapper به شما کمک می کند تا بدون نیاز به یک ORM با امکانات کامل مانند Entity Framework، کدی کارآمد و مختصر برای تعامل با پایگاه داده بنویسید. مجموعه ای از روش های توسعه را برای رابط IDbConnection ارائه می دهد که می توانید از آنها برای اجرای پرس و جوهای SQL و نگاشت نتایج به اشیاء با تایپ قوی استفاده کنید.

  • RepoDB

RepoDB یک کتابخانه متن باز ORM  (نگاشت شیء-رابطه ای) برای دات نت است که فرآیند کار با پایگاه های داده را ساده می کند. این یک کتابخانه سبک وزن، سریع و آسان برای استفاده است که یک API ساده و سازگار برای انجام عملیات های رایج پایگاه داده مانند پرس و جو، درج، به روز رسانی و حذف داده ها را فراهم می کند.

RepoDb بر روی ADO.NET ساخته شده است، که فناوری دسترسی به داده های بومی در دات نت است و انتزاع سطح بالاتری را در بالای آن ارائه می دهد. این به RepoDb اجازه می دهد تا از عملکرد و مقیاس پذیری ADO.NET استفاده کند و در عین حال یک API ساده تر و راحت تر برای توسعه دهندگان ارائه دهد.

  • NHibernate

NHibernate یک چارچوب متن باز Object-Relational Mapping (ORM) برای دات نت است. این یک چارچوب قدرتمند و منعطف است که می تواند کار با داده های رابطه ای را در دات نت بسیار ساده کند. NHibernate شبیه سایر چارچوب‌های ORM مانند Entity Framework و RepoDb است که انتزاع سطح بالاتری را در بالای فناوری دسترسی به داده (در این مورد ADO.NET) فراهم می‌کند و به توسعه‌دهندگان اجازه می‌دهد با داده‌ها با استفاده از اشیاء خاص دامنه کار کنند، از بین بردن نیاز به نوشتن دستورات SQL خام.

NHibernate از مفهوم «فایل‌های نگاشت» استفاده می‌کند که فایل‌های XML هستند که نحوه نگاشت کلاس‌های برنامه را به جداول و ستون‌های پایگاه داده تعریف می‌کنند. این فایل های نگاشت برای ایجاد یک مدل مفهومی از داده ها در قالب کلاس ها استفاده می شوند و سپس NHibernate از این مدل برای تولید عبارات SQL لازم برای تعامل با پایگاه داده استفاده می کند.

یادگیری وابستگی ها

تزریق وابستگی (DI) یک الگوی طراحی نرم افزار است که برای مدیریت وابستگی های یک برنامه استفاده می شود. این تکنیکی است که به توسعه‌دهندگان اجازه می‌دهد تا با جدا کردن مسئولیت ایجاد و مدیریت اشیا از خود اشیا، کدهایی را که با هم جفت شده‌اند بنویسند.

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

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

تزریق وابستگی ها شامل موارد زیر می شود:

  • Scrutor
  • DI containers
  • Microsoft.Extensions.DependencyInjection
  • Autofac
  • Ninject
  • Castle Windsor 
  • Simple Injector
  • Lifecycles
  • Scoped
  • Transient
  • Singleton

 

  • Scrutor

Scrutor یک کتابخانه متن باز برای دات نت است که عملکرد چارچوب تزریق وابستگی داخلی را در NET Core گسترش می دهد. مجموعه ای از روش های توسعه را برای رابط IServiceCollection ارائه می دهد که می تواند برای ثبت و پیکربندی خدمات به روشی راحت تر و انعطاف پذیرتر استفاده شود.

یکی از ویژگی های اصلی Scrutor توانایی آن در اسکن خودکار مجموعه ها برای خدمات و ثبت آنها با کانتینر تزریق وابستگی است که به شما امکان می دهد از ثبت دستی هر سرویس یک به یک خودداری کنید. همچنین یک API روان ارائه می‌کند که پیکربندی سرویس‌ها را آسان می‌کند، مانند تعیین طول عمر یک سرویس، اضافه کردن دکوراتورها و موارد دیگر.

  • Containers DI

کانتینر تزریق وابستگی (DI) یک جزء نرم افزاری است که وظیفه مدیریت وابستگی های یک برنامه را بر عهده دارد. برای ایجاد و مدیریت نمونه‌هایی از اشیا و وابستگی‌های آن‌ها استفاده می‌شود و به ویژه برای پیاده‌سازی اصل وارونگی وابستگی در توسعه نرم‌افزار مفید است.

یک کانتینر DI معمولاً از دو بخش اصلی تشکیل شده است: یک API پیکربندی که برای ثبت انواع و وابستگی‌های آنها استفاده می‌شود و یک API رزولوشن که برای بازیابی نمونه‌هایی از انواع ثبت‌شده استفاده می‌شود. کانتینر DI به طور خودکار وابستگی های اشیایی را که ایجاد می کند حل می کند و طول عمر اشیاء و وابستگی های آنها را مدیریت می کند.

  • تزریق وابستگی افزونه های مایکروسافت

Microsoft.Extensions.DependencyInjection یک چارچوب تزریق وابستگی است که بخشی از بسته Microsoft.Extensions.DependencyInjection NuGet است. برای ایجاد و مدیریت نمونه هایی از اشیا و وابستگی های آنها استفاده می شود و به ویژه برای پیاده سازی Dependency Inversion Principle در برنامه های NET مفید است.

این بسته یک API ساده و سازگار برای ثبت خدمات و رفع وابستگی ها ارائه می دهد که می تواند برای پیکربندی و مدیریت طول عمر اشیاء در یک برنامه استفاده شود. همچنین پشتیبانی داخلی برای انواع مختلف طول عمر خدمات مانند transient, singleton و scoped را فراهم می‌کند.

  • Autofac

Autofac یک چارچوب تزریق وابستگی متن باز برای دات نت است. این برنامه به گونه ای طراحی شده است که مدیریت وابستگی های یک برنامه را با حل خودکار و مدیریت طول عمر اشیا و وابستگی های آنها آسان تر کند.

 

Autofac از تکنیکی به نام "ثبت مولفه" برای تعریف اشیاء و وابستگی های یک برنامه استفاده می کند. این کار با ایجاد نمونه هایی از کلاس ContainerBuilder و استفاده از متدهای آن برای ثبت انواع نمونه ها و کارخانه ها انجام می شود. سپس، متد Build()  برای ایجاد یک نمونه از رابط Icontainer فراخوانی می شود که می تواند برای حل وابستگی ها در سراسر برنامه استفاده شود.

  • Ninject

Ninject یک چارچوب تزریق وابستگی متن باز برای دات نت است. این برنامه به گونه ای طراحی شده است که مدیریت وابستگی های یک برنامه را با حل خودکار و مدیریت طول عمر اشیا و وابستگی های آنها آسان تر کند.

Ninject از تکنیکی به نام "binding" برای تعریف اشیاء و وابستگی های یک برنامه استفاده می کند. این کار با ایجاد نمونه هایی از کلاس StandardKernel و استفاده از متدهای آن برای ثبت انواع نمونه ها و کارخانه ها انجام می شود. سپس متد Get()  فراخوانی می شود تا وابستگی ها را در سراسر برنامه حل کند.

  • Castle Windsor

Castle Windsor یک چارچوب تزریق وابستگی متن باز برای دات نت است. این برنامه به گونه ای طراحی شده است که مدیریت وابستگی های یک برنامه را با حل خودکار و مدیریت طول عمر اشیا و وابستگی های آنها آسان تر کند.

Castle Windsor از تکنیکی به نام "ثبت نام" برای تعریف اشیاء و وابستگی های یک برنامه استفاده می کند. این کار با ایجاد نمونه هایی از کلاس WindsorContainer و استفاده از متدهای آن برای ثبت انواع، نمونه ها و کارخانه ها انجام می شود. سپس، متد Resolve()  فراخوانی می‌شود تا وابستگی‌ها را در سراسر برنامه حل کند.

  • Simple Injector

Simple Injector یک چارچوب تزریق وابستگی منبع باز برای دات نت است. این برنامه به گونه ای طراحی شده است که مدیریت وابستگی های یک برنامه را با حل خودکار و مدیریت طول عمر اشیا و وابستگی های آنها آسان کند.

Simple Injector از تکنیکی به نام "ثبت نام" برای تعریف اشیاء و وابستگی های یک برنامه استفاده می کند. این کار با ایجاد یک نمونه از کلاس Container و استفاده از متدهای آن برای ثبت انواع، نمونه ها و کارخانه ها انجام می شود. سپس، متد GetInstance()  فراخوانی می شود تا وابستگی ها را در سراسر برنامه حل کند.

  • چرخه های زندگی

در ASP.NET، چرخه های حیات تزریق وابستگی (DI) طول عمر اشیایی را که از طریق کانتینر DI حل می شوند را تعیین می کند. چندین گزینه چرخه حیات از پیش تعریف شده در کتابخانه Microsoft.Extensions.DependencyInjection وجود دارد، از جمله:

Transient: هر بار که درخواست می شود یک نمونه جدید از شی ایجاد می شود.

Scoped: یک نمونه جدید از شی برای هر درخواست در همان محدوده ایجاد می شود.

Singleton: یک نمونه از شی ایجاد شده و در کل برنامه به اشتراک گذاشته می شود.

علاوه بر این، می‌توانید با پیاده‌سازی رابط Microsoft.Extensions.DependencyInjection.IServiceScopeFactory، یک چرخه عمر سفارشی ایجاد کنید.

  • Caching

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

موضوعات مهم در بخش Caching عبارتند از:

  • Memory caching
  • Entity Framework Core(EF Core)
  • distributed cache
  • Memcached
  • Redis
  • StackExchange.Redis
  • EasyCaching

  • مرحله چهارم- پایگاه داده های حرفه ای

در یک برنامه ASP.NET انواع مختلفی از پایگاه داده وجود دارد که می توان از آنها برای ذخیره و بازیابی داده ها استفاده کرد. برخی از رایج ترین پایگاه های داده عبارتند از:

  • پایگاه داده های رابطه ای
  • پایگاه های داده NoSQL
  • پایگاه داده های درون حافظه
  • پایگاه های داده تعبیه شده
  • پایگاه داده های مبتنی بر ابر

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

مواردی که در پایگاه های داده باید مدنظر قرار دهیم عبارتند از:

  • موتورهای جستجو

موتور جستجو در یک برنامه ASP.NET ابزار یا ماژولی است که به کاربران اجازه می دهد اطلاعات خاصی را از پایگاه داده برنامه یا سایر منابع داده جستجو و بازیابی کنند. موتورهای جستجو را می توان برای انجام جستجوی متن کامل، جستجوی وجهی و جستجوی مکانی و سایر موارد استفاده کرد.

موتورهای جستجو را می توان با استفاده از کتابخانه ها یا فریم ورک هایی که یک کلاینت دات نت را برای تعامل با موتور جستجو فراهم می کند در یک برنامه ASP.NET ادغام کرد. برخی از موتورهای جستجوی محبوبی که می توانند با یک برنامه ASP.NET ادغام شوند عبارتند از Elasticsearch، Apache Solr، Sphinx و Microsoft Azure Search.

  • رابطه ای

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

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

نمونه ای از پایگاه داده های رابطه ای عبارتند از:

  • SQL Server
  • PostgreSQL
  • MariaDB
  • MySQL

 

 

  • ابری

Cloud در زمینه ASP.NET به استفاده از خدمات رایانش ابری برای میزبانی و اجرای برنامه های وب ASP.NET اشاره دارد. رایانش ابری مدلی از ارائه منابع محاسباتی (مانند سرورها، ذخیره‌سازی و برنامه‌های کاربردی) از طریق اینترنت بر اساس پرداخت به ازای استفاده است.

در مورد ASP.NET، ارائه دهندگان ابری مانند Microsoft Azure، Amazon Web Services (AWS) و Google Cloud Platform (GCP) خدماتی را ارائه می دهند که به طور خاص برای میزبانی و اجرای برنامه های وب ASP.NET طراحی شده اند. این خدمات شامل ماشین‌های مجازی، نقش‌های وب و محاسبات بدون سرور است که می‌توان از آنها برای استقرار و اجرای برنامه‌های وب ASP.NET در فضای ابری استفاده کرد.

پایگاه های داده ابری عبارتند از:

  • DynamoDB
  • CosmosDB

 

  • Nosql

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

انواع مختلفی از پایگاه‌های داده NoSQL مانند پایگاه‌های داده اسناد، پایگاه‌های داده کلیدی-مقدار، پایگاه‌های داده گراف و پایگاه‌های داده ستون-خانواده وجود دارد که هر کدام ویژگی‌ها و موارد استفاده منحصربه‌فرد خود را دارند. برخی از نمونه های پایگاه داده NoSQL عبارتند از MongoDB، Cassandra، RavenDB، CouchDB و Redis.

Log Frameworks

در ASP.NET، log Framework ها کتابخانه هایی هستند که راهی برای ثبت و تجزیه و تحلیل داده ها در یک برنامه کاربردی فراهم می کنند. برخی از فریمورک های لاگ معروف برای ASP.NET عبارتند از:

  • Serilog
  • NLog
  • Log4Net
  • ELMAH
  • Microsoft.Extensions.Logging

اینها برخی از محبوب ترین فریم ورک های لاگ در ASP.NET هستند، هر کدام از آنها مجموعه ای از ویژگی ها و موارد استفاده خاص خود را دارند و انتخاب اینکه کدام چارچوب ورود به سیستم استفاده شود به نیازهای خاص برنامه بستگی دارد.

  • Clients API

کلاینت های API در ASP.NET کتابخانه های نرم افزاری هستند که به برنامه ها اجازه می دهند با API های خارجی تعامل داشته باشند. آنها مجموعه ای از روش ها و کلاس ها را ارائه می دهند که ارسال درخواست ها به یک API و پردازش پاسخ ها را آسان می کند.

از مشتریان API می توان برای دسترسی به خدمات متنوعی مانند خدمات وب، سرویس های ابری و پلت فرم های رسانه های اجتماعی استفاده کرد. از آنها می توان برای انجام کارهایی مانند واکشی داده ها، ارسال به روز رسانی ها و حذف منابع استفاده کرد.

کلاینت های API در ASP.NET معمولاً با استفاده از کلاس HttpClient ساخته می شوند که بخشی از فضای نام System.Net.Http است. این کلاس مجموعه ای از روش ها را برای ارسال درخواست های HTTP و دریافت پاسخ های HTTP ارائه می دهد.

مواردی که در API Clients باید در نظر گرفت عبارتند از:

  • REST (Representational State Transfer) 
  • OData (Open Data Protocol)
  • Sieve
  • gRPC
  • GraphQL
  • GraphQL .NET
  • Hot Chocolate

 

  • نگاشت شیء

نگاشت آبجکت در ASP.NET به فرآیند تبدیل یک شی از یک نوع به یک شی از نوع دیگر اشاره دارد. این می تواند در تعدادی از سناریوها مفید باشد، مانند هنگام کار با مدل های دامنه و اشیاء انتقال داده (DTO) در معماری لایه ای، یا هنگام نگاشت بین نسخه های مختلف یک شی یا فرمت های مختلف مانند JSON و XML.

چندین کتابخانه برای نگاشت شی در ASP.NET وجود دارد، مان