به عنوان یک برنامه نویس، معمولا دوست دارید که فقط روی پروژههای بکر و دست نخورده کار کنید. با این حال به احتمال زیاد ممکن است که شما همین حالا هم بر روی یک پروژه موروثی (Legacy Project) کار میکنید و یا حتی در آینده در مقطعی کار خواهید کنید. در دوره ویدیویی Domain-Driven Design: Working with Legacy Projects موسسه Pluralsightکه توسط Vladimir Khorikov تدریس شده است، شما مهارت هایی را به دست خواهید آورد که به شما در مدیریت این پروژههای موروثی برای ارائه عملکردهای جدید و حفظ رضایت ذینفعان کمک میکند.
در این دوره ابتدا یاد میگیرید که چگونه راه خود را در میان کدهای به ارث رسیده از طریق ریفکتور کردن گام به گام آنها پیدا کنید. در ادامه چگونگی مدیریت کردن باز نویسی ها، چه زمانی این کار را انجام دهید و چه زمانی بهتر است که بجای بازنویسی، کد به ارث رسیده موجود را حفظ کنید را یاد میگیرید. سرانجام، برای دست و پنجه نرم کردن با این کدهای موروثی، تکنیک هایی مانند ساختن یک لایه Anticorruption، الگوی Strangler و الگوی Branch by Abstraction را بررسی خواهید کرد. در پایان این دوره، شما درک کامل تئوری و عملی را در بهبود عملکرد و مقیاس پذیری پروژههای موروثی خواهید داشت.
فیلم آموزشی «طراحی دامنه محور: کار با پروژههای موروثی» موسسه پلورال سایت که توسط Vladimir Khorikov تدریس شده است، دارای زیرنویس انگلیسی است.
Table of Contents:
Course Overview
- Course Overview
Introduction
- Getting Started
- What Is a Legacy Project?
- Legacy Projects and Bad Code
- Rewrite or Not?
- When a Rewrite Is Acceptable
- Summary
Introducing a Legacy Project
- Introduction
- Legacy Project Introduction
- Database Introduction
- Recap: Database Introduction
- Application Code Introduction
- Summary
Creating a Bubble Context with a New Domain Model
- Introduction
- New Requirement
- Refactoring Guidelines
- Anticorruption Layer
- Outlining the New Domain Model
- Creating the Bubble Context
- Translation Map
- Identifying the Entry Point
- Rethinking the Domain Model
- Recap: Rethinking the Domain Model
- Summary
Creating an Anticorruption Layer
- Introduction
- Creating the Anticorruption Layer
- Strengthening the Domain Model with Proper Encapsulation
- Recap: Creating the Anticorruption Layer
- Implementing the New Requirement
- Validation Errors vs. Preconditions
- Recap: Implementing the New Requirement
- Summary
Making the Bubble Autonomous by Introducing a Separate Data Storage
- Introduction
- New Requirement
- Synchronizing the Anticorruption Layer
- Creating a New Database
- Adjusting the Domain Model and Persistence Logic
- Recap: Creating a New Database
- Identifying a New Entry Point for the Bubble
- Implementing the New User Interface
- Saving the Delivery to the Database
- Recap: Introducing a New User Interface
- Summary
Promoting the Anticorruption Layer to Synchronizing Anticorruption Layer
- Introduction
- Upgrading the Anticorruption Layer
- Deciding on Data Ownership
- Synchronization Strategies
- Preparing the Databases
- Creating the Orchestration
- Synchronizing the Bubble with the Legacy
- Recap: Building the Synchronizing Anticorruption Layer
- Summary
Exploring Further Ways of Dealing with the Legacy Project
- Introduction
- When the Anticorruption Layer Is Not Enough
- Exposing Legacy Assets as a Microservice
- Building a Domain Event Channel
- Resource List
- Course Summary