Visual Studio 2010 and .NET 4 Six in One

  

  VISUAL STUDIO® 2010 AND .NET 4 SIX-IN-ONE INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxiii

   PART I VISUAL STUDIO CHAPTER 1 History of Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 CHAPTER 2 Visual Studio UI Enhancements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 CHAPTER 3 Visual Studio Code Snippets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31 CHAPTER 4 Visual Studio Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 CHAPTER 5 Getting the Most Out of the IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 CHAPTER 6 Visual Studio Extensibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 PART II .NET 4 CHAPTER 7 .NET Framework Version History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

CHAPTER 8 Modern UI Frameworks (WPF and Silverlight) . . . . . . . . . . . . . . . . . . . . 297 CHAPTER 9 Windows Communication Foundation (WCF) . . . . . . . . . . . . . . . . . . . . . 375 CHAPTER 10 Enhancements to the .NET Core Framework . . . . . . . . . . . . . . . . . . . . . 399 CHAPTER 11 Enhancements to the .NET Workfl ow Framework . . . . . . . . . . . . . . . . . 489 CHAPTER 12 Enhancements to the .NET Data Framework . . . . . . . . . . . . . . . . . . . . . 563 CHAPTER 13 Enhancements to the .NET Communication Framework . . . . . . . . . . . 581 CHAPTER 14

  .NET Charting Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593

  PART III ASP.NET 4.0 CHAPTER 15 ASP.NET Version History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 CHAPTER 16 ASP.NET Charting Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669 CHAPTER 17 ASP.NET Dynamic Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711 CHAPTER 18 ASP.NET Model View Controller (MVC) . . . . . . . . . . . . . . . . . . . . . . . . . . .751 CHAPTER 19 ASP.NET Ajax Improvements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837 CHAPTER 20 ASP.NET Ajax Control Toolkit and jQuery . . . . . . . . . . . . . . . . . . . . . . . . 893

  

  PART IV VB.NET CHAPTER 21 History of Visual Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981 CHAPTER 22 Visual Basic 10.0 Language Improvements . . . . . . . . . . . . . . . . . . . . . . 1007 PART V C# CHAPTER 23 History of C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1041 CHAPTER 24 C# 4.0 Language Improvements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1065 PART VI F# CHAPTER 25 Visual F# and the Other .NET Languages . . . . . . . . . . . . . . . . . . . . . . . .1103 INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1173

  Visual Studio® 2010 and .NET 4 SIX-IN-ONE

  Visual Studio® 2010 and .NET 4 SIX-IN-ONE István Novák András Velvárt

  Adam Granicz György Balássy Attila Hajdrik Mitchel Sellers

  Gastón C. Hillar Ágnes Molnár Joydip Kanjilal

  ® Visual Studio 2010 and .NET 4 Six-in-One Published by Wiley Publishing, Inc.

  10475 Crosspoint Boulevard Indianapolis, IN 46256 www.wiley.com Copyright © 2010 by Wiley Publishing, Inc., Indianapolis, Indiana Published simultaneously in Canada

ISBN: 978-0-470-49948-1

  ISBN: 978-1-118-00113-4 (ebk)

  ISBN: 978-1-118-00295-7 (ebk)

  ISBN: 978-1-118-00298-8 (ebk) Manufactured in the United States of America 10 9 8 7 6 5 4 3 2 1

No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means,

electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108

of the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through payment of the appropriate per-copy fee to the Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 646-8600. Requests to the Publisher for permission should be addressed to the Permissions Department, John Wiley & Sons, Inc., 111 River Street, Hoboken, NJ 07030, (201) 748-6011, fax (201) 748-6008, or online at http://www.wiley.com/go/permissions.

  Limit of Liability/Disclaimer of Warranty: The publisher and the author make no representations or warranties with respect to the accuracy or completeness of the contents of this work and specifi cally disclaim all warranties, including without limitation warranties of fi tness for a particular purpose. No warranty may be created or extended by sales or promotional materials. The advice and strategies contained herein may not be suitable for every situation. This work is sold with the understanding that the publisher is not engaged in rendering legal, accounting, or other professional

services. If professional assistance is required, the services of a competent professional person should be sought. Neither

the publisher nor the author shall be liable for damages arising herefrom. The fact that an organization or Web site is

referred to in this work as a citation and/or a potential source of further information does not mean that the author or the

publisher endorses the information the organization or Web site may provide or recommendations it may make. Further,

readers should be aware that Internet Web sites listed in this work may have changed or disappeared between when this

work was written and when it is read.

  For general information on our other products and services please contact our Customer Care Department within the United States at (877) 762-2974, outside the United States at (317) 572-3993 or fax (317) 572-4002.

Wiley also publishes its books in a variety of electronic formats. Some content that appears in print may not be available

in electronic books.

  Library of Congress Control Number: 2010924589

Trademarks: Wiley, the Wiley logo, Wrox, the Wrox logo, Programmer to Programmer, and related trade dress are trade-

