ASP.NET MVC
Practice and Guideline
Zubzib Black Coffee #7
About me
                      • Chalermpon Areepong (Nine)




 • Microsoft MVP ASP.NET




 • Work @
Session Level 300
Audience Skill
• HTML
• JavaScript
• C#
• OOP
• LINQ
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
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
Basic of ASP.NET MVC
Programing
• DEMO
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)
Basic of ASP.NET MVC
 Programing
• Routes DEMO
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
NuGet Package Manager
• DEMO
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…..
EF 4.x Code First
• DEMO
MVC UI Library
All will render to HTML/ CSS / JavaScript
• JQuery UI
• Telerik MVC Extension (current not full support
   HTML5)
• Knockout (MVVM)
• Kendo UI (HTML5)
• Wijmo (HTML5)
MVC UI Library
• DEMO
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
Software Design:
Repository Pattern
• DEMO
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.
Software Design:
Core Layer Architecture
Software Design:
Core Layer Architecture
• DEMO
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!
Dependency Injection
• Demo
Summary
•   ASP.NET MVC
•   NuGet
•   EF Code First
•   JavaScript Framework
•   AutoFac MVC Integration

• Bye…

ZZ BC#7 asp.net mvc practice and guideline by NineMvp

  • 1.
    ASP.NET MVC Practice andGuideline Zubzib Black Coffee #7
  • 2.
    About me • Chalermpon Areepong (Nine) • Microsoft MVP ASP.NET • Work @
  • 3.
    Session Level 300 AudienceSkill • HTML • JavaScript • C# • OOP • LINQ
  • 4.
    Agenda • Basic ASP.NETMVC 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.NETMVC 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
  • 6.
    Basic of ASP.NETMVC Programing • DEMO
  • 7.
    Basic of ASP.NETMVC 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)
  • 8.
    Basic of ASP.NETMVC Programing • Routes DEMO
  • 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
  • 10.
  • 11.
    EF 4.x CodeFirst • 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…..
  • 12.
    EF 4.x CodeFirst • DEMO
  • 13.
    MVC UI Library Allwill render to HTML/ CSS / JavaScript • JQuery UI • Telerik MVC Extension (current not full support HTML5) • Knockout (MVVM) • Kendo UI (HTML5) • Wijmo (HTML5)
  • 14.
  • 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
  • 16.
  • 17.
    Software Design: Core LayerArchitecture 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.
  • 18.
  • 19.
    Software Design: Core LayerArchitecture • DEMO
  • 20.
    Dependency Injection • DependencyInjection - 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!
  • 21.
  • 22.
    Summary • ASP.NET MVC • NuGet • EF Code First • JavaScript Framework • AutoFac MVC Integration • Bye…