Presentation is loading. Please wait.

Presentation is loading. Please wait.

Ivan Towlson Mindscape.  What are DSLs and why should I care?  What are the Visual Studio DSL Tools?  Building a DSL  Vocabulary and grammar  Spiffing.

Similar presentations


Presentation on theme: "Ivan Towlson Mindscape.  What are DSLs and why should I care?  What are the Visual Studio DSL Tools?  Building a DSL  Vocabulary and grammar  Spiffing."— Presentation transcript:

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"); } }

12

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


Download ppt "Ivan Towlson Mindscape.  What are DSLs and why should I care?  What are the Visual Studio DSL Tools?  Building a DSL  Vocabulary and grammar  Spiffing."

Similar presentations


Ads by Google