Overview
DAY 1
Programming Windows Communication Foundation – Part 1
9:00 AM – 10:30 AM
Juval Löwy
Windows Communication Framework (WCF) is the .NET 3.5 runtime for developing, deploying and consuming service-oriented applications. The service model offers a simple yet amazingly capable programming model. This two-parts session starts by introducing the basic motivation for service-oriented applications and their operating principal and concepts. It then dives into the essentials of WCF: services, clients, contracts and end points, discuses hosting options, and shows how to build and deploy WCF services, as well as presenting the WCF architecture and its implications on the programming model.
Programming Windows Communication Foundation – Part 2
10:45 AM – 12:00 PM
Juval Löwy
See description above.
WCF Instance Management
1:00 PM – 2:15 PM
Juval Löwy
With service-oriented applications, there isn't a one-size-fits-all when it comes to application's need for scalability, availability, responsiveness, throughput and performance. Consequently, WCF supports several service instance management, activation and lifetime management Techniques – governing how to allocate service-side objects and resources to clients. The talk drills down into each of the activation modes available for developers, the required programming models on the client and the service side, and the implication on scalability and performance. You will not only see topics such as service behaviors, session termination, demarcating operations and throttling, but also learn when to apply each, related best practices, design guidelines and pitfalls.
WCF Operations and Calls
2:30 PM – 3:45 PM
Juval Löwy
With WCF, developers have out of the box several options for dispatching calls to the service: request reply, one-way fire and forget, duplex calls or even data streaming. The talk starts by describing each of the available operation types, offering practical insight and examples on when and where each best applies, as well as how the operation type relates to other WCF aspects such as error handling, reliability, binding, and concurrency. Then, you will see how to improve and extend the basic offering to support callback set up and teardown and manage callbacks. Finally, you will see an original framework for supporting a loosely coupled publish/subscribe events service.
Transactional WCF Services
4:00 PM – 5:00 PM
Juval Löwy
Transactions are the key to building robust, high quality service-oriented applications. WCF provides a simple, declarative transaction support for service developers, enabling you to configure parameters such as enlistment and voting, all outside the scope of your service. In addition, WCF allows client applications to create transaction and to propagate transactions across service boundaries, and achieving that over a variety of transports. This session explains how to configure transaction flow at the binding, contract and service level, setting of service transaction, declarative voting, and what are the available configurations that best fits various application scenarios. The talk ends by discussing relevant design guidelines such as transactional service state management and activation modes.
DAY 2A
What’s New and Exciting in C# 3.0
9:00 AM – 10:30 AM
Dino Esposito
In .NET 3.5, the C# compiler supports a richer syntax with some interesting new features. Some are time-saving features that basically move onto the compiler the burden of creating some required code; some are just new capabilities added to the language and backed by the underlying framework. In C# 3.0 you find some delicious syntactic sugar such as automatic properties and object initializers, but also brand new features such as anonymous types and lambda expressions that enable functional programming. Extension methods and specific keywords for LINQ operations complete the scenario. This session explores each feature and illustrates practical usage.
What’s in ASP.NET 3.5 for Me?
10:45 AM – 12:00 PM
Dino Esposito
The biggest improvement in ASP.NET 3.5 is the integration of the existing ASP.NET AJAX Extensions toolkit in the native platform. As a result, you can now add AJAX capabilities (i.e., partial rendering and scriptable Web and WCF services) to your pages without having to install a separate download. However, a few other changes occurred to the ASP.NET platform not related to AJAX. Due to empowered managed languages, ASP.NET applications can now incorporate LINQ queries and, more importantly, can use LINQ data sources in a declarative manner. A new LINQ-based data source control has been added to the toolbox along with ListView and DataPager controls to improve the overall layout and reporting capabilities of the platform. In this session, we’ll put these new controls through their pace.
All Applications Need a Data Access Layer: ADO.NET, LINQ-to-SQL, LINQ-to-Entities, and Data Source Design Patterns
1:00 PM – 2:15 PM
Dino Esposito
The Data Access Layer (DAL) provides simplified access to any data stored in a persistent storage, typically a relational database. ADO.NET is the lowest-level API in the .NET Framework you can use to code a DAL. Below the level of ADO.NET, you only have database-specific data streams and record format. ADO.NET offers you a database-oriented vision of the data that is implemented through managed objects. There’s a bit of abstraction, as you can see, but not that much. With more abstraction you get more overhead, but also a more convenient programming model. LINQ-to-SQL and LINQ-to-Entities are just this — more abstraction and object-orientation over physical data access. Put down in terms of abstract design patterns, LINQ-to-SQL is an enhanced Active Record whereas LINQ-to-Entities is a Data Mapper. Both are going to have drawbacks compared to manually creating optimized stored procedures, but they both yield productivity and have isolated positives and negatives. So it’s great to have options to choose from and, in the end, it is a matter of trade-off. This session explores both LINQ-to-SQL and LINQ-to-Entities and offers guidance on when to use which, based on the characteristics and complexity of the project, but also looking at more pragmatic aspects such as deadlines and budget.
The Four Ps of AJAX: Perspective, Problems, Patterns and Practices
2:30 PM – 3:45 PM
Dino Esposito
AJAX pushes a change of paradigm in the design of Web applications. Simply put, the new generation of Web applications communicates with the back end by sending requests and getting responses instead of submitting forms to get pages. As dramatic as it may sound, there’s no framework today that *fully* supports this model. An AJAX application has a browser-based front end clearly separated from a service-based back end. We do have tools and techniques for the back end, but not for the front end. Paradoxically, AJAX is all about the user experience, but then developers and architects have not adequate tools to design this user experience effectively. The demand of AJAX developers is not properly supported by browsers — that’s the (bitter) reality. We are building a new Web always using the same basic set of tools which sparked the Web to life fifteen years ago. Can we move towards a new generation of browsers? If we do it, we would break the astral conjunction that brought currently more than 90% of the browsers to support the same features — the primary reason for the success of AJAX. How can you ultimately add AJAX to Web sites? One option is Silverlight 2.0 if you can afford a plug-in. Another option is enriching the combination of HTML and JavaScript in your pages. And this means solving new user interface problems, employing new patterns, and developing new practices. In this session, you’ll see sample implementations of common AJAX patterns and an overview of the approach to AJAX taken by some popular commercial products.
Exploring Silverlight 2.0
4:00 PM – 5:00 PM
Dino Esposito
The Web was designed to share and link documents over a particular network; it was not invented to deliver rich applications. Fifteen years later, though, we’re still using HTML and HTTP to create true applications with a rich presentation layer and sophisticated back end. And then we complain about bandwidth, slow rendering, and the cumbersome model of interaction established between the user and the system. The AJAX paradigm is definitely a quantum leap for Web architects. AJAX solves many problems, but it also has drawbacks and sharpens existing, but partially latent, issues. And AJAX is a paradigm for enriching traditional Web applications based on HTML and powered by script languages. If you need true programming power on the Web client, then you need a browser extension capable of running locally compiled code in a cross-platform and secure way. Enter Silverlight 2.0. This session explores the architecture of Silverlight 2.0, the embedded core CLR and its security model, the object model exposed to developers and the connections it may have with ASP.NET AJAX.
DAY 2B
Windows Workflow Foundation Fundamentals
9:00 AM – 10:30 AM
Brian Noyes
Windows Workflow Foundation (WF) is a framework for building business process workflow applications using the Microsoft .NET Framework. Workflow provides a design abstraction for building sequential processes or state-machine driven logic in middle tier or presentation tier applications. In this session, you will learn about the capabilities and architecture of WF and how to use it to drive application processes. You will learn how to create sequential workflow libraries and integrate them into a business layer or service, and you will learn how to create state machine workflows and use them to manage the state of back end or UI processes. You will get a quick introduction into some of the most common Activities and how to use them to compose a workflow.
Workflow Hosting and Communications
10:45 AM – 12:00 PM
Brian Noyes
One you understand the basics of Windows Workflow Foundation (WF) and can put together a workflow using the built-in activities, you will next need to know how to get that workflow running in a variety of hosting environments and communicate between the workflow and the host application or the outside world. This session will give you a solid foundation into how to get started with these techniques. You will get a better understanding of how workflows exist in a hosting process and how to control the hosting services. You will learn about the various forms of communication that can exist between a running workflow and the hosting application as well as with outside Web and WCF Services. You'll also get exposed to the persistence and tracking features of WF.
WPF Fundamentals
1:00 PM – 2:15 PM
Brian Noyes
WPF introduces a whole new approach to developing UI applications. This session will explore what WPF is, why you need it, what is different about it from other UI technologies, and how to use it. You will learn about the basic constructs and development process for WPF applications. You will learn about the compositional model of a WPF application, and what the most common built-in elements are that you will use to compose applications. You will learn about the XAML markup language and how it is used with WPF. Youýll learn what the different kinds of WPF applications are and how to deploy them. Finally, you will get exposed to some of the high-end graphical capabilities that WPF enables.
WPF Data Binding, Styles, and Resources
2:30 PM – 3:45 PM
Brian Noyes
Once you get past building a simple WPF application, you are bound to need to present data in your WPF applications. You will also want to present a consistent look and feel in your different windows, and won't want to have to do a lot of work to achieve that. You’ll need to put the reusable portions of your UI definition somewhere that facilitates reuse. This session will teach you about the data binding mechanisms in WPF, and how to get data presented in a rich way within your applications using DataContexts, bindings, data templates and more. It will discuss and demonstrate how styles can be defined and flowed through your element hierarchy to minimize the effort of achieving consistent and rich UI styling while not limiting your ability to have explicit control over the appearance of every UI element. Along the way you will learn how to store data templates and styles in resource dictionaries, and you will learn how to manage those resource dictionaries to put them at the appropriate scope and make them reusable.
WPF Control Templates and Custom Controls
4:00 PM – 5:00 PM
Brian Noyes
To get beyond a simple forms-over-data application and start leveraging some of the graphics capabilities of WPF, you will likely need to start creating customized controls to encapsulate specific presentation and interaction functionality in your application, and to make those experiences reusable. This session will explore the spectrum of control customization options you have in WPF, starting with control templates, and moving into custom rendering and container controls. You’ll learn that you often don’t need to write a full blown custom control to get a custom user experience, but can change the appearance of existing controls to get what you are looking for. You’ll learn how to take advantage of the rendering capabilities of WPF to do the drawing for custom controls, as well as how to add in a little animation to make your controls “pop”. Finally, if you need to develop custom controls that contain multiple items or controls, you’ll see how to do that as well.
|