marks or registered trademarks of John Wiley & Sons, Inc. and/or its affi liates, in the United States and other countries,

and may not be used without written permission. Visual Studio is a registered trademark of Microsoft Corporation in the

United States and/or other countries. All other trademarks are the property of their respective owners. Wiley Publishing,

Inc., is not associated with any product or vendor mentioned in this book.

  

To Henriett, Eszter and Reka, who supported me in

writing this book with their love and appreciation.

  — Istv á n Nov á k To Á gi, always.

  — Gy ö rgy Bal á ssy First and foremost, I would like to thank my daughter, Patr í cia Csenge, for always making me

smile and for understanding while I was writing this

book instead of playing with her on weekends. She is my everything, and I dedicate this book to her.

I also thank my wife, Eszter, for standing beside me

throughout my career and while

  I was writing this book.

  — Attila Hajdrik To my son, Kevin, and my nephew, Nicolas.

  — Gast ó n

  C. Hillar

ABOUT THE AUTHORS

   ISTV Á N NOV Á K is an associate of Grepton, a Hungarian IT services company.

  He works as a software architect and community evangelist. In the last 20 years, he participated in more than 50 enterprise software development projects. In 2002, he co - authored the fi rst Hungarian book about .NET development. In 2007, he was awarded with the Microsoft Most Valuable Professional (MVP) title. He holds a master ’ s degree from the Technical University of Budapest, Hungary, and also has a doctoral degree in software technology. He lives in Dunakeszi, Hungary, with his wife and two daughters. He is a passionate scuba diver. You may have a good chance of meeting him underwater at the Red Sea in any season of the year.

   ANDR Á S VELV Á RT

  is a Silverlight MVP, with a passion for user experience. As an accomplished speaker, he gives talks at numerous conferences where Windows Presentation Foundation (WPF) or Silverlight is the topic. Chapter 8 of this book feeds from his experience at teaching many Silverlight and WPF classes and work- shops. He is also the owner of Response Ltd. ( www.response.hu ), a small consulting and WPF/Silverlight development company in Hungary.

ADAM GRANICZ

  is the CEO of IntelliFactory, a leading provider of F# training, development, and consulting services, as well as technologies that enable rapid functional, reactive web development. As one of the fi rst F# users, he is a key community member and an active F# evangelist. He has been the co - author of two F# books with Don Syme, the designer of the language. He is a regular speaker at developer conferences and various industry partner events.

   GY Ö RGY BAL Á SSY teaches web portal development as a lecturer at Budapest

  University of Technology and Economics. He is a founding member of the local MSDN Competence Centre (MSDNCC), having an important role in evangelizing the .NET platform as a speaker, book author, and consultant. He provided leadership in the foundation of the Hungarian .NET community as a key evangelist on Microsoft events, technical forums, and as the head of the Portal Technology Group in the

  MSDNCC. He is a regular speaker on academic and industrial events, presenting in - depth technical sessions on .NET, ASP.NET, Offi ce development, and ethical hacking, for which he won the Best Speaker and the Most Valuable Professional (MVP) Awards in SharePoint and ASP.NET multiple times. He was selected to be the member of the ASPInsiders group. Since 2005, he has been the Microsoft Regional Director in Hungary.

  

ATTILA HAJDRIK has worked in the IT industry for more than 14 years. He is the founder and lead

  architect of Eyedea Ltd., a small independent software vendor (ISV) specializing in Rich Internet Application (RIA) development. Before founding his own company, he worked for 6 years at Microsoft as an Application Development Consultant, and later as a Senior Consultant in Microsoft Services. He specialized in .NET - based custom development projects. In 2004, He was awarded an

