به عنوان آخرین قسمت مرتبط با تفکر مبتنیبر 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 به منظور متمرکز شدن صرف برروی منطق تجاری سی ...
پیشنیاز نقشه راه « آزمون واحد در دات نت » مطلب « طراحی و پیاده سازی ServiceLayer به همراه خودکارسازی Business Validationها » در این مطلب قصد داریم تست ServiceLayer را به جای تست درون حافظهای که با ابزارهای Mocking در قالب Unit Testing انجام میگیرد، به کمک یک دیتابیس واقعی سبک وزن در قالب Integration Testing انجام دهیم. قدم اول یک پروژه تست را ایجاد کنید؛ بهتر است برای نظم دهی به ساختار Solution، پروژهه ...
در این مطلب قصد داریم علاوه بر طراحی زیرساختی برای راه اندازی هرچه سریعتر ServiceLayer، طراحی ای برای مکانیزم Validation به عنوان یک Cross Cutting Concern ، نیز ارائه داده و آن را پیاده سازی کنیم. پیش نیازها: قبلا در سایت در مورد لایه بندی نرم افزار و ServiceLayer مطلب منتشر شده است؛ لذا مطالعه این سری مقالات برگرفته از کتاب Professional ASP.NET Design Patterns جزء پیش نیازهای این مطلب میباشد. دوره Aspect oriented p ...
شاید
مهمترین اصل در سیستمهای توزیع شده، تقسیم وظایف در سخت افزارهای جداگانه و نحوه
مدیریت ارتباط بین این وظایف باشد. مدیریتی که بدون آن، زمانیکه تعداد وظایف سیستم شما زیاد میشود، سیستم را با مشکلات جدی روبرو میکند. به احتمال زیاد شما نیز تاکنون با چنین مشکلاتی مواجه شدهاید، آن هم زمانیکه تعداد Applicationهای سیستمهایتان زیاد میشود و به تدریج وابستگیها و ارتباطات بین آنها نیز افزایش پیدا کرده و بدلیل اینکه شما از قبل زیرساختی ب ...
یکی از مشکلاتی که در برخی از طراحیهایی که تا کنون دیدهام وجود دارد، عدم استفاده از قابلیت ماژولار نویسی تنظیمات Autofac و عدم استفاده از Interfaceها برای ارتباط بین قسمتهای مختلف سیستم است. به این صورت که تمام تنظیمات مربوط به Autofac را در بالاترین لایه سمت سرور خود یعنی Service یا Web انجام میدهند که باعث میشود این لایه به تمامی لایههای پایین خود از جمله DataAccess دسترسی مستقیم داشته باشد. در یک سیستم بزرگ به دلایل بسیار از جمله ...