4. Agenda
• Basic ASP.NET MVC Programming
o Model
o View
o Controller
o Routes
• NuGet Package Manager
• Entity Framework 4.x Code First Introduce
• Application Layer Architecture
• Repository Pattern
• Dependency Injection
5. Basic of ASP.NET MVC
Programing
• Model :
o Class Model, Domain Transfer Object (DTO), View Model
o Model Validation
• Validation Attribute, IValidationObject Interface
• View : User Interface
o Engine : ASPX ViewEngine, Razor ViewEngine, Etc……
o HTML, CSS, JavaScript
• Controller
o Control logic,
o Data access,
o Prepare parameters for view render
o call view to render output
7. Basic of ASP.NET MVC
Programing
• Routes
o Catch URL to parameter by pattern
• Default
“{controller}/{action}/{id}”
http://www.zz.com/blog/get/1
• Fix route value
new { controller = “blog”, action = “get”, id = 1 }
• Custom Routes
o blog/Archive/12-25-2009
“{controller}/{action}/{date}”
http://www.zz.com/blog/Archive/12-25-2009
Public ActionResult Archive(DateTime date)
o blog/Archive/12-25-2009_12-17-2011
“{controller}/{action}/{dateFrom}_{dateTo}”
http://www.zz.com/blog/Archive/12-25-2009_12-17-2011
public ActionResult Archive(DateTime dateFrom, DateTime DateTo)
9. NuGet Package Manager
• Library Utility for
o Search
o Install / Update / Uninstall
o Execute library command (PowerShell)
• VS - > Menu -> Tools -> Extension Manager -> Find
NuGet and install
• How to use
o Project Reference
o Package Manager Console
• Install-Package <package name>
• Uninstall-Package <package name>
• Get-Package
11. EF 4.x Code First
• Object Relational Mapping
• POCO
• Convention Over Configuration
• LINQ Support
• Working with various database (3rd party driver)
• Fluent API to fully customize the persistence
mapping
• Demo…..
15. Software Design:
Repository Pattern
• Encapsulate data access
• Simple collection like interface
• Should only return aggregate roots
• Provide for adding and removing entities
• Provide methods to select objects based on some
criteria
• Allow easy substitution
17. Software Design:
Core Layer Architecture
Motivation – Logical layers separate the major
concerns of the application:
• 1. Modularity, low-coupling – easier maintenance.
• 2. Business-logic is separated from presentation –
reuse.
• 3. General technical services, e.g., database, are
separated from the business-logic –
reused, replaced.
• 4. Low coupling, separation of concerns – evolving
functionality, system scaling-up, adapt to new
technologies.
20. Dependency Injection
• Dependency Injection - one example of IoC design
principle.
• Also known as the Hollywood Principle
o Don’t call us, we’ll call you!
• Good OO Systems – organised as web of interacting
objects
• Goal – High cohesion, low coupling
• Advantages of low coupling
o Extensibility
o Testability
o Reusability
PS>Not so easy to achieve!