برنامه نویس - اسکرام مستر - DevOps

۳ مطلب با موضوع «آموزشی :: برنامه نویسی سی شارپ مقدماتی» ثبت شده است

مشاهده کدهای Asp.Net Core Identity

کد کنترلرها و View ها کجاست؟ 

این پیاده سازی از معماری MVC به Razor Pages تغییر یافته است، که در آن تمامی صفحات Razor در یک کتابخانه مجزا اجرا می شوند. 

سورس این کدها در ریپوزیتوری GitHub موجود است. 

جهت اطلاع:

بسته جدید NuGet که به آن ارجاع شده است Microsoft.AspnetCore.Identity.UI است.

صفحات Razor به شما اجازه می دهند که قسمتی از یک کد را بصورت مستقل در خود صفحه یا یک صفحه code-behind نمایش دهید.

در صورت نیاز به سفارشی سازی بیشتر این صفحات، می توانید برای ایجاد صفحات خود به سورس کدی که در GitHub بدان اشاره شد مراجعه کنید، تا ببینید چه کلاس های CSS-ی برای شخصی سازی آن مورد استفاده قرار می گیرد. 

همچنین یک راه آسان برای سفارشی سازی صفحات از Visual Studio وجود دارد. 

مراحل انجام کار:

تمام آنچه شما باید انجام دهید این است که در Solution Explorer ،بروی پروژه مورد نظر خود راست کلیک کرده و به زیر منوی گزینه Add بروید در آنجا گزینه New Scaffold Item را انتخاب کنید، و در پنجره نمایش داده شده از قسمت Identity گزینه Identity را انتخاب کرده و دکمه add را بزنید. با این کار تمامی صفحات Identity را می توانید در برنامه override کنید.

پنجره dialog جدیدی باز می شود که به شما اجازه می دهد تا همه صفحات یا صفحاتی که باید برای اعمال تغییرات override کنید را انتخاب کنید.

برای نمونه، صفحه ورود به سیستم و ثبت نام در تصویر فوق انتخاب شده است. می توانید صفحات تولید شده را در قسمت Area/Identity پیدا کنید. 

اکنون می توانید UI را به همراه code-behind برای نیاز خود بصورت کامل مشاهده و شخصی سازی کنید.


 

۰ نظر موافقین ۰ مخالفین ۰
محمدحسین عزتی

چرا با توجه به اینکه تنظیمات SMTP درست است ایمیل ارسال نمی شود؟

اگر در زمان ارسال ایمیل در کد خود با این پیام

"The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required"

برخورد می کنید.

لطفا موارد زیر را بررسی کنید

  1. صحت کلمه عبور وارد شده
    (یک بار با همین پسورد مجدد به اکونت خود لاگین کنید.)
  2. زمانی که شما سعی می کنید از یک برنامه جانبی برای اولین بار به حساب کاربری خود وارد شوید
    (برای این کار به حساب کاربری خود در گوگل وارد شوید و به لینک زیر بروید
    https://www.google.com/settings/security/lesssecureapps
    و گزینه اجازه ورود به برنامه های نا امن را فعال کنید (Allow less secure apps: ON)
    بدین صورت شما می توانید از تمامی برنامه ها به حساب کاربری خود وارد شوید.)
  3. در برخی مواقع بدلیل اختلاف زمانی یا IP سروری که برنامه را بروی آن پابلیش کردید این اتفاق رخ می دهد
    (در سرور مورد نظر یک بار به حساب کاربری خود وارد شوید)

۰ نظر موافقین ۱ مخالفین ۰
محمدحسین عزتی

مقایسه Interface و Abstract Class و زمان استفاده از آن

 مقایسه Interface و Abstract Class و زمان استفاده از آن 

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

Interface   چیست ؟


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

در حالت عادی ارث بری از چند کلاس به طور هم زمان امکان پذیر نیست ولی Interface ها این مزیت را دارند که به هر تعداد که لازم است ، کلاسهای مشتق شده  از آنها ارث بری کنند . این موضوع یکی از مهم ترین مزایای Interface می باشد .

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

Abstract Class  چیست ؟


کلاس Abstract  یکی از ابزارهای  مهم OOP  می باشد که نمیتوان از آنها نمونه ای ساخت . به عبارتی دیگر نمی توانیم متغیری از کلاس Abstract  تعریف کنیم .

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

با توجه به تعاریف ذکر شده کلاس Abstract  حالتی بین کلاسهای معمولی و Interface ها میباشد و کلاسی میباشد که غیر قطعی و ناتمام میباشد که باید در سطح فرزندانش تکمیل شود .
 مزایای کلاسهای Abstract  چیست ؟

یکی از مزیت های کلاس Abstract  فراهم نمودن کلاس پایه برای  دیگر کلاسهای مشتق شده  می باشد با این توضیح متدهای آن می توانند کد نویسی شده باشند یا نه . از طرفی پیاده سازی تمام متدهای Abstract  در کلاس مشتق شده اجباری نیست .(برخلاف Interface)  .

تعریف سطوح دسترسی برای متدها و خصوصیتها مانند کلاسهای معمولی نیز یکی دیگر از مزیت های این کلاسها می باشد .
 تفاوت بین کلاسهای Abstract و Interface

1-      یک کلاس معمولی می تواند از یک کلاس Abstract ارث بری کند ولی همان کلاس میتواند از چندین Interface ارث ببرد .

2-      یک Interface  فقط میتواند اعلان متدها و خصوصیتها را داشته باشد اما یک کلاس Abstract  علاوه بر آنها میتوانید متدها و خصوصیتهایی با کدهای کامل داشته باشد .

3-      عناصر موجود در کلاس Abstract میتوانند مانند یک کلاس معمولی دارای سطح دسترسی باشند  ولی Interface  ها فاقد این امکان می باشند .

4-      وقتی شما متدی را به کلاس Abstract اضافه می کنید ، اگر این متد Abstract  نباشد به طور خودکار به همه زیر کلاسها اعمال می شود اما در Interface اگر متدی اضافه کنید باید در تمام زیر کلاسها آن را اعمال کنید .

5-      کلاس Abstract   مانند کلاسهای معمولی می توانند دارای فیلد و عناصر دیگری باشند در حالی که Interface  فاقد این امکان می باشد .

6-      Abstract  یکی از انواع کلاس است ولی Interface   کلاس نیست .

 
چه زمانی از Interface  ها یا کلاسهای Abstract استفاده کنیم ؟

با توجه به توضیحات ذکر شده  مواقعی که نیاز به وراثت چند گانه داریم باید از Interface استفاده کنیم ، به دلیل اینکه این امکان در کلاس های Abstract  وجود ندارد .

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

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

با توجه به اینکه به غیر از اعلان متدها و خصوصیتها امکان تعریف عناصر دیگر در Interface  ها وجود ندارد ، در صورتی که ملزم به استفاده  از این عناصر باشیم ، استفاده از کلاسهای Abstract  ضروری می باشد .

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

به طور کلی Interface ها چارچوب و قابلیتهای کلاس را مشخص میکند و یک قرارداد است  ولی کلاس Abstract  نوع کلاس را معین می کند . این تفاوت کمک بسیاری برای تشخیص زمان استفاده از این دو را  ، به برنامه نویسان میدهد .
۰ نظر موافقین ۰ مخالفین ۰
محمدحسین عزتی