Enterprise Apps in Windows Azure - Calling the Internet Service Bus (.NET Services from Azure)

In the last days I implemented a typical enterprise cloud app on Windows Azure.

WARNING: Beyond this step no Hello World scenarios! Watch your step!

image

The scenario is based on the famous TimeTracker SL3 Sample which you can find in the Expression Gallery. It is a vendor management system where I can track my vendors time and i can approve the tasks and then have them send over to SAP to create a Purchase Order.

image

The Data Model is quite simple, too and done with Entity Framework over SQL Azure.

image

In 2010 it is nice that you can generate DDL from the Diagram using a right click and select generate database from model. I used that and modified a bit of the code to work in SQL Azure.

With help of the SQL Azure Data Explorer you can actually see the data from within
VS2010

image

Based on the time-tracker sample it was quite easy to adjust the connection string to point to SQL Azure and add a .xap mapping for SL to the web.config. Then the Time-Tracker already runs smoothly on Windows Azure. Also I added support for SSL and SSO on Windows Azure

image

image

Now the reason why i am blogging: I found it quite easy to use the Echoing Sample from the .NET Services SDK as a basis to add communication from my WebRole to my ERP system. However this seemed to work only on my machine and in the simulator.

image

After quite some time I found what was going wrong when accessing the Service Bus from within a WebRole in Azure (when deployed) using NetTcpBinding. I got Configuration Binding Extension not found.

image

I then asked the .NET Services Team what is wrong and it turns out that:

To use the config elements in Azure you need to move the extensions into your web.config. To find them, take a look at your machine.config file. You’ll have to replicate the system.serviceModel extensions that reference the Microsoft.ServiceBus assembly into your web.config that you deploy into Azure. We haven’t made a cut & paste snippet for that yet, but we really should.

If this Problem did not occur i might not have blogged about the whole story. So it seems also to have its good side. ;-).

Now all works fine also in the Cloud ;-)

image

Happy Cloud Computing!

Tim

Federated Identity (SSO) and Windows Azure

To get single sign on in the Cloud Microsoft offers Windows Indentity Framework (WIF)  a new addition to the .NET Technologies Stack formerly known as Geneva Framework. WIF is now available as a Release Candidate from MSDN Eval Center together with it’s server part Active Directory Federation Service V2.0 which offers a secure Web-Service for AD as an end-point to Cloud Apps according to WS-Federation and SAML Protocols.

If you want single sign on in the cloud that is what you need

http://code.msdn.microsoft.com/wifwazpassive

http://msdn.microsoft.com/de-de/evalcenter/dd440951(en-us).aspx

http://technet.microsoft.com/de-de/evalcenter/ee476597(en-us).aspx

image

Transforming Team System UML Class Diagrams into Database Diagrams and actual ORM-Classes with T4 (Update 2)

You can easily write a T4 Template that transforms UML Diagrams into Linq to SQL or Entity Framework Diagrams. The good thing to know here is that Linq to SQL and Entity Framework Diagrams are just XML Files. Also other UML Diagrams and DSL are just XML Files. So here is a screen shot of my transform:

image

The cool thing here is that the Linq to SQL Diagram that was generated by the transform already generated the classes for the O/R Mapping.

image

This is the prove point that you can do Model-To-Model Transformations with T4 in Team Systems 2010 Beta 2. Also it proves that UML and DSLs fit nicely together. UML Models can drive DSL models witch drive standard code-generation. Each step can be customized using T4 Templates.

