Upload
angelina-parker
View
219
Download
2
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
Packaging Design and Packaging Design and Architecture Architecture Guidance for Visual Guidance for Visual Studio Studio Tom HollanderTom HollanderWojtek KozaczynskiWojtek KozaczynskiHarry PiersonHarry PiersonMicrosoftMicrosoft
AgendaAgenda
BackgroundBackgroundIntroducing the Guidance Automation Introducing the Guidance Automation ToolkitToolkitGAT ConceptsGAT ConceptsDemosDemosMore Important StuffMore Important Stuff
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
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
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);
}}
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>
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
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!
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
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
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
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
Introducing GATIntroducing GATScopeScope
Reuse
Packaging& Cataloging
Search &RetrievalCreation
apply
feedback
Inform
harvest
inform
fitSDLC
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
GAT ConceptsGAT Concepts
RecipeRecipeVisual Studio TemplateVisual Studio TemplateText TemplateText TemplateGuidance PackageGuidance Package
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
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
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(); }} }}}}
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
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
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
Demonstration #1Demonstration #1
Guidance Automation eXtensions Guidance Automation eXtensions andandGuidance Packages –Guidance Packages –Developer ExperienceDeveloper Experience
Demonstration #2Demonstration #2
Guidance Automation Toolkit: Guidance Automation Toolkit: Authoring ExperienceAuthoring Experience
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
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
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)
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
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
Questions and AnswersQuestions and Answers
Submit questions using the text boxSubmit questions using the text box