Day 1: C# and LINQ
C# 3.0 - 4.0
C# 3.0 includes features designed to support LINQ (Language Integrated Query) but which are useful in their own right: anonymous types, lambda expressions, and extension methods. You will learn how to correctly apply these features and avoid misusing them. C# 4.0 includes dynamic typing with the "dynamic" keyword, to enable cleaner COM interop and smoother integration with dynamic languages such as Javascript and Ruby. You will also learn how to leverage dynamic typing to enable a more natural API for parsing hierarchical data.
LINQ to Objects
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.
LINQ to XML
LINQ to XML 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.
Day 2: Windows Communication Foundation
WCF Architecture
The shift from object oriented development to component oriented development made it possible to build more loosely coupled and flexible systems where individual components evolved independently without impacting the overall system. Windows Communication Foundation continues those practices by providing a model which is based on interfaces and contracts. This talk will introduce you to the WCF model and how to utilize it to build distributed service-oriented applications.
WCF Hosting, Instancing, Faults
WCF allows for a number of options for hosting services. You will learn best practices for hosting WCF services in a production environment and what instancing mode favors the greatest scalability. You will also learn about the ability of Internet Information Services (IIS) to respond to non-HTTP requests, as well as guidance on communicating SOAP faults to clients using Fault Contracts.
WCF REST Services
WCF has 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: Entity Framework and Data Services
Entity Framework Architecture
For years a problem known as the "object-relational impedance mismatch" has divided the worlds of relational data and object oriented programming. The Entity Framework seeks to overcome this barrier by mapping the database to a conceptual schema. EF allows both for data readers and LINQ queries using objects, including POCOs (Plain Old CLR Objects) that are completely ignorant of persistence concerns. You'll also learn how to use T4 templates to take complete control over the code-generation process.
N-Tier Development with Entity Framework
Entity Framework 4.0 ships with a template for generating "Self-Tracking Entities," which are classes that know how to track their own change-state and can transmit multiple updates to a service for persistence within a single transaction. In this respect, STEs resemble old-fashioned datasets but in a more service-oriented manner. While STEs get the job done, you'll also learn how to roll your own trackable entities that address some of the limitations of Microsoft's implementation.
WCF Data Services
Precious data is often locked up in silos where it remains inaccessible to those who need it most. The Open Data Protocol (OData) is a standard format for publishing and updating that data in a REST-based manner using web standards such as AtomPub and leveraging the HTTP protocol. WCF Data Services implements OData by allowing you to expose an Entity Framework (or other) data model as a REST-based service represented as POX (Plain Old XML) or JSON (JavaScript Object Notation).
Day 4: WPF and Silverlight
WPF Architecture
WPF is the GUI technology of the future. We examine how WPF works and the various ways to take advantage of it within your applications. You will learn how to program WPF in C# and become familiar with the various class libraries that make up the framework. You will also get to know Extensible Application Markup Language (XAML) and combine it with procedural code to build compelling client applications that can be deployed to the desktop or run in a browser.
Silverlight for Business Applications
Originally intended to build cross-platform Rich Internet Applications (similar to Flash), Silverlight has evolved into a platform for building line of business applications that are platform independent, running on both Windows and Mac operating systems. These apps can live outside the confines of a web browser and operate with elevated trust.
Silverlight RIA Services
Writing a full-fledged Rich Internet Application presents a number of daunting challenges: forced n-tier, async, latency, validation, concurrency, and authentication. WCF RIA Services attempts to simplify the process with a RAD (Rapid Application Development) approach to building Silverlight business applications. Application logic is centralized in one place in the service, with code for queries, updates and validation projected to the client.
Day 5: Patterns and Extensibility
Model-View-ViewModel
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.
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.