کدهک
1.92K subscribers
1.3K photos
7 videos
1 file
680 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
ابزار Identity در ASP Core مسئولیت تشخیص هویت و کنترلر دسترسی را به عهده دارد. در نسخه ی جدید می توان از سه روش Role و Claim و Policy دسترسی کاربران را مدیریت کرد.
انواع هویت سنجی در ASP Core Identity

ابزار Identity در ASP Core مسئولیت تشخیص هویت و کنترلر دسترسی را به عهده دارد. این ابزار در نسخه های قبل هم وجود داشت اما مانند سایر قسمتها باز نویسی شده است. در اینجا به سه روش اصلی کنترل دسترسی در Idenity Core می پردازیم.

روش Role-Based

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

روش Claims-Based

نسخه ی جدید ASP Core تاکید زیادی به استفاده از این روش دارد. در این روش یک کاربر می تواند چند هویت داشته باشد. هر هویت مشخصه های خودش را دارد. دسترسی های یک کاربر بر اساس مشخصه های هر هویت فرق می کند. مثلا شما برای گرفتن وام به بانک مراجعه می کنید و برای شناسایی کارت ملی ارائه می کنید. مشخصات کارت ملی بخشی از مشخصات شما شامل نام و تاریخ تولد را نشان می دهد و یکی از هویت های شما محسوب میشود. حالا اگر بخواهید وام دانشجویی بگیرید باید ثابت کنید دانشجو هستید. در این مرحله کارت دانشجویی ارائه می کنید که شامل نام دانشگاه و شماره ی دانشجویی است. در سیستم Claims-Based انواع مشخصات شما در یک جدول key/value دخیره می شود و بعدا می توانید دسترسی به اکشن ها و کنترلر ها را بر اساس آن محدود کنید.

روش Policy-Based

این شیوه ترکیبی از روشهای قبل است. می توانید برای اجرای هر کدام از اکشنها یک سیاست یا Policy تعریف کنید که می تواند شامل مجموعه از سمت ها و مشخصه های هویتی (Claims) باشد.

علاوه بر اینها چند روش دیگر هم وجود دارد و باید گفت نسخه ی جدید از هر نظر کامل است. به طور کلی پیاده کردن سیستم امنیتی پیچیده است و بهتر است همیشه از Identity استفاده کنید. این سیستم بسیاری از نکات مهم مانند رمز نگاری را به خوبی رعایت کرده است و سطح امنیت سایت را به میزان قابل توجهی بالا می برد.
داکر وابستگی نرم افزار به سیستم عامل را از بین می برد و ASP Core به طور کامل از آن پشتیبانی می کند. هر داکر شامل یک یا چند کانتینر است که کد پروژه و دیتابیس را درون یک فایل جای میدهد.
چرا Docker طرفدار دارد ؟

در گذشته اگر می خواستید یک برنامه ی ASP با دیتابیس MSSQL در سرور لینوکس اجرا کنید باید یک ماشین مجازی می ساختید و روی آن ویندوز نصب می کردید و بعد تازه دات نت و SQL Server نصب می کردید. تازه می توانستید سایت را روی IIS اجرا کنید.

وقتی از Docker استفاده می کنید نیاز به ماشین مجازی ندارید. علاوه بر این نیاز به نصب نرم افزارهای جانبی مانند SQL Server هم ندارید. می توانید کل سایت و دیتابیس و حتی کل SQL Server را درون یک فایل که اصطلاحا Container خوانده میشود قرار دهید و آن را در لینکوس با یک خط فرمان اجرا کنید. با داکر یک برنامه همه جا یکسان کار میکند. در واقع با داکر عبارت معروف " روی سیستم من که اجرا میشه " دیگر از بین میرود.

هر چند ASP Core خودش در لینکوس و macOS قابل اجرا است اما استفاده از Docker عملیات انتشار سایت را بسیار ساده می کند. مخصوصا وقتی که برنامه ی شما قرار است روی چند سرور اجرا شود یا قصد جابجایی آن را به یک سرور جدید داشته باشید فقط باید یک فایل را کپی کنید.

خیلی از نرم افزارها نسخه ی Docker دارند که مانند Nuget از Docker Hub قابل دانلود و نصب است. مثلا SQL Server 2017 را می توانید با حجم 2 گیگ روی هر سیستمی اجرا کنید بدون اینکه نیاز به طی کردن مراحل طولانی نصب داشته باشد. IIS و Node و MySQL و Redis و حتی سیستم عامل Ubuntu هم از طریق Docker قابل نصب است.

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