ABOUT THE AUTHORS

  ASP.NET Most Valuable Professional (MVP) title. He has experience with all .NET - related tech- nologies from the back end to the front end. He is addicted to Doman Specifi c Languages, model - based development, and a big believer in design patterns. His favorite technologies are Silverlight, Windows Presentation Foundation (WPF), and ASP.NET Model View Controller (MVC).

   MITCHEL SELLERS specializes in software development using Microsoft technologies.

  He is the CEO of IowaComputerGurus Inc., a Microsoft C# MVP, a Microsoft Certifi ed Professional, and experienced technical writer. He enjoys spending time sharing information with the development community through books, blog postings, and public speaking events. He is also an active participant in the DotNetNuke development community. For more information on him, visit his website at

  http://www.mitchelsellers.com .

   GAST Ó N C. HILLAR has been working with computers since he was 8 years old.

  He began programming with the legendary Texas Instruments TI - 99/4A and Commodore 64 home computers in the early 1980s. He has worked as developer, architect, and project manager for many companies in Buenos Aires, Argentina.

  He is now an independent IT consultant working for several American, German, Spanish, and Latin American companies, and a freelance author. He has written four books in English, contributed chapters to two other books, and has written more than 40 books in

  Spanish. He contributes to Dr. Dobb ’ s Go Parallel programming portal (

  http://www.ddj

  ), Dr. Dobb ’ s ( ), and is a guest blogger at Intel Software

  • .com/go parallel/ http://drdobbs.com Network ( ). He lives with his wife, Vanesa, and his son, Kevin.

  http://software.intel.com

  When not tinkering with computers, he enjoys developing and playing with wireless virtual reality devices and electronic toys with his father, his son, and his nephew, Nico. You can reach him at . You can follow him on Twitter at

  gastonhillar@hotmail.com http://twitter.com/ . His blog is at . gastonhillar http://csharpmulticore.blogspot.com ÁGNES MOLNÁR has been working with Microsoft technologies and SharePoint since 2001. After

  a few years of working as a developer and SharePoint expert, she founded a SharePoint consulting company in Hungary, Central Europe. She ’ s been working as a senior consultant, and has led SharePoint implementations at numerous Central European companies. Her main focus is on architecture, governance, information and knowledge management, and enterprise search. She ’ s a frequent speaker at conferences around the globe, and is also the co - author of various SharePoint books.

   JOYDIP KANJILAL was awarded a Microsoft Most Valuable Professional (MVP) title in

  ASP.NET in 2007, 2008, and 2009. He has more than 12 years of industry experience in IT, with more than 6 years experience in Microsoft .NET and its related technologies. He was selected as MSDN Featured Developer of the Fortnight (MSDN), and was also selected as Community Credit Winner at several times. He has authored numerous books on

  • www.community credit.com ASP - related topics.

  x

   ABOUT THE TECHNICAL EDITOR DOUG PARSONS is a software architect and the director of Ohio Operations for NJI New Media.

  His expertise is in web development with a specialization in political websites. Most notably, he has worked on the 2008 John McCain presidential campaign website and, more recently, Mitt Romney ’ s offi cial book tour website. In his downtime, he enjoys spending time with his lovely fi anc é e, Marisa, and their four puppies.

  ACQUISITIONS EDITOR

  Lynsey Stanford

  Richard Swadley

  VICE PRESIDENT AND EXECUTIVE PUBLISHER

  Barry Pruett

  ASSOCIATE PUBLISHER

  Jim Minatel

  PROJECT COORDINATOR, COVER

  PROOFREADERS

  Tim Tate

  Josh Chase, Word One New York James Saturnio, Word One New York

  INDEXER

  J & J Indexing

  COVER DESIGNER

  Michael E. Trent

  COVER IMAGE

  © Andreas Bauer/istockphoto.com

  VICE PRESIDENT AND EXECUTIVE GROUP PUBLISHER

  PRODUCTION MANAGER

  Paul Reese

  COPY EDITOR

  PROJECT EDITOR

  Kevin Shafer

  TECHNICAL EDITOR

  Doug Parsons

  PRODUCTION EDITOR

  Rebecca Anderson

  Christopher Jones

  David Mayhew

  EDITORIAL DIRECTOR

  Robyn B. Siesky

  EDITORIAL MANAGER

  Mary Beth Wakefi eld

  FREELANCER EDITORIAL MANAGER

  Rosemarie Graham

  ASSOCIATE DIRECTOR OF MARKETING

  CREDITS

ACKNOWLEDGMENTS THIS BOOK WOULD NOT BE SO CLEAR

  in its voice without the contribution of Kevin Shafer, who not only fi xed our typos and grammar, but added a lot of value by improving our thoughts put down to paper and ironed out our tangled sentences. Doug Parsons examined the technical content very carefully, tried all the sample code we prepared, and gave us a lot of suggestions to improve the understandability of examples. Without his thorough work, samples would contain many more bugs and ambiguous code details.

  — Istv á n Nov á k

   I WOULD LIKE TO THANK

  my wife and family for their support, and coping with the long hours and nights of writing. A special thank you goes to my friend, István Novák, who got me to write the Modern UI Frameworks chapter, and kept the project alive even if it meant that he had to write more than half of the book — a lot more than what his share was.

  — András Velvárt

   I WOULD LIKE TO THANK Istv á n Nov á k for his help and useful tips he gave me to write this book.

  Last but not least, I would like to thank Tam á s Varga for inspiring me to get this book done. ”

  — Attila Hajdrik

