ECO for Visual Studio explained

This article was moved to MDriven Wiki Driven for Visual Studio explained


Picking the image apart piece by piece


This is the model you produce. It is expressed in Unified Modeling Language (UML) and defines Class diagrams with inheritance, many to many associations with association classes, derived attributes using Object Constraint Language (OCL), fold pieces of the model into ViewModels with OCL, designed declarative user interfaces for a ViewModel (ViewModel View), define actions with ECO Action Language, catch information about processes, stakeholders, applications and terminology, define state machines, set up constraints and stuff like that.


In Documtr you can catch rich text for every artifact in your model. Write up things that will help you remember, or background information for a solution. You can produce a full model report at any time combining your model with your documentation.


You can with Prototypr start your model. You can open up a ECO debugger to create objects and view AutoForms per class


With WECPOF you can take the model execution one step further – use the declarative ViewModels to render UI’s and your Action definitions to render menus – now you have a complete application to test on your users. 


Modlr is the tool that helps you model your thoughts. Modlr is built with ECO for Visual Studio so there is a complete Model of the classes in Modlr in our code repository – and for those of us that appreciate meta –  cool.

ECO Design time

ECO Design time offers you design time support when binding data to your visual components. You can even get up an OCL editor that helps you to compile valid OCL expressions using the definitions from your current model.

And on the runtime side


In .net almost all the UI strategies has their own way of binding between data and UI component. In ECO we handle them all with a few specialized components.

Your compiled code

The model is actually folded down in the generated code as attributes on the generated artifacts. You can of course have loads of manually written code here as well. And you might have chosen to implement some derivations of attributes or associations in code. It is nice to know that we use incomplete classes to separate anything hand written from the generated stuff.

ECO Runtime

When your app is running and pulls in data from the database, have you ever struggled to keep track of what is loaded and not, what association needs to be fetched and if the other end of the association needs to be updated when you tie two objects together? This is what the ECO runtime does for you. It also offers other services like in memory transactions (boy can that clean up your code – no need checking ahead – just throw an exception and rollback), complete undo/redo stack, ability to linq or OCL to execute SQL queries to the database etc.

ECO PersistenceMapper

OR-Mapping is what we call it when taking a model expressed in UML and store it in a relational database. There are a few rules and a few options, like how to map inheritance – own table, parent or child table, but all in all it is a pretty straight forward process that you can use your standard personal dba for – or just push a button and get it right every time. In design time ECO also offers an automatic difference calculus that we call DB-Script evolution. This finds the changes you need to apply to your existing database after you have changed the model – just click and be done. OR-Mapping can also be heavily customized so that your app can run towards an existing database. You can even Reverse derive an existing database in designtime.

ECO Persistence Server

The ECO Persistence Server is a Tier Building block that shields your (possibly fat) clients from knowing about the database. Use this and your clients talk over a WCF channel that you fully can control with WCF configuration. Use this to get encryption or tunneling or as a way to get thru firewalls. The ECO Persistence Server also tracks what client updates what objects so that other clients can get notified about this with a low bandwith refresh call (Client synchronization).

Database scripts

See text under ECO PersistenceMapper

Note that on the Execute side most things are optional

I guess there are people around that refuse to travel by car since it is all “new and modern and not really needed”, and I know that there are plenty of developers that will not model their thoughts at all since it is all “new and modern and not really needed”. ECO for Visual Studio is not for those developers – ECO for Visual Studio is for developers that like new and modern.

This entry was posted in CO-Unique, MS-Technology, Strategies, VisualStudio. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *


This site uses Akismet to reduce spam. Learn how your comment data is processed.