1. Admin Slides 2. .NET Platform Architecture Microsoft .NET is a new platform for integrating software components from multiple organizations across heterogeneous systems. The core element of this platform is an execution engine called the Common Language Runtime. This module introduces and explains the core elements of the CLR. Slides Exercises Quiz 3. Objects, Values and Memory Objects are instances of types that are managed by the runtime. Objects are allocated on a garbage-collected heap and can be compared for both identity and equivalence. The Common Language Runtime also supports defining lightweight classes called Value Types, whose instances are allocated in memory that is contiguous with where they are declared. Value types are useful for reducing memory management overhead due to excessive heap allocations. This module explores the relationship between reference and value types, covering topics such as garbage collection, finalization, and proper support for IDisposable. Slides Exercises Quiz 4. Reflection and Attributes The Common Language Runtime makes virtually every facet of a type definition available to programmers in any language. The presence of such rich type information, as well as an API for accessing it easily at runtime, enables numerous forms of tool development and type system interoperability. This module explores the CLR’s support for accessing type information at runtime using reflection, as well as how developers can extend type information using custom attributes. Slides Exercises Quiz 5. Delegates and Events A delegate is a representation of a method signature, and can be used as a way to dynamically dispatch calls at runtime. This is useful for gluing objects together in a loosely coupled fashion, and for implementing event-based architectures like ASP.NET and Windows Forms. An event simply takes a delegate and provides extra support for allowing clients to connect and disconnect in a standard way. This module makes it easy to understand these important concepts. Slides Exercises Quiz 6. Multithreading and Thread Synchronization This module explores the various mechanisms provided by the CLR and framework classes for performing asynchronous execution, with an emphasis on including asynchronous delegates and threads. Techniques for protected access to data in the presence of multiple threads are also explained. Slides Exercises Quiz 7. Assemblies The Common Language Runtime requires all types to belong to an assembly, which act as the smallest distribution unit for component code in the .NET Framework, and represent encapsulation and versioning boundaries. This module covers the mechanics of building and deploying assemblies, including strong naming, delay signing, side-by-side deployment of versioned assemblies, using codebase redirects, and creating and distributing publisher policy. Slides Exercises Quiz 8. Windows Forms The Windows Forms namespace provides support for building traditional forms-based applications that run on client machines; taking the place of MFC and WTL on previous generations of Microsoft's platforms. This module explains the basics of WinForm application development, as well as more advanced topics such as custom control development, multithreading in GUI applications, and "no-touch" deployment over networks. Slides Exercises Quiz 9. Code Access Security Security in .NET is based on Code Access Security, which is an evidence-based approach to safeguarding the system. This module explains the code access security model, including evidence, policy, permissions, and stack walking. Slides Exercises Quiz 10. Programming XML XML processing has emerged as one of the key skills today's developers need, and the .NET platform provides several classes for processing XML data. This module will look at .NET framework class library support for consuming, emitting, searching through, and validating XML. Slides Exercises Quiz 11. ADO.NET This module looks at the ADO.NET data access model and covers the many improvements made over previous versions of ADO. This module starts by looking into using the Connection-Command-DataReader model. In addition to an overview, we'll cover connection management, using stored procedures for database updates, and strategies for effective use a DataReaders and DataSets. The module concludes with a discussion of XML integration with the DataSet. Slides Exercises Quiz 12. Remoting The .NET remoting infrastructure extends cross-AppDomain activation and method invocation to the wire. Revolving around the CLR's type system, .NET remoting provides seemless support for CLR-to-CLR distributed object computing. This module will walk the student through the various ways of setting leveraing remoting in .NET systems, including details on the various activation semantics (client-activated versus well-known types), dynamic as well as static configuration, distributed garbage collection, proxy generation, and server hosting alternatives. Slides Exercises Quiz 13. ASP.NET This module looks at the overall architecture of ASP.NET, beginning with a look at its extensible support for HTTP request/response processing (http handlers and modules) and finishing with a look at the page compilation model, including code behind, page rendering, and the ASP.NET object model. Slides Exercises Quiz 14. ASP.NET Web Services XML has become the de facto format for representing data and information for exchange between software components and agents. The Common Language Runtime provides a variety of ways to externalize CLR-based objects, values, and method calls into XML format, including manual translation using streaming and traversal APIs as well as reflection-driven serialization mechanisms. This module explores the options for building Web Services with the .NET Framework. Slides Exercises Quiz 15. Win32/COM Interoperation Code written for .NET's Common Language Runtime rarely can stay in the runtime forever. Fortunately, the CLR provides an interoperation layer that allows managed code to call out to native DLLs and COM components as well as allowing managed objects to be exported as COM objects. This module explores the two mechanisms for interop: P/Invoke and COM Interop. Slides Exercises Quiz 16. Appendix: Managed Type Fundamentals The Common Language Runtime deals in types and instances of types. This is true no matter what programming language or technology is used to interface with the CLR. This module is designed to provide a quick recap on select C# topics for existing C# programmers, as well as show C++ and Java programmers the key differences between C# and their previous programming language. Slides Exercises Quiz 17. Appendix: Type Potpourri Programming on the .NET platform requires literacy in a variety of issues related to the type system. Typed exceptions are used to communicate abnormal execution. Arrays and collections are two ways to build aggregations of objects types at runtime. Text processing under .NET requires C++ and VB programmers to rethink the way strings and buffers relate. Slides 18. Appendix: Serialization This module demonstrates how to leverage the CLR's reflection-driven serialization architecture in support of object persistence and marshal-by-value in remoting scenarios. Topics covered include the [Serializable] and [NonSerialied] attributes, IDeserializationCallback, and ISerializable. Slides 19. Appendix: Managed C++ This module provides an introduction to the Managed Extensions to C++ (MC++) supported by the Microsoft C++ compiler. Managed C++ is the only language that allows you to build managed and unmanaged types and code in the same assembly; providing a powerful technique for managed/unmanaged interop scenarios that aren't easily solved using .NET's P/Invoke or COM interop support.