در حال حاضر Docker سر و صدای زیادی به پا کرده و مقالات و کتابهای زیادی در مورد آن منتشر می شود. بسیاری از شرکتها تمامی کارهای سرور را با Docker انجام می دهند و تخصص در این زمینه می تواند فرصت های شغلی زیادی ایجاد کند.
مقایسه ساختار بین Docker و Virtual Machine
دیتابیس RavenDB از نوع Document است و در زبان سی شارپ با دات نت Core برنامه نویسی شده است.
کجا باید از RavenDB استفاده کنیم ؟

دیتابیس های Document نوع خاصی از دیتابیس های غیر SQL است که تمرکزش روی ذخیره ی اطلاعات به شکل سند است. هر سند دارای خصوصیات مدل است و "نشانی "دارد که مشخص می کند نوع اطلاعات ذخیره شده در سند چیست.

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

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

اما در RavenDB یا دیتابیس های مشابه مانند MongoDB و CouchDB کافی است یک کلاس برای محصول جدید ایجاد کنیم و اطلاعات را ذخیره کنیم. دیتابیس خودش با ترفندهایی که دارد اطلاعات مشابه را به Collection تبدیل می کند .

استفاده از RavenDb برای همه ی کارها مناسب نیست همانطور که SQL همیشه بهترین راه حل نیست. بهتر است برای هر کاری ابزار خودش را بشناسیم. ضمن اینکه تجربه ی کار با یک نوع متفاوت دیتابیس می تواند افق های جدیدی برای شما باز کند.
مقایسه مسیر پیاده سازی پروژه به دو روش MVC و Razor Page در ASP Core
فریم ورک Vue.js با "شیب ملایم" در حال رشد است و به زودی خود را به صدر بهترین های SPA میرساند.
چرا Vue.js را دوست داریم ؟

1- یکی از بهترین داکیومنت ها را دارد و یاد گیری آن ساده است.

2- لازم نیست برای شروع کار با آن مراسم بپا کنید و چند جور نرم افزار نصب کنید.

3- نیازی به Node یا NPM ندارد. می توانید مانند jQuery فایل آن را به هر صفحه ی وب اضافه کنید.

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

5- یک فریم ورک پیشرونده است و بر اساس نیازهای شما امکانات بیشتری در اختیارتان قرار میدهد.

6- هم امکانات Angular و React را دارد هم می تواند مانند Knockout شما را سریع به هدف برساند.

7- کار خودش را میکند و تصمیمات آن تحت تاثیر رقابت های کاذب بین غول های نرم افزاری نیست.
پروژه ی دمو - پیاده سازی CRUD با RavenDB

در این پروژه با استفاده از دیتابیس RavenDB و فریم ورک ASP Core MVC 2.0 یک برنامه ی ساده ی مدیریت باگ پیاده می کنیم. برای ذخیره و بازیابی اطلاعات از Client API در RavenDB استفاده شده است.

نکته ی مهم در مورد RavenDB این است که ID ها را بر اساس الگوریتم hi/lo میسازد و در آنها از کاراکتر "/" استفاده می شود. این مسئله در Routing محیط ASP Core کمی دردسر ساز بود. اما با تغییر پیش فرضهای RavenDB حل شد.

سورس پروژه را می توانید از آدرس زیر دانلود کنید :

https://github.com/codehaks/BugRaven
آمار نشان میدهد اگر بارگذاری سایت در موبایل بیشتر از 3 ثانیه طول بکشد 53 درصد کاربرها آن را ترک می کنند.
موتور ElasticSearch به شما امکان میدهد حجم بالایی از اطلاعات را در سریعترین زمان ممکن ذخیره ،جستجو و پردازش کنید.
آشنایی با Elasticsearch

با استفاده از ElasticSearch می توانید اطلاعات با حجم بالا را با سرعت زیاد جستجو کنید.

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

می توانید دیتابیس های جاری را به آن وصل کنید. در واقع معمولا از ES به عنوان دیتابیس کمکی جهت جستجو استفاده می شود. اگرچه قابلیت استفاده مستقیم هم دارد. همه چیز در ElasticSearch درون یک وب سرویس انجام می شود.

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

این ابزار با Java پیاده شده و برای اجرای آن یا باید Docker داشته باشید یا از JVM استفاده کنید. از ES معمولا در کنار ابزاری مانند Kibana و Logstash استفاده می شود. این ابزار سورس باز است و رایگان عرضه می شود اما برای پشتبانی های بعدی هزینه دریافت می کند.
پیش نمایش دوم ASP Core 2.1 منتشر شد.