THIS BOOK STARTED OUT AS MY IDEA

  and I was the original sole author. However, because of soft- ware release delays and schedule confl icts, that ended up not being feasible, and I wasn ’ t sure what would happen with the book. Other authors were brought on to help with the writing. I am very grateful for the hard work and dedication that each of them gave toward this book. Without their efforts, the book would have never made it past the overall concept. This is the second book that I have been an author on with Wiley/Wrox, and I have to say that their entire team deserves a pat on the back. I would like to call special attention to two individuals. Paul Reese (Acquisitions Editor) put up with my schedule and availability changes, while still allowing me the opportunity to be an author on the book. Kevin Shafer (Project Editor) was yet again a

  ACKNOWLEDGMENTS

  great person to work with, and helped keep everything moving through the process smoothly. The technical editors and all other individuals on the project were critical to getting the book fi nalized and ready to release.

  — Mitchel Sellers

   I WISH TO ACKNOWLEDGE

  Paul Reese and Kevin Shafer. Paul gave me the opportunity to be part of another project of this size and scope. Kevin improved my paragraphs and found the right place for each code snippet. The reader will notice his great work. Special thanks go to my wife, Vanesa S. Olsen, because she understood that I needed to work with many computers and mobile devices at the same time to test each code snippet.

  — Gast ó n C. Hillar xvi

  CONTENTS

  

INTRODUCTION xxxiii

PART I: VISUAL STUDIO CHAPTER 1: HISTORY OF VISUAL STUDIO

  3 Roots 4 The First Breakthrough: Visual Basic

  4 Other Languages and Tools

  4 Visual Studio 97 and 6.0

  5 Visual Studio.NET 2002 and 2003

  5 Visual Studio 2005

  7 Visual Studio 2008

  8 Visual Studio 2010

  10 Changes in Editions

  10 What’s New in Visual Studio 2010

  12 Shift to WPF

  12 Summary 13

CHAPTER 2: VISUAL STUDIO UI ENHANCEMENTS

  15 Basic IDE Overview

  15 Exploring the Start Page

  15 Understanding Window Management

  16 New Project Dialog Window

  17 Creating New Projects in a New Way

  19 Using the Add Reference Dialog Window

  19 Using the Extension Manager

  20 Exploring New Daily Development Features

  20 Exploring the Code Editor Window

  20 Code Navigation

  22 Generate From Usage

  24 Exploring the Visual Designers

  25 WPF Designer

  26 XML Schema Designer

  27 New Tools for Architects

  27 Summary 29

  CONTENTS

CHAPTER 3: VISUAL STUDIO CODE SNIPPETS

  31 Understanding Code Snippets

  32 Using Code Snippets

  34 HTML, SQL, and JScript Code Snippets

  37 Creating Code Snippets

  38 Creating a Simple Code Snippet

  38 The Code Snippet File Structure

  41 Managing Code Snippets

  51 The Code Snippet Manager

  52 Code Snippet Storage

  53 Adding and Removing Snippets

  54 Importing Snippets

  54 Advanced Code Snippet Features

  56 Multiple Snippets in a File

  56 Code Snippets in Other Languages

  58 Building Online Code Snippet Providers

  59 Snippet Editors

  59 Export as Code Snippet Add-In

  60 Snippet Designer

  61 Snippet Editor

  62 Summary 63

CHAPTER 4: VISUAL STUDIO TEMPLATES

  65 The Role of Templates

  66 Project Templates

  67 Item Templates

  69 Creating Templates

  70 Creating a Simple Project Template

  71 Creating a Simple Item Template

  76 Template Storage Structure

  81 Template Folders

  82 The Template Manifest File

  84 Customizing Templates

  98 Template Parameters

  98 Custom Template Parameters

  99 Wizards 101 Deploying Templates

  110 Exporting and Importing Templates 111 Creating a Template Installation Kit 114

  Summary 125 xviii

  CONTENTS

CHAPTER 5: GETTING THE MOST OUT OF THE IDE 127 Window Management

  128 Visual Studio Window Architecture 128 Tool Windows

  131 Document Windows 132 Arranging Windows 134

  Customizing Menus and Toolbars 138 The Customize Dialog

  139 Adding Menus and Commands 140 Creating and Rearranging Toolbars 144 Context Sensitivity

  145

  IDE Confi guration 145

  The Options Dialog 145 Changes in Option Pages

  147 Visual Studio Settings 150

  Reducing Eff orts with Keyboard Shortcuts 155 Command Routing and Command Contexts 155 Working with Keyboard Shortcuts 157 Working with Keyboard Mapping Schemes 160

  Custom Start Pages 162

  Creating Your First Custom Start Page 163 Changing the StartPage.xaml File 173 Accessing the Visual Studio Context 176 Accessing the Visual Studio Object Model 182 A Few More Points About Start Pages 186

  Customizing the Toolbox 186

  A Lap Around the Toolbox 186 Customizing Toolbox Tabs 189 Adding Items to the Toolbox

  190 A Few More Points About Toolbox Customization 193 Visual Studio Gallery

  193 Browsing the Visual Studio Gallery 194 Downloading and Installing Components 196 Adding Your Own Contributions to the Gallery 197 Working Together with the Community 198

  Summary 198 xix

  CONTENTS

