Title
|
Description
|
Framework Engineering: Architecting, Designing, and Developing Reusable Libraries
By: Krzysztof Cwalina
|
This session covers the main aspects of reusable library design: API design, architecture, and general framework engineering processes. Well-designed APIs are critical to the success of reusable libraries, but there are other aspects of framework development that are equally important, yet not widely covered in literature. Organizations creating reusable libraries often struggle with the process of managing dependencies, compatibility, and other design processes so critical to the success of modern frameworks. Come to this session and learn about how Microsoft creates its frameworks. The session is based on experiences from the development of the .NET Framework and Silverlight, and will cover processes Microsoft uses in the development of managed frameworks.
|
Designing .NET Framework Class Libraries
By: Krzysztof Cwalina
|
This class presents best practices for designing frameworks that are reusable object-oriented libraries. The guidelines are
applicable to frameworks ranging in size and in their scale of reuse from large system frameworks to small components shared
among several applications. They started as a small set of naming and design conventions, but have been enhanced, scrutinized,
and refined to a point where they are generally considered the canonical way to design frameworks at Microsoft. They carry the
experience and cumulative wisdom of thousands of developer hours, over three versions of the .NET Framework.
|
Setting the Stage
By: Brad Abrams
|
Introduction to the practice of API design. Topics covered include
terminology, first principles, and why API design is a crucial thing to get
right (the first time!).
|
Naming Conventions
By: Brad Abrams
|
Learn why good naming is a key factor in API design, and what the
recommended naming guidelines are to ensure consistency with the rest of the
.NET Framework.
|
Rich Type System
By: Brad Abrams
|
Learn what rich constructs from the CLR's type system are available and
appropriate for developing APIs. Also, learn when to use reference over value
types, delegates, exceptions, attributes, and many other important features.
|
Member Types
By: Brad Abrams
|
Learn when to use certain member constructs such as properties,
methods, and events over other constructs and why.
|
Designing
Inheritance Hierarchies
By: Brad Abrams
|
Learn how to design appropriately for specialization, specifically when
to use inheritance over aggregation, abstract classes over interfaces, and so
on. Also, learn situations in which virtual methods are called for.
|
API Usability
By: Steven Clarke
|
Learn to understand your target audience, profile users with personas,
and develop APIs that are easy to use and understand.
|
Building
Progressive APIs
By: Krzysztof Cwalina
|
Learn how to design APIs that are appropriate for a broad range of user
personas, while at the same time providing a unified framework with gradients
between levels of complexity.
|
CLR Performance Tips
By: Rico Mariani and
Maoni Stephens
|
Learn performance basics (measure, measure, measure!), how to build a
performance culture, GC basics, and a couple of tips on controversial .NET
performance topics.
|
Designing for a Managed
Memory World
By: Brad Abrams
|
Understand the impact that garbage collection has at runtime and how it
impacts the design of your APIs. Learn about finalizers, the Dispose pattern,
the using keyword, and other related constructs.
|
Packaging, Assemblies
and Namespaces
By: Michael Murray
|
Understand best practices for packaging and structuring your units of
deployment, including how to factor your code appropriately, strong naming, how
packaging may impact performance, and namespace structure.
|
FxCop In-Depth
By: Jeffrey Van Gogh and
Michael Murray
|
FxCop is a tool that enables development teams to check code compliance
with best practices. This session will give you a good understanding of the how
and why behind the tool.
|