الگوی Service Locator، به صورت گستردهای به عنوان یک ضد الگو شناخته میشود و هنگامیکه از این الگو استفاده میکنیم ما را با یک سری از مشکلات رو به رو میکند. ولی این الگوی طراحی به خودی خود منشاء مشکل نیست. مشکل اصلی این الگو نحوه استفاده از آن است که در این مقاله درباره آن بحث میکنیم. مشکل اصلی الگوی Service Locator زمانیکه یک کلاس، وابسته به یک Service Locator است، آن تمام وابستگیهای واقعی کلاس را مخفی میکند. ما ن ...
یکی از مشکلاتی که در برخی از طراحیهایی که تا کنون دیدهام وجود دارد، عدم استفاده از قابلیت ماژولار نویسی تنظیمات Autofac و عدم استفاده از Interfaceها برای ارتباط بین قسمتهای مختلف سیستم است. به این صورت که تمام تنظیمات مربوط به Autofac را در بالاترین لایه سمت سرور خود یعنی Service یا Web انجام میدهند که باعث میشود این لایه به تمامی لایههای پایین خود از جمله DataAccess دسترسی مستقیم داشته باشد. در یک سیستم بزرگ به دلایل بسیار از جمله ...
در این مقاله قصد دارم به وسیله Autofac تزریق وابستگیهای Automapper و همچنین Register کردن فایلهای Profile Mapper را توضیح دهم. حتما مقالات مقالات متعدد در رابطه با تزریق وابستگی را که در این سایت وجود دارند، مطالعه کردهاید. در این بخش قصد دارم از Autofac ( بجای StructureMap ) برای تزریق Automapper استفاده کنم. 1. ابتدا ساختار پروژه را بررسی میکنیم. بدین منظور یک پروژه جدید را با عنوان AufacDI ایجاد میکنیم. 2. در این مرحله یک پر ...
در این مقاله شما را با روشی آشنا خواهم کرد که در عین سادگی، کارآیی زیادی در پروژههای AngularJS خواهد داشت. برای همه ما پیش آماده است که خیلی از Injectionهای Controllerهای AngularJS به صورت مشترک بوده ولی مجبور شدهایم این Injectionها را در هر Controller تکرار کنیم. کدهای زیر را مشاهده کنید. در این کد یک سری از injectionها به صورت مشترک در این ۴ Controller تکرار شده است. app.controller('ctrl1',['$scope','$rootscope','$location' ...
پیشنیازها (الزامی)
« بررسی مفاهیم معکوس سازی وابستگیها و ابزارهای مرتبط با آن »
« اصول طراحی SOLID »
« مطالعهی بیشتر »
تزریق وابستگیها (یا Dependency injection = DI) به معنای ارسال نمونهای/وهلهای از وابستگی (یک سرویس) به شیء وابستهی به آن (یک کلاینت) است. در فرآیند تزریق وابستگیها، یک کلاس، وهلههای کلاسهای دیگر مورد نیاز خودش را بجای وهله سازی مستقیم، از یک تزریق کننده دریافت میکند. بنابراین بجای ...
مدل برنامه زیر را در نظر بگیرید: public class Service
{
public int ServiceId { get; set; }
public string ServiceName { get; set; }
} اینترفیس ICoreService عمل بازیابی اطلاعات کلاس بالا را بر عهده دارد: public interface ICoreService
{
Service LoadDefaultService();
} نتیجه تزریق وابستگی ICoreService برای کنترلر Home در یک پروژه ASP.NET Core 1.0/Asp.Net Mvc 6 چنی ...
در مقالهی قبلی ( + ) به این لحاظ که بهترین راه نشان دادن نحوهی کارکرد Controller Factory ایجاد یک نمونهی سفارشی بود، آن رابررسی کردیم و برای اکثریت برنامهها و سناریوها، کلاس توکار Controller Factory به نام DefaultControllerFactory کفایت میکند.
پس از وصول یک درخواست از طریق سیستم مسیریابی، factory پیش فرض (DefaultControllerFactory) به بررسی rout data پرداخته تا خاصیت Controller آن را بیابد و سعی در پیدا کردن کلاسی در ...
قبلاً در سایت جاری در رابطه با پیادهسازی الگوی Context Per Request مطالبی منتشر شده است. در ادامه میخواهیم تمامی درخواستهای خود را اتمیک کنیم. همانطور که قبلاً در این مطلب مطالعه کردید یکی از مزایای الگوی Context Per Request، استفادهی صحیح از تراکنشها میباشد. به عنوان مثال اگر در حین فراخوانی متد SaveChanges، خطایی رخ دهد، کلیهی عملیات RollBack خواهد شد. اما حالت زیر را در نظر بگیرید: _categoryService.AddNewCategory(categ ...
در پروژه خود میتوانیم StructureMap را به گونهایی تنظیم کنیم که کار تزریق لایههای انتزاعی ASP.NET را نیز انجام دهد؛ مثلاً CurrentHttpContext و یا دادههای مربوط به مسیریابی و...
به عنوان مثال در برنامه شما ممکن است کدهای زیر چندین و چند بار تکرار شده باشند: var userId= User.Identity.GetUserId();
var user = _context.Users.Find(userId);
var user = int.Parse(User.Identity.GetUserId());
...
در طی چند قسمت، نحوهی طراحی یک سیستم افزونه پذیر را با ASP.NET MVC بررسی خواهیم کرد. عناوین مواردی که در این سری پیاده سازی خواهند شد به ترتیب ذیل هستند:
1- چگونه Areaهای استاندارد را تبدیل به یک افزونهی مجزا و منتقل شدهی به یک اسمبلی دیگر کنیم.
2- چگونه ساختار پایهای را جهت تامین نیازهای هر افزونه جهت تزریق وابستگیها تا ثبت مسیریابیها و امثال آن تدارک ببینیم.
3- چگونه فایلهای CSS ، JS و همچنین تصاویر ثاب ...