CHAPTER 6: VISUAL STUDIO EXTENSIBILITY 201 The Visual Studio Shell and Packages 202 Package Integration

  203 Extensibility Out of the Box

  204 Extending Visual Studio by Customization 204 Using Macros to Automate Common Tasks 208 Visual Studio Add-Ins

  209 Extensions with Visual Studio SDK 210

  The Full Power of Extensibility 210 Visual Studio Package Development 211 Editor Extensibility

  212 Creating Visual Studio Macros 213

  Understanding the Structure of Macros 213 Using the Macros IDE 218 Recording and Developing Macros 221

  Macro Samples 225

  Creating Visual Studio Add-Ins 229 Add-In Architecture

  229 Creating a Simple Add-In 230 Using the Automation Model

  239 Going on with Add-In Development 241 Visual Studio Packages in a Nutshell 242

  Creating a Package with a Simple Menu Command 242 Debugging the Package 254

  Extending the New Editor 255

  Extending the Editor with the Managed Extensibility Framework 256 Editor Extensibility Points 258 Creating a Simple Classifi er 260

  Summary 275

  PART II: .NET 4 CHAPTER 7: .NET FRAMEWORK VERSION HISTORY 279 Before the .NET Framework 279

  Win/Win32 Programming in C 279 C++ Programming 280 Programming in Visual Basic 280 Programming in Delphi

  281 COM Programming 281 xx

  CONTENTS The Origin and Goals of the .NET Framework 282 Evolution of the .NET Framework 283 .NET Framework 1.0

  286 .NET Framework 1.1 286 .NET Framework 2.0 286 .NET Framework 3.0

  287 .NET Framework 3.5 287 .NET Framework 4.0

  288 .NET Compact Framework 289 .NET Micro Framework 289

  .NET Framework Architecture 289 Common Language Run-time (CLR) 290 Base Class Library

  291 Services of the .NET Architecture 292 Main Benefi ts of the .NET Framework 293 Summary 294 297

CHAPTER 8: MODERN UI FRAMEWORKS (WPF AND SILVERLIGHT) The Importance of User Experience 297 Developers Are from Vulcan, Designers Are from Venus 299 A New Generation of Presentation Frameworks 301 The Ten Pillars of Silverlight

  303

  XAML 304 Tools for Working with Silverlight (and WPF) 313 Layout 315 Data Binding

  322 Styles 330 Templates 332 Animations 341 Media 345 Networking 352 Other Features

  355 Windows Presentation Foundation 359

  WPF Features not Available in Silverlight 361 Choosing Between WPF and Silverlight 366 Designer - Developer Cooperation in Silverlight and WPF 367

  A Common Solution Format 367 Blendability 368

  Design Time Sample Data in Blend 369 xxi

  CONTENTS SketchFlow 370 Triggers, Actions, and Behaviors 371 Model-View-ViewModel Pattern 372

  Summary 373 375

  

CHAPTER 9: WINDOWS COMMUNICATION FOUNDATION (WCF)

WCF Versus ASMX Web Services 375 A Quick Look at SOA 376

  Service 377 Service Provider 377 Service Consumer(s) 377 Service Registry 377 Service Contract 377 Service Proxy

  378 Service Lease 378 Message 378

  Service Description 378 Advertising and Discovery 378

  Building Blocks of the WCF Architecture 378 Getting Started With WCF 381

  Creating the WCF Service 382 Defi ning Data Contracts

  386 Specifying the Binding Information 387 Hosting the WCF Service

  388 Creating the Service Proxy 389 Creating the Service Client — The Service Consumer 391

  Working with an Ajax-Enabled WCF Service 392 REST and WCF 394 Implementing a WCF Service Declaratively 394

  Defi ning the Service Contract 395 Hosting the Service 396 Implementing the Service Logic Declaratively 396

  Summary 398

  CHAPTER 10: ENHANCEMENTS TO THE .NET CORE FRAMEWORK 399 Changes in Common Language Run-time 400 In-Process Side-By-Side Execution 400 DLR Integration 402 Type Equivalence

  411 xxii

  CONTENTS Parallel Computing 415

  The Challenge of Many-core Shift 416 The Microsoft Approach 418 Parallel LINQ 421 Task Parallel Library

  428 Code Contracts

  455 Managed Extensibility Framework 463 The Challenge

  463 A Simple MEF Example 465 Basic MEF Concepts

  471 Composition 477 A Few More Points on MEF

  486 Summary 487

