30
Packaging Design Packaging Design and Architecture and Architecture Guidance for Guidance for Visual Studio Visual Studio Tom Hollander Tom Hollander Wojtek Kozaczynski Wojtek Kozaczynski Harry Pierson Harry Pierson Microsoft Microsoft

Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

Embed Size (px)

DESCRIPTION

patterns & practices Architecture Guidance for the Enterprise Reference Architectures Application Blocks Guides Guidance for broad horizontal topics such as security, performance, deployment and operations Patterns DADI A D I DADI A D I Atomic solutions to recurring problems Sub-system-level guidance for common services System-level guidance for common customer scenarios DADI A D I Available online : Books available: Proven Based on field experience Authoritative Offer the best advice available Accurate Technically validated and tested Actionable Provide the steps to success Relevant Address real-world problems based on customer scenarios

Citation preview

Page 1: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

Packaging Design and Packaging Design and Architecture Architecture Guidance for Visual Guidance for Visual Studio Studio Tom HollanderTom HollanderWojtek KozaczynskiWojtek KozaczynskiHarry PiersonHarry PiersonMicrosoftMicrosoft

Page 2: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

AgendaAgenda

BackgroundBackgroundIntroducing the Guidance Automation Introducing the Guidance Automation ToolkitToolkitGAT ConceptsGAT ConceptsDemosDemosMore Important StuffMore Important Stuff

Page 3: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

patterns & practicespatterns & practicesArchitecture Guidance for the EnterpriseArchitecture Guidance for the Enterprise

Reference Reference ArchitecturesArchitectures

Application Blocks Application Blocks

Guides Guides Guidance for broad horizontal topics such as security, Guidance for broad horizontal topics such as security,

performance, deployment and operationsperformance, deployment and operations

PatternsPatterns

D A D IADI

D A D IADI

Atomic solutions to recurring Atomic solutions to recurring problemsproblems

Sub-system-level guidance for Sub-system-level guidance for common servicescommon services

System-level guidance for System-level guidance for common customer scenarioscommon customer scenarios

D A D IADI

Available onlineAvailable online: : http://www.microsoft.com/practiceshttp://www.microsoft.com/practices

Books available: Books available: http://www.amazon.com/practiceshttp://www.amazon.com/practices

Proven Based on field experienceAuthoritative Offer the best advice available Accurate Technically validated and tested Actionable Provide the steps to success Relevant Address real-world problems based on customer scenarios

Page 4: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

BackgroundBackgroundEvolution of GuidanceEvolution of Guidance

patterns & practicespatterns & practices produces guidance produces guidance in various formsin various forms

Guides Guides PatternsPatternsApplication BlocksApplication BlocksFrameworks and Baseline ArchitecturesFrameworks and Baseline Architectures

p&pp&p addresses progressively more addresses progressively more complex architectural challengescomplex architectural challenges

Complexity of assets increasesComplexity of assets increasesMore complex assets harder to evaluate, More complex assets harder to evaluate, comprehend and use comprehend and use

Page 5: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

BackgroundBackgroundExample: Data Access Application Example: Data Access Application BlockBlockprivate DataSet GetProducts(int private DataSet GetProducts(int

categoryId)categoryId){{ Database db =Database db =

DatabaseFactory.CreateDatabase("SaleDatabaseFactory.CreateDatabase("Sales");s");

return return db.ExecuteDataset("getProductsByCatedb.ExecuteDataset("getProductsByCategory", gory", categoryId); categoryId);

}}

Page 6: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

BackgroundBackgroundExample: UI Process Application Example: UI Process Application BlockBlock

<views> <view name="Form1“

type="Demo.Form1, Demo" controller="MyController“

layoutManager=“VerticalLayoutManager”   stayOpen="true"/>

<view name="Form2" type="Demo.Form2, Demo" controller="MyController" />

<view … />…

</views>

Page 7: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

BackgroundBackgroundExample: EDRA Application Example: EDRA Application FrameworkFramework Application framework Application framework

