This course covers is a deep exploration of .NET 4.0 and beyond and is intended for developers familiar with C# and .NET and with Windows development.
The topics covered include:
Day 1:
Introduction to WPF and Silverlight (version 4.0 and possibly some of 5.0 beta)
In this module, you will learn about a new Microsoft's latest UI technology called Silverlight as well as its more full featured counterpart WPF (Windows Presentation Foundation). We will quickly introduce everything you need to know in order to get started with either technology. Subsequent topics and examples throughout the class will build on this foundational knowledge.
ASP.NET MVC 3.0: Beyond the Basics
This release of .NET sees the inclusion in the core framework of the ASP.NET MVC framework. Platforms such as Ruby on Rails have shown that Model/View/Controller (MVC) is a highly productive and very testable pattern for building web applications. In this module we look at the basic anatomy of an MVC application, looking at models, views and controllers. We also show how data binding fits into this world and how the MVC infrastructure maps requests on to controllers using the Routing infrastructure. Having introduced the core concepts of the MVC framework we look now at integrating AJAX functionality into your MVC applications, how you can build REST based services on the framework and how you build reusable components, similar to custom controls that fit with the MVC model. We will also explore the new Razor view engine syntax introduced in ASP.NET MVC 3.0.
LINQ to Objects and LINQ to XML
LINQ makes query a first-class citizen of the C# programming language. You can use LINQ to filter, sort, and group in-memory collections of objects. With SQL-like syntax, you can leverage an assortment of query operators to perform join, partition, conversion, and aggregation functions. You can use the same LINQ syntax to query both in-memory data, as well as other data sources such as XML or relational data. Furthermore, we will cover LINQ to XML which provides an easy-to-use API for both reading and writing XML files. It is the successor to the DOM and XPath for navigating and searching XML documents. LINQ to XML offers an approach to XML queries that is element-centric and makes managing namespaces more straightforward. At the same time, it provides a way to perform serialization of objects to XML, while allowing you to utilize legacy API's, such as XPath and XSLT, as needed.
Entity Framework Introduction
The Entity Framework is an Object Relational Mapping (ORM) layer released in .NET 3.5 SP1. The module looks at the ideas behind ORM and shows how you can remove data access code from your codebase by working with objects that the ORM translates into database queries. Along the way we will look at how LINQ can be used to query and manipulate this data.
Day 2:
Model-View-ViewModel for WPF and Silverlight
Many years of experience tell us that interleaving code and presentation leads to unmaintainable, untestable, and designer-unfriendly code. The strongest pattern to emerge in WPF and Silverlight to overcome this is the Model-View-ViewModel pattern, and in this module you will gain a deep understanding of what it is; how to structure your code to support testing, "blendability" and maintainability; how to work with ICommand; and how to support designers effectively.
PFx: Task: a Unified Threading API
When the Parallel Framework Extensions (PFx) were first announced it looked as though it was going to target a narrow set of requirements around parallelizing processor intensive code. However, over time the scope of the library has grown significantly such that it will become the main model for building asynchronous code. The pivotal type enabling this transition is the Task class. This is a functionally very rich type allowing the creation of both short and long lived asynchronous work. Tasks can have dependencies on one another and support cancellation. In this, the first of the PFx modules we look specifically how this class gives us a unified framework for building multithreaded code.
PFx: The Parallel Class and Concurrent Data Structures
The initial goal of PFx was to simplify the parallelization of processor intensive tasks and this remains a key feature. This part of its functionality is focused on the Parallel class and it's For and ForEach members. In this module we look at the simplified model but also highlight that parallelizing algorithms is never as simple as it might first seem. We show you some of the pitfalls that you should be aware of when trying to parallelize functionality using the Parallel class. Additionally, PFx introduces a set of high performance concurrent data structures that allow you to use them without you having to provide your own synchronization logic around them. This module also looks at this new set of tools in your synchronization toolbox.
Building WCF REST Services
WCF 3.5 adds the ability to create what are known as REST-ful services that embrace the principles of the Web, increasing the reach of your WCF services to non-SOAP clients, such as web browsers and Silverlight applications, which use POX (Plain Old XML) or JSON (JavaScript Object Notation) formats. You'll also learn how to create RSS and ATOM feeds using the new syndication API.
Day 3:
C# 3.0, 4.0, and 5.0
We will study the most important parts of the recent releases of the C# language as well as take a peek into the future and examine some of the features proposed for C# 5.0. This includes studying async methods which are part of C# 5.0 and build on the PFx Task library (covered elsewhere in the course), the dynamic capabilities of C# 4.0, and the immensely important LINQ language features of C# 3.0.
Entity Framework and the Repository Pattern
Prior to Entity Framework 4.0 EF relied on generating entity classes that were tightly coupled to EF. 4.0 introduces the idea of POCO classes - bringing your own classes to EF. This module shows how POCO support works and how you can use the repository pattern to keep your application code and the data access layer cleanly separated and testable.
Introduction to jQuery
jQuery is a popular open source JavaScript library used to enhance AJAX style web pages and improve developer productivity. We will introduce the query and document manipulation capabilities of jQuery.
Cloud Computing for the .NET Developer: IaaS, PaaS, and Patterns
This module will explore the differences between two major paradigms for developing cloud applications: Infrastructure as a Service (IaaS), and Platform as a Service (PaaS). To demonstrate IaaS we will take a look at setting up an Amazon EC2 instance. PaaS will be demonstrated using the various roles of the Windows Azure platform. We will then take a look at some of the common patterns and anti-patterns for cloud development.
Day 4:
The NoSQL Movement, LINQ, and MongoDB
Learn how to leverage MongoDB to build .NET applications using LINQ as the data access language. This session will introduce the ideas around the so-called NoSQL movement. We will examine one of the up and coming open source databases called MongoDB. From there we will build out a .NET application using LINQ and MongoDB in a series of interactive demos using Visual Studio 2010 and C#. We will also be covering the NoRM LINQ to MongoDB library in our demos.
iOS Programming with .NET and MonoTouch
This session will explore building touch-based applications using the .NET developer tool called MonoTouch based on the open source Mono project. You'l learn how to build applications for Apple's iPhone/iPad platform using familiar tools and languages such as WCF, LINQ, and C#.
Design Patterns for Testability (DI, IoC, and unit testing)
This session will present several key object-oriented design principles that facilitate agile software development. These general design principles promote the creation of testable, maintainable, and reusable software. This includes principles such as the Open Closed Principle. The interaction between Agile Development and these principles will be demonstrated using several code samples.
Day 5:
Managed Extensibility Framework
Over time applications can become large, unwieldy and overly complex. Building an app using loosely coupled components not only makes it more maintainable but allows the application to be extended incrementally. MEF, which comes with .NET 4, is a composition framework that can help you write extensible applications with components that can be added dynamically at runtime. A version of MEF also ships with Silverlight 4 that allows you to partition a XAP file into parts that are downloaded on demand.
WCF Data Services:
WCF Data Services combines patterns and libraries that enable any data store to be exposed as a flexible data service. These data services integrate naturally with the Web and can be consumed by Web clients within a corporate network or across the Internet. In this module you'll learn to expose data to web clients as a REST-ful resource, addressable with URIs that clients can interact with using standard HTTP verbs, such as GET and POST.
Power Debugging with WinDBG
For many developers debugging tools start and end with Visual Studio. However, there are a large number of problems that Visual Studio provides very little support - particularly threading and memory management issues. WinDBG and the plugin SOS.DLL bring a new set of tools to .NET developers that can provide insights that help you solve bugs that you see during testing but also allow you to diagnose issues occurring in production systems where the only data you can get is a crash dump file. We'll also look at advances in Visual Studio 2010 that allow direct, source-level debugging of crash dumps within the IDE.
|
Main Topic |
|
| Day 1 | |
|
Introduction to WPF and Silverlight (version 4.0 and possibly some of 5.0 beta) |
|
ASP.NET MVC 3.0: Beyond the Basics |
|
LINQ to Objects and LINQ to XML |
|
Entity Framework Introduction |
| Day 2 | |
|
Model-View-ViewModel for WPF and Silverlight |
|
PFx: Task: a Unified Threading API |
|
PFx: The Parallel Class and Concurrent Data Structures |
|
Building WCF REST Services |
| [after class] | Movie Night + Video Games + LAN Party + ... |
| Day 3 | |
|
C# 3.0, 4.0, and 5.0 |
|
Entity Framework and the Repository Pattern |
|
Introduction to jQuery |
|
Cloud Computing for the .NET Developer: IaaS, PaaS, and Patterns |
| [after class] | Movie Night + Video Games + LAN Party + ... |
| Day 4 | |
|
The NoSQL Movement, LINQ, and MongoDB |
|
iOS Programming with .NET and MonoTouch |
|
Open Session
(work on challenges or try what you've learned on your project)
|
|
Design Patterns for Testability (DI, IoC, and unit testing) |
|
Coding Challenge Contest
(show off your coding skills and win prizes)
|
| [after class] | Night out for drinks and conversations |
| Day 5 | |
|
Managed Extensibility Framework |
|
WCF Data Services |
|
Power Debugging with WinDBG |