CHAPTER 11: ENHANCEMENTS TO THE .NET WORKFLOW FRAMEWORK 489 An Introduction to WF 4.0

  490 The Workfl ow Design Surface 491 The Hello Workfl ow Application 492

  Creating Flowcharts and Coded Workfl ows 499 Flowcharts in WF 4.0

  500 Code-Only Workfl ows 505

  Workfl ow Architecture 509

  Workfl owApplication and Hosts 510 Activities 511 Extensions 512 Workfl ow Activity Model Changes 513

  Workfl ow Activity Library 517

  Primitive Activities 518 Flow Control Activities 518 Workfl ow Run-Time Activities 520

  Flowchart-Specifi c Activities 521 Error-Handling Activities

  522 Transaction-Handling Activities 523 Collection-Handling Activities 524 Messaging Activities

  525 Using the Compensating Transaction Model 527

  The ConferenceWorkfl ow Example 527 Implementing Cancellation, Confi rmation, and Compensation 528 Cancellation 530 Compensation 530 xxiii

  CONTENTS Persistence and Human Interactions 532 The DomainNameWorkfl ow Project 533 Workfl ow Tracking

  544 Workfl ow Services

  551 Creating a Workfl ow Service

  551 Using Workfl owServiceHost 553

  Summary 562

  CHAPTER 12: ENHANCEMENTS TO THE .NET DATA FRAMEWORK 563 Language Integrated Query (LINQ) 563 LINQ Operators 564 LINQ Implementations 566

  Parallel LINQ (PLINQ) 572 Entity Framework 573

  Entity Framework Architecture 573 The Entity Data Source Control 579 Choosing Between LINQ to Entities and LINQ to SQL 579 Summary 579

  

CHAPTER 13: ENHANCEMENTS TO THE .NET COMMUNICATION

FRAMEWORK 581 Enhancements in WCF Framework 3.5 581 Enhancements in WCF Framework 4.0 583 Simplifi ed Confi guration 583 Standard Endpoints 585 Discovery 586

  REST Improvements 588 Routing Service 589

  Summary 592

  CHAPTER 14: .NET CHARTING COMPONENTS 593 Creating Charts 594

  Creating a Simple Chart 594 Adding Data to the Chart Programmatically 598

  Adding Charts to WPF Applications 603 Using Chart Controls

  605 Elements of a Chart

  606 The Chart Class 607 Chart Types

  609 Chart Coordinate System 617 xxiv

  CONTENTS Three-Dimensional Charts

  619 Appearance of Chart Elements 621 Axes and Related Chart Elements 623 Data Points

  630 Advanced Chart Manipulation 633

  Annotations 633 Binding Data to Series 638 The DataManipulator class

  641 More Chart Manipulations 648

  Summary 649

  PART III: ASP.NET 4.0 CHAPTER 15: ASP.NET VERSION HISTORY 653 Development of the Web and Web Development 653 Enter ASP 654 Enter ASP.NET 655 ASP.NET Version History

  657

ASP.NET 1.0

  659 ASP.NET 1.1 659 ASP.NET 2.0 659 ASP.NET 3.0 664 ASP.NET 3.5 665 ASP.NET 3.5 SP1

  667 ASP.NET 4.0 667

  Summary 668

  CHAPTER 16: ASP.NET CHARTING CONTROLS 669 Creating Charts 670

  Adding a Chart Control to a Page 670 Setting up Charts in an Event Handler Method 674 Binding Data to the Chart

  676 Rendering ASP.NET Charts

  679 Image URL Rendering

  680 Using Charts with Legacy Web Sites 683 Binary Stream Rendering

  684 Chart State Management

  688 Saving Chart State

  688 Advanced Chart State Management 690 xxv

  CONTENTS User Interactivity 694

  Using Tooltips 694 Handling Clicks on Data Points 696

  Interactivity With Ajax 697 A Few More Points on User Interactivity 709

  Summary 709

  CHAPTER 17: ASP.NET DYNAMIC DATA 711 Creating a New Dynamic Data Web Site 711 Working Against a Data Model 711 Displaying Data from Existing Tables 716 Creating Simple CRUD Applications 718 Creating a Dynamic Data Application for Master-Detail Relationships 725 Working to Modify Implementation to Fit Business Needs 730 Understanding Dynamic Data’s Structure 730 Customizing the Look and Feel 732 Working with Page Templates 735 Working with Field Templates 738 Working with Entity Templates 741 Working with Filter Templates 744 Creating Custom Pages 746 Customizing Validations

  747 Summary 750 751

CHAPTER 18: ASP.NET MODEL VIEW CONTROLLER (MVC) Introduction to MVC

  752 Similar Design Patterns

  753 Microsoft and the Web Platform 753 What Is Microsoft ASP.NET MVC 2? 754 Extensibility in MVC

  760 Creating an MVC 2 Application 761

  The Project Structure 763 How Does it Work? 764

  Adding New MVC 2 Pages 771

  Create a Database 771 Create a Model

  772 Listing Books 773 Adding Book Actions

  779 xxvi

  CONTENTS Customization in MVC 2 790

  Model Binding 790 Validation 795

  UI Customization 804

  Routing Details 816

  Controller Factory 816 Infl uencing the Execution Flow 817

  Authorization 819 Action and Result Filtering 821 Exception Filtering

  822 ActionResult 822 Testing with MVC 2

  824 Refactoring AcmeLibrary

  824 Creating and Running Unit Tests 831 A Few More Points on MVC 2 834

  Areas 834 Metadata Providers 834 Value Providers 834 Model Binders

  835 Child Actions 835 Asynchronous Controllers 835

  Summary 835