supportingsupportingSeparation of service Separation of service interface and interface and implementationimplementationSeparation of business Separation of business logic and cross-cutting logic and cross-cutting concerns concerns Separation of business Separation of business logic and underlying logic and underlying transportstransportsDifferent deployment Different deployment patternspatterns

Service Transports

`

Service Dispatching Transports

Timouts

LoggingM

onitoring

BusinessE

ventA

utho-rization

Validation

Cross-cutting Logic H

andlers

Clients Services

. . .

Cross-Cutting Logic

Cross-Cutting Logic

BusinessWorkflow

BusinessComponents

Business Entities

Data Access Logic

ComponentsService Agents

Business Actions

Service AgentsData Access Logic

Components

Business Entities

BusinessComponents

BusinessWorkflow

Page 8: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

BackgroundBackgroundThe ChallengeThe Challenge

As our assets get more involved:As our assets get more involved:We need to write more documentationWe need to write more documentationCustomers need to read more Customers need to read more documentation to use assets correctlydocumentation to use assets correctly““guidance” value of asset diminishes if if guidance” value of asset diminishes if if takes a lot of reading to use it effectivelytakes a lot of reading to use it effectively

We need a way to make more complex We need a way to make more complex guidance easily consumable without guidance easily consumable without relying entirely on documentation!relying entirely on documentation!

Page 9: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

BackgroundBackgroundWe are not alone…We are not alone…

When we started looking at this When we started looking at this problem, we realized that it is commonproblem, we realized that it is common

Consumability of components, frameworks Consumability of components, frameworks and application architectures built by our and application architectures built by our customerscustomersConsumability of assets derived from Consumability of assets derived from patterns & practicespatterns & practices deliverables deliverables

Page 10: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

Introducing the Introducing the Guidance Automation ToolkitGuidance Automation Toolkit

Light-weight extensibility mechanism to Light-weight extensibility mechanism to Visual Studio 2005 Visual Studio 2005 Allows to build user experience guiding Allows to build user experience guiding the developer through how to use code the developer through how to use code assets in Visual Studioassets in Visual StudioFirst preview version will be available First preview version will be available soon – check at soon – check at http://microsoft.com/practiceshttp://microsoft.com/practices for details for details

Page 11: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

Introducing GATIntroducing GATGoalsGoals

Simplify authoring reusable, parameterizable Simplify authoring reusable, parameterizable software assetssoftware assets

Artifact templates Artifact templates Actions modifying solution artifactsActions modifying solution artifactsWizards guiding the use of templates and actions Wizards guiding the use of templates and actions

Familiar user experience for developing with Familiar user experience for developing with reusable assetsreusable assets

Wizard for gathering information from developerWizard for gathering information from developerExpanding templates with gathered informationExpanding templates with gathered informationExecuting “recipes” with gathered information, Executing “recipes” with gathered information, where recipe is a sequence of parameterized where recipe is a sequence of parameterized actions that transform solution artifacts to actions that transform solution artifacts to automate a developer use-caseautomate a developer use-case

Page 12: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

Introducing GATIntroducing GATSoftware Asset LifecycleSoftware Asset Lifecycle

Reuse

Packaging& Cataloging

Search &RetrievalCreation

apply

feedback

Inform

harvest

inform

fitSDLC

Simplify ways of creating, packaging and storing reusable,software assets

Accelerate solution development with reusable assets by putting them in VS tools

Simplify locating, reviewing and obtaining reusable assets

Page 13: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

Introducing GATIntroducing GATScopeScope

Reuse

Packaging& Cataloging

Search &RetrievalCreation

apply

feedback

Inform

harvest

inform

fitSDLC

Page 14: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

Introducing GATIntroducing GATGAT and GAX in the guidance GAT and GAX in the guidance lifecyclelifecycle

Visual Studio 2005

Guidance Automation eXtensions

Guidance Automation Toolkit

GuidancePackage

SourceCode

Application

GuidanceAuthor

(Architect)

GuidanceConsumer

(Developer)

End User

builds

generates

compiles to

Page 15: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

GAT ConceptsGAT Concepts

RecipeRecipeVisual Studio TemplateVisual Studio TemplateText TemplateText TemplateGuidance PackageGuidance Package

Page 16: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

GAT Concepts GAT Concepts RecipeRecipe

A Recipe supports a developer use-case, A Recipe supports a developer use-case, through a structured, parameterized set of through a structured, parameterized set of actions that transform solution artifactsactions that transform solution artifactsA Recipe consists of:A Recipe consists of:

Launch Point(s)Launch Point(s)IDE UI element(s) allowing the user to run the recipeIDE UI element(s) allowing the user to run the recipe

Argument List Argument List List of arguments passed to templates and actionsList of arguments passed to templates and actions

Argument Value Gathering Strategy Argument Value Gathering Strategy Argument value providers Argument value providers UI (wizards) to gather arguments from the userUI (wizards) to gather arguments from the user

ActionsActionsList of artifact transformations that create, modify or List of artifact transformations that create, modify or delete VS artifactsdelete VS artifacts

Page 17: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

GAT Concepts GAT Concepts Visual Studio TemplateVisual Studio Template

Predefined artifacts that can be added Predefined artifacts that can be added to your solutionsto your solutionsThree types:Three types:

Item TemplateItem TemplateProject TemplateProject TemplateSolution TemplateSolution Template

When a template “unfolds”, it can When a template “unfolds”, it can trigger the executing of recipestrigger the executing of recipes

Can launch wizards and modify created Can launch wizards and modify created artifactsartifacts

Page 18: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

GAT Concepts GAT Concepts Text TemplateText Template

A text file with script markup that modifies A text file with script markup that modifies template outputtemplate outputUseful for generating code or configuration Useful for generating code or configuration on-the-flyon-the-flyCan receive parameters from recipesCan receive parameters from recipesThink ASP for any type of fileThink ASP for any type of file<#@ <#@ Template Language="C#" Template Language="C#" #/>#/>

<#@<#@ Using Namespace="System.ComponentModel.Design" Using Namespace="System.ComponentModel.Design" #/>#/><#<# IDictionaryService svc = (IDictionaryService) GetService(typeof(IDictionaryService)); IDictionaryService svc = (IDictionaryService) GetService(typeof(IDictionaryService)); #/>#/>using System;using System;namespacenamespace <#=<#= svc.GetValue("TargetNamespace") svc.GetValue("TargetNamespace") #/>#/>{{ classclass <#=<#= svc.GetValue("ClassName") svc.GetValue("ClassName") #/>#/> {{ static void Main(string[] args)static void Main(string[] args) {{ Console.WriteLine("Console.WriteLine("<#=<#= svc.GetValue("Hello") svc.GetValue("Hello") #/>#/>");"); Console.ReadLine(); Console.ReadLine(); }} }}}}

Page 19: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

GAT Concepts GAT Concepts Guidance PackageGuidance Package

A collection of related templates and A collection of related templates and recipesrecipesA unit of packaging and distributing A unit of packaging and distributing code-based guidancecode-based guidanceCan be individually Can be individually

InstalledInstalledEnabled and disabledEnabled and disabledUninstalledUninstalled

Page 20: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

GAT Concepts GAT Concepts Hypothetical Guidance PackagesHypothetical Guidance Packages

Automating common use cases with p&p Automating common use cases with p&p software assetssoftware assets

Creating and configuring solutions built using reference Creating and configuring solutions built using reference architectures (EDRA or Smart Clients)architectures (EDRA or Smart Clients)Generating code that uses an Application Block (data layers Generating code that uses an Application Block (data layers using the DAAB, connecting smart client to services using using the DAAB, connecting smart client to services using OAB)OAB)Creating and configuring extensions to blocks and Creating and configuring extensions to blocks and frameworksframeworks

Enforcing best practices for ‘raw’ .NET Enforcing best practices for ‘raw’ .NET platformplatform

Creating solutions/projects that adhere to the .NET Creating solutions/projects that adhere to the .NET Application ArchitectureApplication ArchitectureImplementing design patternsImplementing design patternsAnalyzing and fixing code for security, performance, coding Analyzing and fixing code for security, performance, coding standardsstandards

Guidance packages for building guidance Guidance packages for building guidance packagespackages

Page 21: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

GAT Concepts GAT Concepts Bringing it all together…Bringing it all together…

LaunchPoint

Command Bar

Add-New

Artifact Template Solution Template

Project Template

Item Template

Task List

Recipe Cluster

Recipe

Argument

Value Provider

Action

Model Element

Value Gathering Strategy

VS Wizard Framework

ParameterParameter Binding

Page 22: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

Demonstration #1Demonstration #1

Guidance Automation eXtensions Guidance Automation eXtensions andandGuidance Packages –Guidance Packages –Developer ExperienceDeveloper Experience

Page 23: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

Demonstration #2Demonstration #2

Guidance Automation Toolkit: Guidance Automation Toolkit: Authoring ExperienceAuthoring Experience

Page 24: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

More Important StuffMore Important StuffAlignment with other VS2005 Alignment with other VS2005 featuresfeaturesGAT is compatible with new VS2005 GAT is compatible with new VS2005

featuresfeaturesDomain Specific Languages Domain Specific Languages

DSLs are concerned with rich editing of DSLs are concerned with rich editing of project artifactsproject artifactsRecipes are concerned with automating Recipes are concerned with automating specific actions over artifactsspecific actions over artifactsBoth are likely to be useful in complex Both are likely to be useful in complex domainsdomains

Visual Studio Team SystemVisual Studio Team SystemVSTS provides powerful tools for team VSTS provides powerful tools for team development and process managementdevelopment and process managementGAT works with VSTS, but does not GAT works with VSTS, but does not prescribe any team process or toolsprescribe any team process or tools

Page 25: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

More Important StuffMore Important StuffSupportSupport

GAT is an “emerging technology” GAT is an “emerging technology” provided “as-is”provided “as-is”

No formal support policyNo formal support policyOnly applicable to development machines, Only applicable to development machines, so not relevant for production server so not relevant for production server environmentsenvironments

The best source of support is the The best source of support is the communitycommunity

Microsoft provides community Microsoft provides community infrastructureinfrastructureMicrosoft participates in the communityMicrosoft participates in the community

Page 26: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

More Important StuffMore Important StuffFuturesFutures

Initial release of GAT is tested against Initial release of GAT is tested against Visual Studio 2005 Beta 2Visual Studio 2005 Beta 2A minor refresh is expected for the final A minor refresh is expected for the final release of Visual Studio 2005release of Visual Studio 2005Future plans to integrate GAT more Future plans to integrate GAT more closely with related authoring tools (eg. closely with related authoring tools (eg. DSL, VSIP)DSL, VSIP)

Page 27: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

Session SummarySession Summary

In this session we have talked about:In this session we have talked about:The challenges that architects and The challenges that architects and developers face with increasingly complex developers face with increasingly complex guidance assetsguidance assetsHow the How the patterns & practicespatterns & practices team is team is addressing this problem with Guidance addressing this problem with Guidance Automation ToolkitAutomation ToolkitThe key concepts underlying the Guidance The key concepts underlying the Guidance Automation ToolkitAutomation ToolkitSupport and future plans for GATSupport and future plans for GAT

Page 28: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

Call to ActionCall to Action

We want your help to improve GAT and We want your help to improve GAT and the the patterns & practicespatterns & practices assets that will assets that will use ituse itYou can help by:You can help by:

Downloading GAT as soon as it is available Downloading GAT as soon as it is available and trying it outand trying it outParticipating in the communityParticipating in the community

Asking and answering questionsAsking and answering questionsSubmitting bugs and providing feedbackSubmitting bugs and providing feedbackSharing any interesting guidance packages you Sharing any interesting guidance packages you have builthave built

Check back at Check back at http://microsoft.com/practiceshttp://microsoft.com/practices

Page 29: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…

Questions and AnswersQuestions and Answers

Submit questions using the text boxSubmit questions using the text box

Page 30: Packaging Design and Architecture Guidance for Visual Studio Tom Hollander Wojtek Kozaczynski Harry…