http://blogs.clariusconsulting.net/pga

Pablo Galiano's Blog

Go Back to
pga′s Latest post

DSL / VS 10 ModelBus part 1

***Disclaimer: This information applies to Visual Studio 2010 Beta 1 only.***

 

One of the new main features of the new version of the DSL toolkit is the “ModelBus”. The model bus basically allows a model element to reference another model element (ModelBusReference). These two model elements could be defined either in the same DSL or in different ones. With a ModelBusReference we can do interesting model interactions such as navigating the references back and forth, performing validation across models, etc.

 

The ModelBus infrastructure lives in two core assemblies:

  • Microsoft.VisualStudio.Modeling.Sdk.Integration.10.0
  • Microsoft.VisualStudio.Modeling.Sdk.Integration.Shell.10.0

 

Microsoft.VisualStudio.Modeling.Sdk.Integration.10.0

As the name implies, this assembly contains concepts that are totally decoupled from Visual Studio.

The main generic concepts are:

ModeBusAdapter

Is a bridge between the model bus and the underlying model. Therefore each model has its own adapter.

It’s main responsibilities are:

  • Get all references of an element type
  • Resolve a reference into an object
  • Get the view associated with the model

ModelBusAdapterManager

Is used to create and control the lifetime of adapters.

It’s main responsibilities are:

  • Create adapters
  • Create reference to a model
  • Return the list of supported adapters
  • Return the list of exposed element types. An exposed element type is an element that can be referenced by another element

ModelBusReference

Encapsulates information about a reference in the model bus. It is composed of:

  • Adapter reference
  • Adapter id
  • Model display name
  • Element display name

It is being serialized as:

image

ModelBusAdapterReference

Represents the base class for adapter references

ModelBusView

Allows a client to manipulate the design surface of the model (if applicable)

It’s main responsibilities are:

  • Open view
  • Close view
  • Show view
  • Hide view
  • Select UI elements

 

Then we have a set of derived classes that are specific to DSLs:

  • ModeBusAdapter<- ModelingAdapter
  • ModelBusAdapterReference <- ModelingAdapterReference

ModelingAdapter

Represents the base class for DSL based adapters. In this case the model is a DSL model.

ModelingAdapterReference

Encapsulates information about a model element reference, it is composed of:

  • Model element id
  • View id
  • Model file absolute path

It is being serialized as:

image

 

Microsoft.VisualStudio.Modeling.Sdk.Integration.Shell.10.0

In this assembly there are concepts that are coupled to the Visual Studio infrastructure.

VsModelingAdapterManager

This adapter manager introduces the notion of document handlers that knows how to handle a DocData concept.

VsModelingView

This implementation is tied to the DocView concept.

 

Stay tuned,

Pablo

Comments