CHAPTER 19: ASP.NET AJAX IMPROVEMENTS 837 Understanding Ajax

  838 The XMLHttpRequest Object 839 ASP.NET and Ajax

  840 Using the ASP.NET Ajax Server Controls 841

  Refactoring the Framework Libraries 844 Using the Microsoft CDN 846

  Using the Microsoft Ajax Library 848 Working with DOM Elements 852 The Script Loader

  855 Client-Side Data Binding with Templates 859 Advanced Data-Binding Scenarios 872 Working with Server-Side Data 878

  Summary 892 xxvii

  CONTENTS

  CHAPTER 20: ASP.NET AJAX CONTROL TOOLKIT AND JQUERY 893 First Look at the Ajax Control Toolkit 894 Installing the Ajax Control Toolkit 894 Creating a Simple Web Application with the Toolkit 896 Using the Controls of the Toolkit 908 New Server Controls 915 Control Extenders

  938 Animations 957 The jQuery Library

  962 “Hello, World” with jQuery

  963 Selectors and Filters 965 Chaining and Utility Functions 970

  Eventing Model and Event Handlers 971 Visual Eff ects and Animations 975 jQuery Ajax Features

  976 Summary 977

  PART IV: VB.NET CHAPTER 21: HISTORY OF VISUAL BASIC 981 The Roots of Visual Basic 982

  Structured and Unstructured BASIC 982 Moving to “Visual” 984 Visual Basic in the 1990s 985

  Visual Basic in the .NET Framework 986 Design Goals and Debates

  986 Visual Basic .NET (7.0) and .NET 2003 (7.1) 987 Visual Basic 2005 (8.0)

  989 Visual Basic 2008 (9.0) 997

  Summary 1005

  CHAPTER 22: VISUAL BASIC 10.0 LANGUAGE IMPROVEMENTS 1007 New Productivity-Improving Syntax 1008 Implicit Line Continuation 1008 Auto-Implemented Properties 1010

  Collection Initializers 1012 Multiline Lambda Expressions 1018

  Working with Dynamic Objects 1020 Late Binding in Visual Basic 2010 1021 Accessing an IronPython Library 1023 xxviii

  CONTENTS Variance 1026 Type Substitution

  1026 Variance in Visual Basic 2010 1029 A Few More Points on Variance 1033

  Summary 1038

  PART V: C# CHAPTER 23: HISTORY OF C# 1041 The Evolution of C# 1041

  Design Goals 1042 Short History 1042 Implementations 1043

  C# 1.0 1044

  Type System 1044 Memory Management 1045 Syntactic Sugar

  1046 C# 1.1 1047

  C# 2.0 1047

  Generic Types 1048 Partial Types

  1050 Static Classes 1051 Iterators 1052

  Anonymous Methods 1052 Delegate Inference 1053 Delegate Covariance and Contravariance 1053

  Nullable Types 1054 Property Accessors

  1055 Null-Coalesce Operator 1056 Namespace Aliases 1056

  C# 3.0 1056

  Local Variable Type Inference 1057 Extension Methods 1057 Anonymous Types

  1058 Lambda Expressions 1059 Query Expressions 1060 Expression Trees

  1061 Automatic Properties 1062 Object Initializers 1062 Collection Intializers 1063 Partial Methods 1063

  Summary 1064 xxix

  CONTENTS

CHAPTER 24: C# 4.0 LANGUAGE IMPROVEMENTS 1065 Pains with Interoperability

  1066 Creating the PainWithOffi ce Application 1066 Frustrating Issues

  1069 Remove the Pain 1070

  Dynamic Lookup 1072

  Dynamic Binding 1072 The dynamic Type 1073 Dynamic Operations

  1074 The Dynamic Language Run-time 1077 Named and Optional Parameters 1078

  Using Optional Parameters 1079 Using Named Parameters

  1081 Overload Resolution 1082

  COM-Specifi c Interoperability Features 1084 Dynamic Import

  1084 Omitting ref from Parameters 1084 Indexed Properties

  1085 Compiling Without PIAs 1086

  Variance 1087 Type Substitution

  1087 Bird’s-Eye View of Variance 1089 Variance in C# 4.0 1090 A Few More Points on Variance 1094

  Summary 1099

  PART VI: F# CHAPTER 25: VISUAL F# AND THE OTHER .NET LANGUAGES 1103 A Brief History of F# 1104 F# at First Glance 1105

  Trying Things Out with F# 1106 Understanding Syntax

  1107 Your First F# Project

  1112 Programming with F# 1113

  Namespaces and Modules 1113 Attributes 1115

  Literals and Bindings 1115 Expressions 1120

  Values and F# Types 1124 xxx

  CONTENTS Type Augmentations

  1137 Computation Expressions 1138 Sequences 1141

  Range Expressions 1143 Sequence Expressions 1143 Asynchronous Workfl ows 1144 Pattern Matching

  1146 Active Patterns 1149 Exceptions 1154

  Units of Measure 1157 Lazy Computations

  1159 Quotations 1160 Working with Database Queries 1161

  A Larger Application in F# 1163

  The Ast Module 1164 The Language Module 1164 The Evaluator Module 1166 The FunctionPlotter Module

  1167 Running the Function Plotter 1170

  Other .NET Languages 1170

  IronRuby 1170 IronPython 1170 Summary 1171

  INDEX 1173 xxxi

   INTRODUCTION

