Deep Dive Language Mechanics:
In the early days of C# there was virtually a 1-1 mapping between C# and IL. Much has changed since C# 1, the developer is encouraged to simply describe their intent and the compiler builds the appropriate code. This module will dive under the hood and show how various C# features like iterator methods, anonymous methods, extension methods,LINQ and dynamic all result in code gen by the C# compiler. These layers of abstractions initially make us more productive, but sometimes they hide those hard to find bugs, and can add a deluge of performance implications that once we understand how the mechanics of the features work we can quickly fix.
Entity Framework 6 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.
WPF is Microsoft’s UI technology for building smart client applications. In this module we look at the WPF architecture and how user interfaces are designed using a markup language called XAML. XAML is at the heart of all of Microsoft’s frameworks for building rich user interfaces: WPF, Silverlight and Windows 8 App Store applications.
Using unit testing comprehensively within software development is a growing movement. Unit testing allows refactoring and maintenance with the confidence that existing functionality is not broken. In this module we will look at techniques for writing good unit tests and integrating them into testing frameworks to automate the unit tests. We will also introduce Test Driven Development (TDD) to show how writing tests first delivers not just well tested code but also more loosely coupled code.
“As an IT professional I need accredited training and your courses meet that criteria with the bonus of great customer care”
Entity Framework 6 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.
WPF, DataBinding and MVVM:
Moving data between the UI and underlying objects can be a laborious task. Databinding is a technology that hugely simplifies this process. But more than that, in WPF databinding is a fundamental skill for creating rich user interfaces with minimal code. Databinding is the core technology that enables the use of the Model-View-ViewModel presentation layer pattern which we also introduce in this module.
Test Doubles and Mocking:
Code is not automatically unit testable – it has to be designed to be so. We will look at how Test Driven Development leads to inherently testable code by using dependency injection and how Inversion of Control (IoC) containers can make dependency injection manageable. Once we have dependency injection we can then use mocking frameworks to simplify the job of making unit tests truly test only a single unit by supplying test doubles we control rather than the real dependencies.
Building REST-based Services:
Service Orientation and SOAP are often seen as going hand-in-hand. However, there is another architectural style for building services – that or REpresentational State Transfer, or REST. REST uses the design principles that have made the web so hugely scalable: resources are identified by URI, operations defined by HTTP verbs, links used to move to the next stage of processing. In this module we look at how we use the .NET platform to deliver REST based systems.
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 tha