در بخش پنجم از سری نوشتار « تزریق وابستگیها در ASP.NET Core »، میخواهیم به شرح کلاس ServiceDescriptor بپردازیم. اگر تعریف اینترفیس IServiceCollection را
مشاهده کنیم، میبینیم که IServicecollection در
واقع لیستی از اشیائی از نوع ServiceDescriptor را نگهداری میکند: namespace Microsoft.Extensions.DependencyInjection
{
public interface IServiceCollection :
ICollection&l ...
به عنوان آخرین قسمت مرتبط با تفکر مبتنیبر CRUD (CRUD-based thinking)، روش پیادهسازی عملیات CRUD موجودیتها را با استفاده از ASP.NET Core MVC و افزونه jquery-unobtrusive-ajax بررسی خواهیم کرد. برای شروع لازم است بسته نیوگت زیر را نصب کنید: PM> Install-Package DNTFrameworkCore.Web قراردادها، مفاهیم و نکات اولیه Refactor کردن فرمهای ثبت و ویرایش مرتبط با یک Aggregate ...
در قسمتهای قبل سعی شد یک دید کلی از نحوه استفاده از این زیرساخت ارائه شود؛ در این قسمت علاوه بر بررسی مکانیزم Eventing، با جزئیات بیشتری به استفاده از سرویسهای پیادهسازی شده پرداخته خواهد شد. مکانیزم Eventing استفاده از رخدادها، یکی از راهحلهای رسیدن به طراحی با Loose Coupling (اتصال سست و ضعیف، وابستگی ضعیف) میباشد؛ همچنین برای حذف چرخه در فرآیند وابستگی مولفههای سیستم نیز مورد استفاده قرار میگیرد. در این ...
پس از معرفی DNTFrameworkCore ، طراحی موجودیتهای سیستم و پیادهسازی DTOها، اعتبارسنجها و سرویسهای متناظر آنها، در این مطلب روش پیاده سازی CRUD API یکسری موجودیت فرضی را با استفاده از امکانات این زیرساخت بررسی خواهیم کرد. برای شروع لازم است بسته نیوگت زیر را نصب کنید: PM> Install-Package DNTFrameworkCore.Web همچنین برای اعمال خودکار مهاجرتهای بانک اطلاعاتی، بسته نیوگت زیر را نصب کنید: PM> Install- ...
در قسمت قبل سناریوهای مختلف مرتبط با طراحی موجودیتهای سیستم را بررسی کردیم. در این قسمت به طراحی DTOهای متناظر با موجودیتها به همراه اعتبارسنجهای مرتبط و در نهایت به پیاده سازی سرویسهای CRUD آنها خواهیم پرداخت. قراردادها، مفاهیم و نکات اولیه
برخلاف بسیاری از طراحیهای موجود، بر فراز هر موجودیت اصلی (منظور AggregateRoot) باید یک DTO که از این پس با عنوان Model از آنها یاد خواهیم کرد، تعریف شود. هیچ ...
در قسمت قبل ، امکانات این زیرساخت را ملاحظه کردیم. در این مطلب و مطالب آینده، روش طراحی بخشهای مختلف یکسری سیستم فرضی را با استفاده از امکانات مذکور و با جزئیات بیشتر، بررسی خواهیم کرد. به منظور اعمال خودکار یکسری مفاهیم توسط زیرساخت، نیاز است موجودیتهای شما قراردادهای مورد نظر را پیاده سازی کرده باشند یا اینکه از موجودیتهای پایه که آن قراردادها را پیاده سازی کردهاند، به عنوان میانبر، از آنها ارث بری کنید. برای دسترسی به این موجود ...
پروژه DNTFrameworkCore که قصد پشتیبانی از آن را دارم، یک زیرساخت سبک وزن و توسعه پذیر با پشتیبانی از طراحی چند مستاجری، با تمرکز بر کاهش زمان و افزایش کیفیت توسعه سیستمهای تحت وب مبتنی بر ASP.NET Core، توسعه داده شده است. اهدافی که این زیرساخت دنبال میکند ارائه ساختارهای مشترک بین پروژههای مختلف از جمله Cross-Cutting Concernها و ... دنبال کردن اصل DRY به منظور متمرکز شدن صرف برروی منطق تجاری سی ...
الگوهای
طراحی، سندها و راه حلهای از پیش تعریف شده و تست شدهای برای مسائل و مشکلات روزمرهی برنامه نویسی میباشند که هر روزه ما را درگیر خودشان میکنند. هر چقدر مقیاس پروژه
وسیعتر و تعداد کلاسها و اشیاء بزرگتر باشند، درگیری برنامه نویس و چالش برای مرتب سازی و
خوانایی برنامه و همچنین بالا بردن کارآیی و امنیت افزونتر میشود. از همین رو استفاده از
ساختارهایی تست شده برای سناریوهای یکسان، امری واجب تلقی میشود. الگوهای
طراح ...
خیلی از ما با کابوس پروژه ای که هیچ تجربه ای در انجام آن نداریم روبرو شده ایم. نبودن تجربه موثر منجر به خطاهای تکراری و غیر قابل پیش بینی شده و تلاش و وقت ما را به هدر میدهد. مشتریان از کیفیت پایین، هزینه بالا و تحویل دیر هنگام محصول ناراضی هستند و توسعه دهندگان از اضافه کارهای بیشتر که منجر به نرم افزار ضعیتتر میگردد، ناخشنود. همین که با شکستی مواجه میشویم از تکرار چنین پروژه هایی اجتناب میکنیم. ترس ما باعث میشود تا فرآیندی بسازی ...
الگوی استراتژی (Strategy) اجازه میدهد که یک الگوریتم در یک کلاس بسته بندی شود و در زمان اجرا برای تغییر رفتار یک شیئ تعویض شود.
برای
مثال فرض کنید که ما در حال طراحی یک برنامه مسیریابی برای یک شبکه هستیم.
همانطوریکه میدانیم برای مسیر یابی الگوریتمهای مختلفی وجود دارد که هر
کدام دارای مزایا و معایبی هستند. و با توجه به وضعیت موجود شبکه یا عملی
که قرار است انجام پذیرد باید الگوریتمی را که دارای بال ...