• ASP.NET Core 1 – قسمت چهارم
ASP.NET Core 1 – قسمت چهارم
1395/01/26 - 11:14:51 // MVC 5 & 6 // 1 نظر // 4566 بازدید

در این قسمت هدف این است که دسترسی مستقیم به محتوای فایل appsettings.Json را متوقف کرده و با استفاده از یک Application Service یا چیزی شبیه به یک Application Component بتوان این پیام را تشخیص داده و آنرا در Browser نمایش داد.

بسمه تعالی

ASP.NET Core 1 قسمت چهارم

در این قسمت هدف این است که دسترسی مستقیم به محتوای فایل appsettings.Json را متوقف کرده و با استفاده از یک Application Service یا چیزی شبیه به یک Application Component بتوان این پیام را تشخیص داده و آنرا در Browser نمایش داد. داشتن چنین وضعیتی تقریبا یا میتوان گفت 80 درصد شبیه وجود دیتابیس یا کلن Data Source واقعی خواهد بود هر چند در قسمتهای بعدی و وقتی یک MVC Project واقعی ایجاد کردیم ، خواهید دید که کار با Data Base هم چگونه ساده و روان خواهد شد .

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

بر روی Solution یک Right Click انجام داده و از طریق گزینه Add یک فولدر جدید به نام Services به پروژه اضافه کنید . درون این فولدر، یک کلاس جدید به نام Greeter اضافه کنید .

خوب الان یک کلاس به نام Greeter داریم و وقت آن است که کدنویسی را آغاز کنیم . ابتدا درون NameSpace تعریف شده در سطح بالایی کلاس ، یک Interface جدید به نام IGreeter ایجاد میکنیم .درون این Interface یک متد برای دریافت پیامها نیاز دارم که نام آنرا GetGreeting خواهیم گذاشت و خروجی آن هم String خواهد بود.

  1. public interface IGreeter  
  2.   
  3. {  
  4.   
  5. string GetGreeter();  
  6.   
  7. }  
 

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

فعلن کار اصلی تغییر متدهای درون Startup.CS بوده تا بتوان با IGreeter در ارتباط بود . برای اینکار باید یک پارامتر جدید به متد Configure اضافه کنیم . مطابق تصویر زیر این کار را انجام داده ، ضمن اینکه مراقب افزودن NameSpace متعلق به کلاس یعنی در اینجا بر اساس نام پروژه using ASPNETCORE1.Services; باید باشید .

  1. public void Configure(IApplicationBuilder app,IGreeter greeter)  
 

این تنها Header متد است و هنوز تغییر دیگری در بدنه متد داده نشده است .

در این مرحله از متد GetGreeting به سادگی استفاده خواهم نمود .

 

خوب مطابق تصویر بالا دیگر پیام از طریق یک Service به سمت متد ارسال خواهد شد ، ولی مسئله اینجاست که اگر الان پروژه را Run کنیم با یک پیام خطا روبرو می شویم .

 

مساله اینجاست که این Interface برای متد ConfigureService اصلن تعریف شده نیست . راه حل Register کردن این کلاس در Servicecollection موجود در این متد است . اگر یک Break Point بر روی پارامتر ورودی این متد بگذاریم ، خواهید دید که 17 سرویس پیش فرض در حال Support شدن است .

 

حالا برای حل مشکل ، این Interface را به لیست سرویسها Add خواهم کرد . نوع این سرویس را Singleton فرض خواهم کرد و از متد پیش فرض آن استفاده میکنم.

 

الان وقت آن است که دوباره پروژه با Run کنیم . اگر همه چیز را به درستی انجام داده باشید ، الان باید باز پیام درون متد GetGreeter را دریافت کنید .

 

تا اینجا یک Custom Service ساختیم و یک پیام از طریق متد درون آن ارسال شد که به لیست سرویسهای متد درون فایل Startup افزوده شده و توانستیم خروجی این متد را شکار کنیم .

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

  1. public string GetGreeter()  
  2.   
  3. {  
  4.   
  5. return "Hello from iliasoft.ir!!";  
  6.   
  7. }  
 

این متد باید محتویات فایل appsettings را نمایش دهد نه یک پیام ثابت را .

برای حل این مساله ، اول باید برای کلاس Greeter یک متد سازنده ایجاد کنم این متد سازنده باید دارای ورودی IConfiguration نیز باشد . موقع استفاده از این Interface باز مواظب Add شدنNameSpace آن باشید . البته خود VS.NET آنرا به شما Suggest خواهد کرد و در صورت سرپیچی هم با پیام خطا روبرو خواهید شد .

یک متغیر Private ایجاد کرده و با استفاده از کلید greeting که مشخص کننده کدام یک از محتویات فایل Json ما میباشد ، مقدار عبارت را برای ما به متغیر ارسال خواهد کرد . وضعیت تا به اینجا مشابه تصویر زیر خواهد بود .

 

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

 

با افزودن این خط کد و اجرای پروژه ، باید پیام درون فایل Json به ما نمایش داده شود .

خوب تا اینجا توانستیم یک Json فایل ساخته و محتوای آنرا از طریق یک سرویس که خودمان ایجاد کردیم دریافت و در خروجی نمایش دهیم . تا همینجا حداقل توانستیم با شکل کارکرد پروژه های Core 1 تا حدودی آشنا شویم. این نوع عملیات که انجام دادیم ، برای دریافت تنظیمات و متغیرهای کلیدی از هر دیتاسورسی برای کار در سطح پروژه مناسب خواهد بود . البته هنوز ما وارد MVC 6 یا همان Core 1 نشده ایم و اکر مثلن Model یا Controller ندیده اید ، تعجب نکنید . در قسمتهای بعدی خواهید دید که چگونه یک پروزه MVC به معنای واقعی ساخته شده و همه استانداردهای MVC درون آن رعایت خواهد شد .

علی کلاهدوزان
معرفی نویسنده : علی کلاهدوزان

سلام بر دوستان ،
شاید رایج است به عنوان پروفایل کاربر ، چند خطی راجع به خودم بنویسم ، ولی وضعیت کاری و سوابق من با یک جستجوی ساده در گوگل مشخص خواهد شد ، لذا سرتان را با مطالب بی مورد به درد نیاورم بهتر است . اگر نکته خاصی لازم بود بدانید در قسمت "ایلیا سافت در یک نگاه" به احتمال زیاد یافت خواهد شد . جزئیات بیشتر را سوال کنید ، آدرس ایمیل Ali@Kolahdoozan.com همیشه جوابگوی شماست .امیدوارم از مطالب سایت استفاده کرده باشید . شاد و پیروز باشید .

امتیاز به مطلب
           
نظرات کاربران
  • ab
    1395/03/31 - 14:49:35

    0
    0
    سلام وقتی در http://iliasoft.ir/p.aspx?name=p&id=8 بروی قسمت دوم کلیک می کنیم صفحه 4(همین صفحه )باز میشود
     
    --
    درست شده است. 
ارسال نظر