Workshop: Patterns and Practices of Architecting .NET Applications

3 days (DEV-NETPPARCH)

Part II of ".NET Software Architecture - Patterns of Application Architecture
Design and coding practices, frameworks, tools and methodologies for sustainable development

Description
Author
Prerequistites
Outline

Description

As we celebrate the first decade of .NET development we realize that a lot has changed. In a nutshell, development is now much harder because the complexity of the average application has grown significantly. So now the RAD paradigm privileging productivity and raw performance over everything else no longer applies with the same effectiveness. Development needs more effort and resources, but to be really effective it needs to be sustainable. The class addresses this common need by discussing three aspects of applications: quality of code, modeling and layers. Low quality code has a cost and design principles, common practices (refactoring, testing), static analysis, metrics and frameworks for semantic correctness help keeping it affordable. Today, a successful project is a project whose facts and requisites are well understood and communicated. Modeling is an area with very few certainties as far as best practices are concerned, but just for this reason tools, technologies and practices are revised and refined at a surprising speed. Revisiting pillars of object-orientation, the class introduces domain-centric, behavior-focused modeling techniques that represent an affordable approach for many projects. Pinpointing proper layers in the domain of a solution is a key step to guarantee maintainability, extensibility, and testability across the horizontal sections of a typical application¡Xpresentation, business, data.
The class is rich of examples often based on newest technologies such as Managed Extensibility Framework, Code Contracts, Entity Framework 4, NHibernate, ASP.NET MVC.

Author

The workshop will be run by Dino Esposito. Dino is the author of “Microsoft .NET: Architecting Solutions for the Enterprise”, Microsoft Press, 2008 and other best-selling books such as "Programming ASP.NET 3.5 Core Reference" (Microsoft Press, 2008), "Introducing ASP.NET AJAX" (Microsoft Press, 2007) and "Programming Microsoft ASP.NET 2.0 Applications—Advanced Topics" (Microsoft Press, 2006). He’s also the author of the Cutting Edge column on MSDN Magazine and a frequent speaker at industry events worldwide, including Microsoft TechEd, DevConnections and, in Europe, DevWeek and Basta.

Prerequisites

Developers and lead developers willing to grow professionally by learning key coding and design practices to apply in everyday work. The class also works for technical project and IT managers who coordinate the activity of development teams. The class addresses to date trends and best practices and tools that most use and contribute to improve. The class gives these managers some solid knowledge to better communicate with super-skilled developers and architects. Finally, the class may also result fruitful to solution architects needing a crisp refresher or looking for a new perspective that rejuvenate their design spirit.

Note: In general, the content of the class should be nothing new for expert architects, but exceptions apply. So check carefully the topics outlined below as they should give you an exact idea of the succession of topics. If you have further questions, don’t hesitate to ask.

Outline


Outline Day 1
  • Sustainable development
    • Introduction
    • From requisites to use-cases
    • Agile thinking
    • New fundamental tools
  • Revisiting Object-orientation
    • Pertinent actions not objects
    • Composition and defensive programming
    • Require no more provide no less
    • Inheritance as a programming tool—not design
    • Handle virtual with extreme care
    • Constructor pain
    • Type of and the Visitor pattern
  • Code correctness and analysis
    • Design by contract
    • Code Contracts in .NET 4
    • Static checker
    • Code analysis in Visual Studio 2010
    • Metrics and dependencies
Outline Day 2 
  • Idiomatic .NET Design
    • Common code smells
    • Recommended practices
    • Microsoft guidelines
  • Extensibility
    • Interface-based programming
    • The Strategy pattern
    • IoC frameworks
    • MEF and IoC
    • MEF in action
    • Aspects
  • Domain-centric Modeling
    • Aspects of domain-driven design
    • Approaches and frameworks for validation
    • Persistence
Outline Day 3
  • Entity FX vs. NHibernate
    • New features in EF4
    • Model-first with EF4
    • Feature matrix
    • Scenarios
  • Application Layers
    • Service layer
    • Infrastructure layer
    • Data Access layer
    • Thinking of Testing
  • Presentation Challenges and Technologies
    • Separation of concerns in a GUI
    • Aspects of MVVM for rich clients
    • Aspects of MVP for Web clients