Update: Using the T4 Toolbox of Oleg Sych – see www.olegsych.com you can also generate Visual Studio Team System Database Project (for Schema Versioning etc.) from the Linq to SQL Diagram and change the code generation. Things really start to come together now! Thanks to Oleg Sych for this great asset (http://t4toolbox.codeplex.com)

Happy Generating!

Tim

How To: Generate Code from Team System UML Diagrams in VS 2010 Team System Beta 2 (Update 4)

Here is the first code-snippet about how to generate code from UML-Diagrams using T4 Text-Templates. 

image

Here are the steps:

1. Create a model project called ModelingProject1.modelproj

2. Insert Classes with properies at the root level of the model using the diagrams

3. Create a file Generator.tt that contains the text below

4. Save the .tt file to have a code-behind template generated under the .tt file that contains the output.

5. If you want to regenerate press the new button (most right in the toolbar of the solution explorer called “Transform All Templates” or save the template again

6. Optional: To get Syntax Coloring and intelli-sense on the template go to the Extension Manager (Tools Menu->Extension Manager->Online Gallery) and search for a T4 Editor of your choice.

Here is the code for copy paste:

<#@ template language="C#" debug="true" hostSpecific="true" #>
<#@ output extension=".cs"#>
<#@ assembly name="Microsoft.VisualStudio.Uml.Extensions.dll"#>
<#@ assembly name="Microsoft.VisualStudio.Uml.Interfaces.dll"#>
<#@ assembly name="Microsoft.VisualStudio.Uml.Interfaces.dll"#>
<#@ import namespace="Microsoft.VisualStudio.Uml.Classes" #>
<#@ import namespace="Microsoft.VisualStudio.Uml.Extensions" #>
<#   

string projectPath = System.IO.Path.GetDirectoryName(this.Host.TemplateFile)
                    + @"\..\ModelingProject1\ModelingProject1.modelproj";
using (IModelingProject project = ModelingProject.Load(projectPath))
{
   IModelStore store = project.Store;
   foreach (IElement element in store.Root.OwnedElements)
   {
      IClass classElement = element as IClass;
      if (classElement != null) {
        #>

        class <#= classElement.Name #> {
           <# foreach (IFeature theFeat in classElement.Features){#>
              string <#= theFeat.Name #> {get;set;};
           <#}#>
        }
        <#
      }
   }
   project.Close();
}
#>

Note there are also a lot of extenison methods defined for IUML*. Here is a list of tasks you can do with the UML API easier. I did not try it though.

http://msdn.microsoft.com/en-us/library/ee329525(VS.100).aspx

And here is a more complex sample that generates class and properties from the Model.

<#@ template language="C#3.5" debug="true" hostSpecific="true" #>
<#@ Assembly Name="System.Core.dll" #>
<#@ assembly name="Microsoft.VisualStudio.Uml.Extensions.dll"#>
<#@ assembly name="Microsoft.VisualStudio.Uml.Interfaces.dll"#>
<#@ import namespace="System" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="Microsoft.VisualStudio.Uml.Classes" #>
<#@ import namespace="Microsoft.VisualStudio.Uml.Extensions" #>
using System;
<#   
var projectPath = System.IO.Path.GetDirectoryName(this.Host.TemplateFile)+ @"\..\ModelingProject1\ModelingProject1.modelproj";
using (IModelingProject project = ModelingProject.Load(projectPath))
{
   foreach(IClass classElement in project.Store.Root.OwnedElements.OfType<IClass>())
   {
    var baseClass = classElement.SuperClasses.FirstOrDefault();
    var baseClassNamespaceName = (baseClass!=null ) ? baseClass.Namespace.Name+"." : "";
    var baseClassName = (baseClass!=null) ? baseClassNamespaceName+baseClass.Name : "System.Object";
    var properties = classElement.OwnedAttributes.OfType<IProperty>().ToArray();

    #>
public <#= classElement.IsAbstract ? "abstract ":"" #>partial class <#= classElement.Name #>: <#= baseClassName #>
{
<#
    if (properties.Length>0)
    {
     WriteLine("\t\t// properties");
    }
    foreach(IProperty property in properties)
    {
     var propertyName = property.Name;
     var fieldName = "_"+property.Name.Substring(0,1).ToLowerInvariant()+property.Name.Substring(1);
     var propertyTypeName = typeof(System.Object).FullName;
     if (property.Type!=null)
     {
      propertyTypeName = property.Type.Name;
      if (property.Type.Namespace!=null && property.Type.Namespace.Name!=baseClassNamespaceName)
      {
       propertyTypeName = property.Type.Namespace.Name+"."+propertyTypeName;
      }
     }
     //var propertyTypeName = (property.Type!=null) ? property.Type.Name : ;
#>
  #region @ <#= propertyName #>
  private <#= propertyTypeName #> <#= fieldName #>;
  public <#= propertyTypeName #> <#= propertyName #>
  {
   get
   {
    return <#= fieldName #>;
   }
   set
   {
   }
  }
  #endregion
<#
    }
    #>
}

<#
  }
project.Close();
}

#>

How To: Migrate T4 Text Templates from VS2008 to VS2010 Beta 2

At the .net open space in Leipzig I promised to write down the experience in migrating T4 Text Templates from VS2008 to VS2010 Beta 2. And here we go…

In order to migrate you will need to do the following

Issue1:  C# Version is now 4 by default

Old:

<#@ template language="C#v3.5" #>

New:

<#@ template language="C#" #>

Issue2:  ModelingTextTransformation not any longer found

Old:

<#@ template inherits="Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation" #>

New: (You need an assembly reference eventually)

<#@ template inherits="Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation" #>
<#@ assembly name="C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.TextTemplating.Modeling.10.0.dll"#>

 

Issue: EnvDTE ProgID has changed from 9.0 to 10.0

Old:

<#@ assembly name=”envdte” #>
<# EnvDTE.DTE theDTE = (EnvDTE.DTE)System.Runtime.InteropServices.Marshal.
GetActiveObject("VisualStudio.DTE.9.0"); #>

New:

Note it is always better to get EnvDTE from the Template host – this requires hostSpecific to be true

<#@ template hostSpecific="true" #>
<#@ assembly name=”envdte” #>

Now you can get the envdte this way

<#  IServiceProvider hostServiceProvider = (IServiceProvider)host;
var theDTE = (EnvDTE.DTE)hostServiceProvider.GetService(typeof(EnvDTE.DTE)); #>

Issue: Some other DSL DLL Names changed - here are new names

In GAC (do not use “.dll” in <#assembly#> reference)

Microsoft.VisualStudio.Modeling.Sdk.Diagrams.10.0
Microsoft.VisualStudio.Modeling.Sdk.10.0

Not in GAC (use. dll when referencing them)

Microsoft.VisualStudio.TextTemplating.Interfaces.10.0.dll
Microsoft.VisualStudio.TextTemplating.Modeling.10.0.dll
Microsoft.VisualStudio.TextTemplating.VSHost.10.0.dll 

You find them here

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\

or here

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\

or in the SDK Install Dir

I think these are the most common issues. I will add if i find more.

Happy generating

Tim

Beta 2 von Microsoft .NET Framework freigegeben

Microsoft hat das Microsoft .NET Framework 4 Beta 2 soeben freigeben. Die Details zu den wichtigsten Funktion sowie den Download zu Visual Studio 2010 Beta 2 findet man hier.

tangible T4 Editor (Alpha) in VS2010 Beta 2 shows up….

Speedy development – awesome design. With no code changes between Beta1 and Beta 2 the tangible T4 Editor in its current alpha bits form brings light to “.tt” files in Visual Studio 2010 Beta 2 right from the start.

Go get it from the extension manager to start customizing code generation and wizrards in VS2010 Beta 2 – Code Gen from the new cool Team System UML Diagrams, Entity Framework 2.0 and more…

In Visual Studio just goto Tools->Extension Manager and search for tools online. If you are an admin do not forget to click on the “Allow loading user extensions button".

Fit für die Cloud: Windows Azure Launch Day + 100mal VS 2010Pro!

Es ist höchste Zeit sich mit dem Thema Cloud ernsthafter zu beschäftigen. Bereits auf der World-Wide Partner Konferenz hat Microsoft weitere deutlich attraktiver Preispakete in Aussicht gestellt, die zur PDC kommen werden. Mit Windows Azure wird das Thema Server-Cluster, SQL-Server - “Cluster” und damit das Thema Verfügbarkeit für viele Entwickler in greifbare Nähe rücken. Auch gibt es seit einiger Zeit eine richtige SQL-Server Datenbank in Windows Azure – so dass man nun mit gewohnten APIs wie ODBC/OLE DB/ADO.NET/Linq-To-SQL und anderen arbeiten kann. Full-Trust ist nun auch möglich sowie das Thema PHP.

Jetzt endlich kann man ein eigenes Server-Cluster für umsonst testen und im Handumdrehen Anwendungen auf mehrere Server verteilen

Es ist höchste Zeit zu lernen, wie einfach es ist auf Windows Azure eine Anwendung auf mehreren Servern bereitzustellen. Zumal mal Microsoft 100 x Visual Studio 2010 Pro verlost:

Mehr Infos hier: http://www.microsoft.com/germany/msdn/aktuell/azurenow/default.mspx

Wer Blut geleckt hat und mehr wissen möchte der komme doch auf den Windows Azure Launch Day

Windows Azure Launch Day in Stuttgart am 26.11 - Windows Azure Buch inklusive!

Technische Vortäge und ein MS Press Buch zusammen für nur 59,-€ gibt es auf dem Windows Azure Launch Day.
Auf dem Windows Azure Platform Launch Day stellt Microsoft erstmalig die produktive Version von Windows Azure in Deutschland vor. Entwickler, IT-Dienstleister und Unternehmen lernen hier, wie man die Microsoft Online Services und die Windows Azure Platform einsetzen kann und wie man für Windows Azure Platform Anwendungen entwickelt. Auf diesem exklusiven Premiereevent erfahren Sie alles Wichtige über die Cloud Angebote von Microsoft und wie Ihre Unternehmen davon profitieren kann. Für 59 € zzgl. MwSt erhält jeder Teilnehmer neben umfangreichen Expertenwissen das Buch "Cloud Computing mit der Windows Azure Platform: Softwareentwicklung mit Windows Azure und den Azure Services" im Wert von 39,90 €.

Für wen ist der Windows Azure Launch Day relevant?

  • Entwickler - die konkret lernen möchten wie man auf der Windows Azure Platform Lösungen erstellt und entwickelt
  • IT-Dienstleister – um zu erfahren wie man Kundenanforderungen mit Cloud Computing auf der Microsoft Plattform umsetzt
  • Unternehmensentscheider und Anwender – um Lösungen basierend auf den Microsoft Online Services und Windows Azure selbst bewerten und konzipieren zu können
  • Alle, die an Cloud Computing interessiert sind – um sich komprimiert über aller Vorteile und Einsatzszenarien von Cloud Computing zu informieren

Format: 1-tägige kostenpflichtige Konferenz ist auch zusammen im Kombiticket mit dem Cloud Conf Konferenztag buchbar

  • Keynote: Die Microsoft Strategie: Software + Services -  mehr als nur Cloud Computing 
  • Technologievorträge
    • Office in der Cloud: Office Web Apps, Live Meeting, Exchange SharePoint in der Cloud inkl. Customizing und Entwicklung
    • Überblick über die neue Windows Azure Platform V1
  • Tutorials:           
    • Entwicklung mit der Windows Azure Platform
    • Devices und Cloud Computing & Rich Internet Anwendungen
  • Produktinformation
    • Trainingsangebote und Preismodelle für Partner und Unternehmen

Mehr Informationen gibt es hier: http://www.cloudconf.de

Posted 05 October 09 11:12 by timfis | 0 Comments   
Filed under ,
Silverlight 3 Tools für deutsche Visual Studio Versionen sind fertig!!!

Seit kurzem stehen nun auch die Silverlight 3 Tools für die deutschen Versionen von Visual Studio bereit.

Hier sind die Bits zu finden

http://www.microsoft.com/germany/net/silverlight/download.aspx

Posted 31 July 09 08:41 by timfis | 0 Comments   
Filed under ,
Anwendungen von SL2 auf SL3 Upgraden

SL2 Anwendungen laufen weitestgehend ohne Änderung unter der SL3 Runtime. Dazu hat diese einen sogenannten Quirk Mode, in welchem SL2 Verhalten für die wichtigsten  Breaking-Changes simuliert wird.

Ob es sich um eine SL2 oder eine SL3 Anwendung handelt bestimmt die Runtime über die Metadaten (im Object Tag sowie in der xap Datei)

Um die neuen SL3 Funktionen nutzen zu können müssen Anwender daher SL2 Anwendungen zunächst auf SL3 portieren. Dies ist im allgemeinen recht einfach. Man muss die Meta-Daten anpassen und sicher stellen, dass ein Event-Handler für Errors in Javascript auf der Seite hinterlegt wurde.

Hier mein Vorgehen:

0. Install VS 2008 + SP1 ENU – installs side by side with german (note for german the SL VS2008 tools are not yet available)
1. Install SL Tools + Toolkit + Optional: Blend
2. Set UI Options to Englisch in VS (if German and English was installed on same box)
1. If SL ASPX Controls have been used in aspx page you need to remove it and write out your own object tag and error handler instead (see documentation for details on which version numbers to pass in)
2. Use HTML instead with new Version numbers and manual error handler as described in Help
3. Update all services references to ado.net ds
(VS Update Service Reference)
4. Correct and any links to the XAP to load dynamically at runtime (if path in code)
5. Test the application according to breaking changes document (see help)

Posted 26 July 09 03:27 by timfis | 0 Comments   
Filed under ,
Oslo May CTP - Wo die Reise hingeht

Wie bereits in meinem englisch-sprachigem Post diskutiert  besteht Oslo im Kern aus einem Repository für Modelle (oder sagen wir besser Meta-Daten). Modelle können in diesem Zusammenhang nach Ansicht des Oslo Teams die bekannten UML-Modelle oder aber auch textuelle Modelle wie etwas .config files, XOML (also WF Workflows) oder ähnliches sein - kurzum alle Daten, die entweder die Anwendung beschreiben oder sogar von der Anwendung verwendet werden, um deren Konfiguration bzw. Aufgaben zu bestimmen.

Mit Dublin ist ein IIS-basierter Anwenwendungsserver angekündigt, der wohl auf das Oslo Repository für die Konfiguration der auszuführenden Anwendungen und Workflows zurückgreifen kann* (Spekulation). Interessant ist hier, dass sowohl Dublin als auch das Repository über Replikationsmechanismen verfügen, die ja nicht nur zum Backup sondern auch zum Scale-out auf mehrere Server von Interesse sein können.

Im May CTP von Oslo sehen wir nun neben dem Repository nun auch erstmals den Modellierer / Viewer für das Repository namens Quadrant. Mit ihm kann man die Inhalte des Repositories einfach anschauen und editieren. Daneben finden wir auch Importer für verschiedene Artifakte und Modell-Definitionen wie z.B. einen Importer für XMI (dem UML - Model-Transfer Standard der OMG).

Das Microsoft.UML2 Model schein übrigens auch im Microsoft Visual Studio 2010 Team Architect implementiert zu sein (siehe Screenshot). Es bleibt also Raum für Hoffnung auf ein gemeinsames* Repository zwischen Oslo und TFS (Spekulation).

empty quadrant           

[Microsoft.UML2 Namespace in Oslo und in VS2010 Architecture Edition verfügbar]

Sicher ist jedenfalls, dass man mit Oslo nun die Möglichkeit hat Meta-Daten versioniert und replizierbar für die Interpretation durch Anwendungen zur Verfügung stellen kann. D.h. man muss in Zukunft nicht mehr alle .config files oder AllCategories.xml files auf jeden Server in einem Cluster einzelnt hochladen sonder könnte sich eines versionierbaren Repositories bedienen.

Interessanterweise wird gerne über MGrammer und Intellipad geschrieben, aber eigentlich sind das wohl eher Hilfswerkzeuge um ein offenes Model-To-Model-Mapping zu  realisieren und auch um Entwicklern das Editieren von  Modellen in Visual Studio zusätzlich textuell zu ermöglichen. Das eigentliche Konzept hinter Oslo ist aber der Gedanke der "Ausführbaren Modelle" und des "gemeinsamen, versionierbaren Repositories".

Posted 02 June 09 06:13 by timfis | 2 Comments   
Filed under , , ,
Visual Studio 2010 Beta 1 shows lots of T4 usage + tangible T4 Editor for VS2010 Beta 1 is available!

As Somasegar pointed out VS 2010 Beta 1 ships now. VS 2010 Beta 1 includes new Code Generation Features based on T4.  In VS2010 Beta 1 T4 is now also used in Entity Framework 4.0 and in the new Modeling Support of the Architecture Edition. Note that VS2010 Beta1 now also brings it's own T4 item templates.

For some cool screenshots of the code generation features and a Free T4 Editor for VS2010 Beta1 be sure to checkout the tangible engineering blog.

Dev10Modelling

From AJAX back to Client/Server-Style Architectures with Rich Internet Applications (RIAs)

This post is about how RIAs make it again a lot easier - and what is important when designing the server side for a RIA app.

When you look at a Silverlight business application (RIA) and how it communicates with the backend it is really very similar to what a smart client would do. It is calling web-services on the server or using generic web services like ADO.NET Data Services (which are actually REST based). However the important point is that the Silverlight app has its own state and that this state is not mixed up into Javascript, hidden fields or Session variables which really made the whole AJAX and the Web thing for me a bit overcomplicated. While the browser is more a terminal/server pattern by the use of client state and javascript the browser-client became semi-stateful. By "semi",i mean that the server still could decide to move it to a totally new page - redefining the whole client. This makes things unnecessary complicated (although there is certainly a need for HTML based apps).

I am glad Silverlight apps just get downloaded once and then drive the communication and screen-flow themselves. This makes many Client/Server style patterns (although we are now 3-Tier, disconnected via HTTP and async) working again.

Conclusion

When you write a real RIA business app in Silverlight you should think of the web application that hosts it as two things ONLY:

a) A download location for your Silverlight app including the initial page

b) A real app-server (not web-server) that provides its business functions via Web-Services or REST. Please take the time to design the server-side web-services and methods. In addition think of how you handle server state (e.g in the backend database). So be sure to add Silverlight enabled Web-Services to the server and design them properly based on what the overall system should do and what parts the server should do. Just creating helper methods for stuff the client needs access to the database to won't do the trick of creating something reasonable and maintainable.