IN THE .NET DEVELOPMENT WORLD,

  we have seen massive improvements and enhancements to the framework over the last several years. Since 2006, we have seen releases of .NET 3.0, .NET 3.5, and .NET 4. We have also seen the introduction of many new technologies such as Windows Communication Foundation (WCF), Windows Presentation Foundation (WPF), Windows Workfl ow, and Silverlight that came as parts of the various releases.

  Keeping up with all of this change can be diffi cult for all developers, both those new to the industry and those who have been using .NET since its inception almost ten years ago. To help keep up with this rapid change, this book serves as an “ all - in - one reference ” for the major changes and enhancements and provides a glimpse into the specifi cs of the new technologies.

WHO THIS BOOK IS FOR

  This book was written with the experienced .NET developer in mind. Many of the chapters talk specifi cally about the enhancements or changes that have been introduced with the new versions of the .NET Framework. However, even those readers who are not fl uent in .NET development should be able take a lot out of the detailed examples provided in this book.

  For the experienced reader, a few “ history ” chapters have been added to help identify when various functionality has been added so that you can quickly identify the needed toolset to be able to adopt a specifi c feature.

WHAT THIS BOOK COVERS

  This book focuses on enhancements that have been added to .NET and Visual Studio 2010 over previous versions. In certain chapters and sections, a more historical view is presented to help provide context. For example, in the chapters discussing WCF, an examination of WCF basics and features added in .NET 3.5 are needed to help provide a full understanding of the functionality provided in the 4.0 release. This book is intended to be an overview of Visual Studio and .NET as a whole. It is not a book on any single topic, but rather a more macro - level overview. As such, many concepts will be introduced in one or two chapters to provide an overview of the functionality and how it can be leveraged. For many of the topics such as WCF, Silverlight, and WPF, there are several entire books dedicated to the topic. The goal of this book is to provide an introduction to the technology, allowing you the capability to make a selection of the next area to study in more detail.

INTRODUCTION HOW THIS BOOK IS STRUCTURED

  Given the broad scope of this book, it has been divided into six distinct sections that will help you quickly locate the content most relevant to you. It is not necessarily structured in a manner to be read cover - to - cover, although chapters are tied together to make that reading style as cohesive as possible.

  The following sections provide you with a section - by - section and chapter - by - chapter breakdown of the content included.

   Part I: Visual Studio This section is dedicated to the discussion of the Visual Studio 2010 Integrated Development Environment (IDE), and the enhancements and features available to developers. Chapter 1: “ History of Visual Studio ” — This chapter provides an important introduction ➤

  to the history of how the Visual Studio product has evolved from the foundation to the current product it is today. Major milestones and supported languages are discussed, along with major enhancements included in each release.

  ➤

  Chapter 2: “ Visual Studio UI Enhancements ” — This chapter focuses on the major User Interface (UI) changes between the Visual Studio 2008 and Visual Studio 2010 products. The conversion of Visual Studio to use Windows Presentation Foundation (WPF) provided an incredible amount of new UI features and functionality, which are all discussed in this chapter.

  Chapter 3: “ Visual Studio Code Snippets ” — From a developer productivity standpoint,

  ➤

  Visual Studio ’ s Code Snippets functionality is one of the biggest timesavers when it comes down to reducing total keystrokes. This chapter is dedicated to discussing how to use and create code snippets to improve productivity.

  ➤

  Chapter 4: “ Visual Studio Templates ” — In addition to code snippets, Visual Studio provides a robust template system that allows for templates to be created for projects or specifi c items. This chapter focuses on introducing the various template types, and how they can be used to improve the development process.

  Chapter 5: “ Getting the Most Out of the IDE ” — The feature set included in Visual Studio

  ➤

  2010 is massive, and the number of confi guration items can be mind - boggling, even to those who have been using Visual Studio for a long time. This chapter focuses on ways to get the most out of the IDE, including customization, window management, shortcuts, and the gallery.

  ➤

  Chapter 6: “ Visual Studio Extensibility ” — In addition to the robust confi guration and other features included with Visual Studio, there is additional support for extensibility in the form of plug - ins, macros, and the like. This chapter illustrates how Visual Studio is set up to allow for extension by developers.

  xxxiv

  INTRODUCTION