Download presentation
Presentation is loading. Please wait.
Published byAlexander Chambers Modified over 9 years ago
1
Ivan Towlson Mindscape
2
What are DSLs and why should I care? What are the Visual Studio DSL Tools? Building a DSL Vocabulary and grammar Spiffing it up Using the DSL Distributing your DSL
3
A vocabulary and grammar tailored to a particular field of use SQL – a DSL for manipulating relational data Regex notation – a DSL for text matching Mathematica – a DSL for symbolic mathematics BPMN – a DSL for business processes LINQ designer – a DSL for mapping SQL tables Windows Forms designer?! VS class diagrams? UML!
4
Internal or external – a vocabulary within the host language (e.g. fluent APIs) or a separate language Textual or graphical Vertical or horizontal – a specific business (e.g. a DSL for rail networks) or a technical area (e.g. SQL, regex)
5
“I was researching implementation techniques for graphical DSLs in vertical domains”
6
You are addressing a well-defined problem area The problem area supports a more concise expression than “longhand” programming You need the flexibility to express a range of problems, situations or solutions within that area The people you expect to use your language have the analytical and technical skills to express their problems in a way a dumb computer can handle
7
A kit for hosting graphical DSLs within Visual Studio
8
Users must have a Visual Studio licence Users must not freak out when they see the Visual Studio UI Models must be hosted within Visual Studio projects Therefore typically not aimed at end users
9
Domain modelling tool / object-relational mapper User base:.NET developers Core concepts: entities with attributes and associations between them Convention over configuration Entity classes typically follow standard formula Predictable mapping between objects and tables
10
public class Contribution : Entity { private string _title; public string Title { get { return _title; } set { Set(ref _title, value, "Title"); } }
11
public class Contribution : Entity { private string _title; public string Title { get { return _title; } set { Set(ref _title, value, "Title"); } }
13
Creating the DSL project. Adding model elements. Properties. Shapes. Toolbox. What this gives us – the generated code and partial class stuff. Applying decorators. Calculated properties. Associations and connector shapes. Toolbox. Validation. Adding menu items. Customisation – custom element merge, custom shapes, etc. Generating code off the thing. Programmatically loading / modifying (store, txns, etc.)
14
At compile time – code generation At runtime – as just another object
15
Code Generation Options
16
DSL and Package DLLs .vstemplate .xsd Optional custom tool No redistributables required for VS2008 Must install free redistributables for VS2005 DSL Tools includes rudimentary MSI generator
17
Package load key Free from VSIP program Attributes must match DLL – new version, new PLK! “The most common cause of package load failures.” Branding: register under InstalledPackages key The curse of devenv /setup
18
Visual Studio Extensibility homepage: http://msdn.microsoft.com/en-us/vsx/default.aspx
19
Cook, Jones, Kent & Wills, “Domain Specific Development with Visual Studio DSL Tools” Same authors’ blogs on blogs.msdn.com VSX developer centre on MSDN Clarius T4 Editor ivan@hestia.cc http://hestia.typepad.com/flatlander ivan@mindscape.co.nz http://www.mindscape.co.nz
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.