RIA-DONT#1: Do not think of the web server being the driver. 
      It is becoming the slave again and all its services should be designed to match
      the needs of the client. Use pages inside the Silverlight client to design the
      application and screen flow. The client is back in charge - yes!

Where to go from here? checkout this  msdn mag article.

Posted 16 May 09 08:23 by timfis | 1 Comments   
My personal View on "Oslo"

I want to share my personal view on Oslo with you. It's personal as it might not fully be aligned with the official Microsoft Message.

I will first look at Oslo repository and associated tools to interact with models stored in the repository.

    1. Repository to store metadata (referred to as Model)
    I have been using Microsoft Meta Data Services (aka MS Repository 2.0/3.0) in
    the past for some model driven apps. It serves similar purpose of storing model
    and meta-data company wide. It was used by SQL Server DTS and Visual Component
    Manager (part of VS 6.0). Also one big Software Factory named tangible architect
    uses it for persisting runtime data.

    So what is different in Oslo Repository ?
    First   Oslo Repository   is not   meant only   for  storing   design  data.
    Instead it is meant to store meta-data and possibly even instance that is used
    at runtime, as well (like wise tangible did in the past "miss-use" the Microsoft
    Repository) for that purpose.

    The benefit of using models at runtime is that when you start not generating
    code from models but instead write runtimes that interpret models (E.g. if
    your write a web-shop with product categories make the product categories
    not hard-coded but part of the model).  Then someone (E.g. your boss) can
    change them using a separate interface to your application for administrative tasks.
    I bet you did this already not using any modeling technology. This is probably
    ok, however you have to deal with versioning, multi-user access and Access
    Permissions yourself. Oslo Repository can do Versioning,  Multi-User-Access
    and access permissions for you. Besides Oslo Repository now officially
    supports database mirroring ;-)
   
     2. Oslo Repository API. Oslo Repository uses SQL Views which are made updatable
    by the help of triggers. So you do not need to use a Repository API to access the
    data instead you can use any Data Access Stack like LINQ-To-SQL and just work on
    the Views. Note there is a view for each Class/Type you define in your model.
     In the Microsoft Repository 3.0 days the views did not have the triggers and
     thus were read only.

      3. Oslo Repository Model Definitions

     Repositories store meta-data in form of models. A Model defines types with values
     you want to store. So basically it is a schema. Oslo Models are represented as SQL
     Schemas as shown well  in this video. To define Models Microsoft this time invented
     a new language "M". M can be used to represent Schemas and (Meta-) Data.
     For each "M"-Model there exists a transformation to a TSQL-Schema (as shown here).
     In MS Repository 3.0 this was based on COM Definitions. So we are now going to have
     a real Model Language M which is textual language. Similar to MS Repository 3.0 there
     is a model compiler and a model-inserter tool to be able to create the corresponding
     schema in SQL Server. I hope someone will provide a T4 Transform from .NET DLLs
     to M Models so i do not need to redefine models i already have in M.
     (PS: Note sure if that is a good choice but thinking of it)

     Note, that the Java-based MOF Repository standard defines their models in Java -
     so having that transform would make things comparable.

     4. Model and Instance Data Viewing

     To view and edit instance data Microsoft announced a tool called Quadrant.
     This is a visual tool for interacting with the model on a canvas. Here is a video.
     Besides any application can use the SQL-Views to visualize or edit data in
     the repository.

     5. Dealing with several model formats and creating new DSLs

     As discussed to insert a new schema into the repository one must first
     create a package with the model compiler and then insert it using another tool.
     Microsoft works on providing samples for various known
     models, e.g. the "a" language shows how to import and model ASP.NET ASPX files.
     To allow you to create a bridge from your Model representation to the M language
     Microsoft offers a tool/language called "MGrammer". With is basically a really nice
     parser generator that comes even with a Intelli-Pad that provides basic
     syntax-highlighting for your model instance data. This means if you have
     textual models you want to import into the Oslo Repository then one route
     is to create a MGrammer for your Model. The other route is to write your own
     parser or importer (importers would also work on non-textual formats for sure).
  

