روش متداول کار با تزریق وابستگیهای برنامههای مبتنی بر NET Core.، عموما با ثبت و معرفی یک سرویس به صورت زیر، توسط متدهای AddTransient، AddSingleton و AddScoped است: public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddTransient<ICustomerService, DefaultCustomerService>();
// ...
}
}
و سپس است ...
همانطور که در قسمت قبل نیز بررسی کردیم، ASP.NET Core امکان تزریق وابستگیهای متداول را در اکثر قسمتهای آن مانند کنترلرها، میانافزارها و غیره، میسر و پیش بینی کردهاست؛ اما همیشه و در تمام مکانهای یک برنامهی وب، امکان تزریق وابستگیها در سازندهی کلاسها وجود ندارد و مجبور به استفادهی از الگوی Service Locator میباشیم. در این قسمت این مکانهای ویژه را بررسی خواهیم کرد.
HttpContext و امکان دسترسی به Service Locatorها ...
الگوی Service locator را در قسمت دوم بررسی کردیم. همانطور که عنوان شد، بهتر است تا جائیکه امکان دارد از بکارگیری آن به علت ضدالگو بودن پرهیز کرد. در ادامه قسمتهای مختلف یک برنامهی ASP.NET Core را که میتوان بدون نیاز به استفادهی الگوی Service locator، تزریق وابستگیها را در آنها انجام داد، مرور میکنیم.
در کلاس آغازین برنامه
در اینجا در متد Configure آن تنها کافی است اینترفیس سرویس مدنظر خود را مانند IAmA ...
یکی از پرکاربردترین اینترفیسهای NET.، اینترفیس IDisposable است. عموما کلاسهایی که ارجاعی را به منابع غیر مدیریت شده مانند فایلها و سوکتها داشته باشند، این اینترفیس را پیاده سازی میکنند. garbage collector به صورت خودکار حافظهی اشیاء مدیریت شده یا دات نتی را رها میکند؛ اما چیزی را در مورد منابع غیر مدیریت شده نمیداند. به همین جهت پیاده سازی اینترفیس IDisposable روشی را جهت پاکسازی این منابع به garbage collector معرفی میکند.
...
در قسمت قبل برای دریافت وهلهای از سرویس TestService، به صورت ()<serviceProvider.GetService<ITestService عمل کردیم. این روش در اصل الگوی Service Locator نام دارد که جزئیات بیشتری از آنرا در این قسمت بررسی خواهیم کرد.
قلب سیستم تزریق وابستگیهای NET Core. اینترفیس IServiceProvider است
IServiceProvider که اساس IoC Container برنامههای مبتنی بر NET Core. را تشکیل میدهد، در اسمبلی System.ComponentModel و در ...
مهارتهای تزریق وابستگیها در برنامههای NET Core. - قسمت اول - تزریق وابستگیها در برنامههای کنسول
پیشتر با مقدمات تزریق وابستگیها در برنامههای ASP.NET Core آشنا شدهایم:
- مقدمهای بر تزریق وابستگیها درASP.NET Core - ارتقاء به ASP.NET Core 1.0 - قسمت 6 - سرویسها و تزریق وابستگیها
در ادامه در طی چند مطلب میخواهیم نکات و سناریوهای تکمیلی مرتبط با امکانات تزریق وابستگیهای توکار برنامههای مبتنی بر NET Core. را بررسی کنیم.
تزریق وابستگیها در برنامههای کنسول ...
هدف ارائه راه حلی برای مدیریت Transactionها به عنوان یک Cross Cutting Concern، توسط ApplicationServiceها میباشد. پیش نیازها: دوره Aspect oriented programming بررسی مفاهیم معکوس سازی وابستگیها و ابزارهای مرتبط با آن طراحی و پیاده سازی ServiceLayer به همراه خودکارسازی Business Validationها پیش فرض ما این است که شما از EF به عنوان OR-Mapper استفاده میکنید و الگوی Context Per Request را پیاده سازی کرده ...
پیشنیاز نقشه راه « آزمون واحد در دات نت » مطلب « طراحی و پیاده سازی ServiceLayer به همراه خودکارسازی Business Validationها » در این مطلب قصد داریم تست ServiceLayer را به جای تست درون حافظهای که با ابزارهای Mocking در قالب Unit Testing انجام میگیرد، به کمک یک دیتابیس واقعی سبک وزن در قالب Integration Testing انجام دهیم. قدم اول یک پروژه تست را ایجاد کنید؛ بهتر است برای نظم دهی به ساختار Solution، پروژهه ...
ASP.NET Core با ذهنیت پشتیبانی و استفاده از تزریق وابستگیها ایجاد شدهاست. اپلیکیشنهای ASP.NET Core از سرویسهای ذاتی فریم ورک که داخل متدهای کلاس Startup پروژه تزریق شدهاند و همچنین سرویسهای اپلیکیشن که تنظیمات خاص آنها در پروژه انجام گرفته است، استفاده میکنند. سرویس کانتینر پیش فرض ارائه شده توسط ASP.NET Core، مجموعهای حداقلی از ویژگیها را ارائه میکند و هدف آن جایگزینی با دیگر فریم ورکهای تزریق وابستگی نمیباشد. مشاهده یا دا ...
در این مطلب قصد داریم علاوه بر طراحی زیرساختی برای راه اندازی هرچه سریعتر ServiceLayer، طراحی ای برای مکانیزم Validation به عنوان یک Cross Cutting Concern ، نیز ارائه داده و آن را پیاده سازی کنیم. پیش نیازها: قبلا در سایت در مورد لایه بندی نرم افزار و ServiceLayer مطلب منتشر شده است؛ لذا مطالعه این سری مقالات برگرفته از کتاب Professional ASP.NET Design Patterns جزء پیش نیازهای این مطلب میباشد. دوره Aspect oriented p ...