Prerequisites: Object Oriented Programming & Design Patterns
This course is designed to help teams develop enterprise software development frameworks to support multiple applications and components within the organization. Enterprise developers should quickly satisfy high-quality standards while dealing with highly complex problem domains, services, and user interfaces. Enterprise-level design patterns and practices cover developing reusable, maintainable, and extensible components/layers such as data access, ORM, service communication, DI containers, configuration management, logging, exception handling, caching, security, user interfaces, and so on. This course employs a data-centric approach to enterprise development where most topics are based on Martin Fowler's famous "Patterns of Enterprise Application Architecture" (EAPP) book. Throughout the course, even the most complex foundational layers will be developed from scratch, such as Data Mapping, Dynamic Proxy, Unit of Work, and MVP.
Course Outline
- Domain Modeling: Anemic Model, POCO, Domain Model, DDD, CRUD Entity Model etc.
- Crosscutting Concerns: Logging, Caching, Configuration, Authentication, Authorizarion, Security etc.
- Developing Enterprise Framework: Coupling, Versioning, DSLs, Metadata Management, Principles of Packaging etc.
- Service Layer: Transaction Script Model, Web Services, Facade, REST API, Transactions, Repository, DTO etc.
- User Interface Layer: Screen Generation, Multi-lingual, Ambient Context, MVC, MVP, MVVM etc.
- Unit Testing: Testable Business Layer, Tools, Managing Dependencies, Stubbing/Mocking, BDD, Anti-patterns etc.