Now let's look at the Vision with "Dublin" or maybe Biztalk Future

As you can see, if you store (meta-)data in the repository you get versioning,
access rights etc for free. You can also enable the Repository to understand
your textual DSLs with MGrammer. You can use any Data-Access Layer.
So basically the Repository is a small SQL-based Layer on top of SQL-Server
from an application view. Your applications as well as Dublin and future versions
of Biztalk could actually read workflow descriptions, workflow instances and other
data from there getting all these features plus scalability for free. In addition if an
administrator or business user decides to change the workflow definition while
the system is running the versioning features will enable you to handle this correctly
within your code. Using Oslo Repository you will end up having less meta-data in XML
or Code and more in a version-enabled, multi-user-enabled, scalable "Oslo" repository.
This will lead to more flexible applications that are easier to change during runtime
- reducing maintenance and administration costs.

Final thoughts on Oslo's repository and executable models

I hope managed to explain the value of the repository. Indeed some advance
applications have been using repository technology for a long time.
Also many ERP-Systems (including Axapta) have a repository inside to manage the
configuration of the system and interpret it at runtime. With Oslo this proven
technique will be come widely available to .NET & SQL Developers. However
there is still some work to do to support many of the model formats including
binaries and textual DSLs that you currently work with. Once this is done Oslo
will become an important component for model-execution, configuration
management and possibly versioned instance data - as it really provides
a lot out of the box by then. 

Free T4 Editor for your ASP.NET MVC T4 Templates available (found on tangible-engineering blog)

Found on tangible blog, that the new tangible T4 Editor 1.4 FREE EDITION now includes full Intelli-Sense support

for MVC Host and related namespaces used in ASP.NET MVC 1.0 RTM T4 Templates. In addition it provides a nice highlighting
for ASP.NET and T4 Code.

Seems like anyone can now edit MVC T4 Templates with full comfort without investing a penny. Awesome!

tangible T4 Editor 1.4 - Support for ASP.NET MVC T4 Template Editing with Intelli-Sense in FREE EDITION & more

FreeMVCT4Editor

Posted 08 May 09 12:18 by timfis | 1 Comments   
More Posts Next page »

Search

This Blog

Syndication

Page view tracker