This four-day course provides a sound introduction to the .NET Framework for programmers who already know the C# language and the fundamentals of Windows Forms. The course focuses on core portions of the .NET Framework that are common across many application areas, starting with an introduction to the architecture and key concepts of .NET. It then discusses class libraries, assemblies, versioning, configuration, and deployment, which constitute a major advance in the simplicity and robustness of deploying Windows applications, ending the notorious “DLL hell.” .NET Security, which was simplified in .NET 4.0, is introduced, including both code access security and role-based security. In addition, this course includes an introduction to database programming using ADO.NET and LINQ. The goal of this course is to equip participants with the skills and knowledge they need to begin building significant applications using the .NET Framework, and it is therefore very practical, with many examples and a case study. Please note that this customizable course is current to .NET 4.5.1 and Visual Studio 2013.

Course Duration: 4 days
Prerequisites:

Participants should have a working knowledge of C#, including how to build simple GUIs with Windows Forms.

Course Outline:
  • .NET Fundamentals
    • What Is Microsoft .NET?
    • Open Standards and Interoperability
    • Windows Development Problems
    • Common Language Runtime
    • Attribute-Based Programming
    • Metadata
    • Types
    • .NET Framework Class Library
    • Interface-Based Programming
    • Everything is an Object
    • Common Type System
    • ILDASM
    • .NET Framework SDK Tools
    • Language Interoperability
    • Managed Code
    • Assemblies
    • Assembly Deployment
    • JIT Compilation
    • ASP.NET and Web Services
    • The Role of XML
    • Performance
  • Class Libraries
    • Objects and Components
    • Limitation of COM Components
    • Components in .NET
    • Class Libraries at the Command Line
    • Monolithic versus Component
    • Class Libraries Using Visual Studio
    • References in Visual Studio
    • References at Compile Time and Run Time
    • Project Dependencies
    • Specifying Version Numbers
  • Assemblies, Deployment and Configuration
    • Assemblies
    • Customer Management System
    • ILDASM
    • Assembly Manifest
    • Assembly Dependency Metadata
    • Assembly Metadata
    • Versioning an Assembly
    • AssemblyVersion Attribute
    • Strong Names
    • Digital Signatures
    • Verification with Digital Signatures
    • Hash Codes
    • Digitally Signing an Assembly
    • Digital Signing Flowchart
    • Signing the Customer Assembly
    • Signed Assembly Metadata
    • Private Assembly Deployment
    • Assembly Cache
    • Deploying a Shared Assembly
    • Versioning Shared Components
    • How the CLR Locates Assemblies
    • Resolving an Assembly Reference
    • Version Policy in a Configuration File
    • Finding the Assembly
    • Application Settings
    • Application Settings Using Visual Studio
    • Application Configuration File
    • User Configuration File
  • Metadata and Reflection
    • Metadata
    • Reflection
    • System.Reflection.Assembly
    • System.Type
    • System.Reflection.MethodInfo
    • Dynamic Invocation
    • Late Binding
  • I/O and Serialization
    • Input and Output in .NET
    • Directories
    • Files and Streams
    • “Read” Command
    • Code for “Write” Command
    • Serialization
    • Attributes
  • .NET Programming Model
    • Garbage Collection
    • Finalize Method
    • C# Destructor Notation
    • Dispose
    • Finalize/Dispose Test Program
    • Garbage Collection Performance
    • Generations
    • Processes
    • Threads
    • Asynchronous Calls
    • Asynchronous Delegates
    • Using a CallBack Method
    • BackgroundWorker
    • Asynchronous Programs in C# 5.0
    • Task and Task
    • Async Methods
    • Synchronous Call
    • Async Call
    • Threading
    • Application Isolation
    • Application Domain
    • Application Domains and Assemblies
    • AppDomain
    • CreateDomain
    • App Domain Events
  • .NET Threading
    • Threads
    • Race Conditions
    • Thread Synchronization
    • Monitor
    • Using C# Lock Keyword
    • Synchronization of Collections
    • ThreadPool Class
    • Starting a ThreadPool Thread
    • Foreground and Background Threads
    • Synchronizing Threads
    • Task Parallel Library (TPL)
    • Starting Tasks
    • Waiting for Task Completion
    • Data Parallelism
  • .NET Security
    • Fundamental Problem of Security
    • Authentication
    • Authorization
    • The Internet and .NET Security
    • Code Access Security
    • Role-Based Security
    • .NET Security Concepts
    • Permissions
    • IPermission Interface
    • IPermission Demand Method
    • IPermission Inheritance Hierarchy
    • Stack Walking
    • Assert
    • Demand
    • Other CAS Methods
    • Security Policy Simplification
    • Simple Sandboxing API
    • Setting Up Permissions
    • Creating the Sandbox
    • Role-Based Security in .NET
    • Identity Objects
    • Principal Objects
    • Windows Principal Information
    • Custom Identity and Principal
    • BasicIdentity.cs
    • BasicSecurity.cs
    • Users.cs
    • Roles.cs
    • Sample Run
    • PrincipalPermission
  • Interoperating with COM and Win32
    • Interoperating Between Managed and Unmanaged Code
    • COM Interop and PInvoke
    • Calling COM Components from Managed Code
    • The TlbImp.exe Utility
    • TlbImp Syntax
    • Using TlbImp
    • Register the COM Server
    • 64-bit System Considerations
    • Run the COM Client
    • Implement the .NET Client Program
    • Import a Type Library Using Visual Studio
    • Platform Invocation Services (PInvoke)
    • Marshalling out Parameters
    • Translating Types
  • ADO.NET and LINQ
    • ADO.NET
    • ADO.NET Architecture
    • .NET Data Providers
    • ADO.NET Interfaces
    • .NET Namespaces
    • Connected Data Access
    • AcmePub Database
    • Creating a Connection
    • Using Server Explorer
    • Performing Queries
    • Connecting to a Database
    • Database Code
    • Connection String
    • Using Commands
    • Creating a Command Object
    • Using a Data Reader
    • Generic Collections
    • Executing Commands
    • Parameterized Queries
    • DataSet
    • DataSet Architecture
    • Why DataSet?
    • DataSet Components
    • DataAdapter
    • Data Access Class
    • Retrieving the Data
    • Filling a DataSet
    • Accessing a DataSet
    • Using a Standalone Data Table
    • Adding a New Row
    • Searching and Updating a Row
    • Deleting a Row
    • Row Versions
    • Row State
    • Iterating Through DataRows
    • Command Builders
    • Updating a Database
    • Data Binding
    • DataGridView Control
    • Language Integrated Query (LINQ)
    • Bridging Objects and Data
    • Object Relational Designer
    • IntelliSense
    • Basic LINQ Query Operators
    • Obtaining a Data Source
    • Filtering
    • Ordering
    • Aggregation
    • Obtaining Lists and Arrays
    • Deferred Execution
    • Modifying a Data Source
    • Performing Inserts via LINQ to SQL
    • Performing Deletes via LINQ to SQL
    • Performing Updates via LINQ to SQL
  • Debugging Fundamentals
    • Compile-Time Errors
    • Runtime Errors
    • Debugging
    • Project Configurations
    • Release Configuration
    • Creating a New Configuration
    • Build Settings for a Configuration
    • Customizing a Toolbar
    • Using the Visual Studio Debugger
    • Overflow Exception
    • Just-In-Time Debugging
    • Attach to Running Process
    • Standard Debugging – Breakpoints
    • Standard Debugging – Watch Variables
    • Stepping with the Debugger
    • The Call Stack
    • JIT Debugging in Windows Apps
    • Configuration File
    • Finding the Bug
  • Tracing
    • Instrumenting an Application
    • Order Application
    • Debugging Review
    • Tracing
    • Debug and Trace Classes
    • Viewing Trace Output
    • Debug Statements
    • Debug Output
    • Assert
    • More Debug Output
    • WriteLine Syntax
    • Event Logs
    • Viewing Event Logs
    • Event Log Entry Types
    • .NET EventLog Component
    • Retrieving Entries from an Event Log
    • Handling EventLog Events
  • More About Tracing
    • Trace Switches
    • BooleanSwitch
    • Using a Configuration File
    • TraceSwitch
    • Trace Listeners
    • DefaultTraceListener
    • A Stream Listener
    • A Custom Listener
    • Trace Output to a Window
    • An Event Log Listener
    • Tracing in the Order Application
    • Trace Output
  • Appendix A – .NET Remoting
    • Distributed Programming in .NET
    • Windows Communication Foundation
    • .NET Remoting Architecture
    • Remote Objects and Mobile Objects
    • Object Activation and Lifetime
    • Singleton and SingleCall
  • Appendix B – Learning Resources