در قسمت قبل ، نحوهی پیاده سازی الگوی Decorator را با استفاده از امکانات تزریق وابستگیهای NET Core. بررسی کردیم؛ اما ... این روزها کسی Decoratorها را دستی ایجاد نمیکند. یعنی اگر قرار باشد به ازای هر کلاسی و هر سرویسی، یکبار کلاس Decorator آنرا با پیاده سازی همان اینترفیس سرویس اصلی و فراخوانی دستی تک تک متدهای سرویس اصلی تزریق شدهی در سازندهی آن انجام دهیم، آنچنان کاربردی به نظر نمیرسد. به همین منظور کتابخانههایی تحت عنوان Dynamic ...
الگوی decorator، امکان محصور کردن یک شیء مفروض را با لایهای بر فراز آن میسر میکند. برای مثال بجای اینکه در تمام متدهای سرویسی از try/catch استفاده کنیم، میتوانیم این متدها را با یک ExceptionHandlingDecorator مزین کنیم و یا از این دست اعمال تکراری میتوان به لاگ کردن ورودی و خروجیهای یک متد و یا کش کردن اطلاعات آنها نیز اشاره کرد. حتی عملیاتی مانند تشخیص خواص تغییر یافتهی یک شیء در Entity framework نیز به کمک همین مزین کنندهها که شیء ...
فرض کنید در برنامهی خود، یک سرویس جنریک را طراحی کردهاید. برای مثال خود ASP.NET Core به همراه سرویس جنریک <ILogger<T است و اگر برای نمونه بخواهیم آنرا در سازندهی کنترلری مانند ValuesController تزریق کنیم، نحوهی تعریف آن به صورت <ILogger<ValuesController خواهد بود. هر چند تنظیمات این سرویس پیشتر انجام شدهاست، اما اگر بخواهیم آنرا به همین نحو <ILogger<T به متدهایی مانند services.AddScoped معرفی کنیم، کار نمیکند؛ نمو ...
قابلیتهای قرار گرفتهی در اسمبلی Microsoft.Extensions.DependencyInjection که پایهی تزریق وابستگیهای برنامههای مبتنی بر NET Core. را ارائه میدهد، برای پیاده سازی اکثر پروژهها کافی است. اما اگر از نگارشهای پیشین ASP.NET MVC به ASP.NET Core مهاجرت کرده باشید، حتما با قابلیتهای ویژهی اسکن اسمبلیهای موجود در IoC Containers ثالث، جهت ساده سازی معرفی سرویسهای برنامه به سیستم تزریق وابستگیها، آشنایی دارید. برای مثال StructureMap قابلیت ...
فرض کنید قرارداد IService را تدارک دیدهاید و بر اساس آن سرویسهای A و B را به سیستم تزریق وابستگیهای برنامههای NET Core. تزریق کردهاید (برای مثال در برنامه دو DbContext را تعریف کردهاید و یک اینترفیس IUnitOfWork را دارید). اکنون اگر از این سیستم، یک پیاده سازی IService را درخواست کنید، چه اتفاقی رخ میدهد؟ در حالت معمول آن، آخرین سرویسی را که ثبت کردهاید، یعنی وهلهای از سرویس B را بازگشت خواهد داد. در ادامه قصد داریم با این قابلیت ا ...
یکی از نکات امنیتی که استاندارد Owasp بررسی مینماید هدر X-Content-Type-Options است که جهت جلوگیری از حملات از طریق فایلهای نامرتبط میباشد. در این رخنه ممکن است فایلی که مرورگر دریافت میکند با آنچه که وب
سایت ما آن را میشناسد متفاوت باشد. به عنوان مثال یک فایل اسکریپت که به عنوان یک
فایل استایل معرفی میگردد ولی قابلیت
اجرای کدهای آن در مرورگر امکان پذیر است؛ به این نوع حملات MIME Sniffing میگوین ...
روش متداول کار با تزریق وابستگیهای برنامههای مبتنی بر 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 معرفی میکند.
...