Rash thoughts about .NET, C#, F# and Dynamics NAV.


"Every solution will only lead to new problems."

Sunday, 2. December 2007


Eindrücke vom Microsoft Dynamics Technical Community Airlift – Neuerungen in Dynamics NAV 2009

Filed under: Dynamics NAV 2009,msu solutions GmbH,SQL Server,Veranstaltungen,Visual Studio,WF,WPF — Steffen Forkmann at 19:55 Uhr

Vom 29. und 30. November 2007 fand im Münchner Arabella Sheraton Grand Hotel das 1. Technical Community Airlift zu Microsoft Dynamics statt. Im Wesentlichen ging es um folgende Themen:

  • Microsoft CRM “Titan”
  • Technische Fertigkeiten für Dynamics NAV 5.1
  • Ausblick auf Dynamics AX 5.0
  • Ausblick auf Dynamics NAV 2009 (Codename NAV “6.0”) (Dynamics NAV Server)
  • Microsoft Office und Windows SharePoint Services
  • Business-Intelligence
  • Sure Step, die Implementierungsmethode für Microsoft Dynamics

An dieser Stelle möchte ich gerne etwas über die von mir besuchten Vorträge berichten.

Microsoft Dynamics NAV – Produkt Update and Outlook (Darren Laybourn)

Nach der Begrüßung machte Darren Laybourn, seines Zeichens General Manager für Dynamics NAV und “Dynamics Mobile”, den Einstieg und vermittelte einen anwenderorientierten Einblick in den aktuellen Build von NAV “6.0” bzw. gab ein Ãœberbblick über zukünftige Releases nach “6.0”. NAV “6.0” ist dabei angeblich wirklich nur der Codename der nächsten Version – ein Release von “Dynamics NAV 2009” ist damit wesentlich wahrscheinlicher.

Microsoft Plattformstrategie (Karin Sondermann)

Wie der Titel schon vermuten lässt, war dieser Vortrag leider eine reine Marketingveranstaltung. Ich habe wirklich noch nie so viele Buzz-Words in so kurzer Zeit gehört. 😉
Sorry Karin, aber das war meiner Meinung nach für ein technisches Event unpassend und leider gab es zu dem Zeitpunkt auch keine Ausweichvorträge.

Dynamics NAV “6.0” – A first look bzw. Developer Clinic I-III (Jesper Lachance Ræbild und Naveen Garg)

Diese Vortragsreihe ging am Nachmittag über 3 Stunden und sollte einen tieferen Einblick in NAV “6.0” geben. Jesper Lachance Ræbild machte den Anfang und zeigte nochmal die neue Oberfläche des “6.0”er Clients. Im Anschluss erfolgte eine Veranstaltung mit dem Name “Developer Clinic” von Naveen Garg (Principal Program Manager Lead) in der es etwas mehr um die ServiceTier im Dynamics NAV Server ging.

Der maßgeschneiderte Client

Es wurde sehr ausführlich gezeigt, welche Controls der neue Client bietet und auf welchen Ebenen man die rollenbasierte Oberfläche konfigurieren kann/muss. Im Großen und Ganzen macht das schon einen sehr hübschen und modernen Eindruck. Im Detail muss man jedoch sehen, ob sich die getätigten Abweichungen vom bisherigen Bedienkonzept wirklich auszahlen.

Der Hauptunterschied, nach der geänderten Optik natürlich, ist für mich, dass wieder zu einem Konzept des “bewusstem Speichern” zurück gegangen wurde. Wenn ich also einen Datensatz ändern möchte, muss ich in Zukunft zuerst den Editiermodus anschalten, dann den Datensatz editieren und am Ende den Speichern-Knopf drücken.

Es wurden auch einige ShortCuts geändert – so konnte man in der Demo kurz sehen, dass der Shortcut zum Buchen von Rechnungen jetzt F9 ist. Der Grund dieser Änderung scheint in der Kompatibilität zu anderen Microsoft-Produkten zu liegen – die alte Belegung F11 schaltet ja zum Beispiel den Explorer in Vollbild.

Formulartransformation

Nachdem der “rollenbasierte Teil” abgeschlossen war, wurde es etwas technischer. Es wurde gezeigt, wie das neue “Form zu Page”-Transformationstool benutzt wird. Als ich diese Demo gesehen habe, war mir sofort klar warum sich “6.0” solange verzögert. 😉

Im aktuellen Build ist es so, dass man die Forms im neuen Exportformat (als XML-File) abspeichern muss; dann über die Kommandozeile das Transformationstool aufruft und am Ende den Output des Tools wieder ins NAV importiert. Über eine konfigurierbare Ausnahmeliste wird gesteuert welche Formulare nicht automatisch konvertiert werden können. Für die GUI-Entwicklung stellen sich mir nun 3 Strategien dar:

  1. Bei jeder Applikationsänderung werden alle Pages gelöscht und über das Tool neu aus den Formularen generiert.
  2. Die Transformation wird einmalig durchgeführt und alle Änderungen parallel in Forms und Pages gepflegt. 
  3. Die Transformation wird einmalig durchgeführt und ab dem Zeitpunkt wird nur noch mit Pages gearbeitet. Die Forms werden nicht mehr weiter angeboten.

Naveen sprach davon, dass Microsoft selbst momentan die erste Strategie fährt. Der Hauptgrund dafür ist sicherlich, dass man das Transformationstool ordentlich testen muss. Ich denke jedoch nach dem was ich bisher gesehen habe, dass es für Partner einfacher ist, den zweiten Ansatz zu fahren bzw. wenn man es sich leisten kann, nur noch den neuen Client zu benutzen kann man sogar die dritte Strategie fahren. Dieser Ansatz hat meiner Meinung nach einige entscheidende Vorteile:

  • Man muss sich keine Gedanken über Alignment oder Größe von Controls mehr machen. Der jeweilige Client (“RoleTailered”-Client, SharePoint bzw. Mobile-Client) rendert das dann automatisch nach GUI-Guide.
  • Man wäre den Doppelaufwand los Formulare und Pages parallel zu pflegen.
  • Man sorgt aktiv dafür, dass auch wirklich auf die neue Infrastruktur mit Dynamics NAV Server migriert wird – das sorgt auch beim Reporting für einige Einsparungen.
Reportdesign

In der “Reporting Services“-Demo wurde gezeigt wie man zukünftig “bunte” Reports im Visual Studio Report Designer erstellt. Für die tägliche Arbeit wird das wohl heißen:

  1. Report im Navision Report Designer anlegen und Datenstruktur implementieren.
  2. Den Report im “Visual Studio”-Modus editieren und als RDL-File ablegen.
  3. Nach dem Schließen vom Visual Studio wird der Report automatisch importiert.

Interessant ist dabei, dass nur die neue Architektur die RDL-Reports anzeigen kann. Führt man denselben Report auf dem alten Client aus, wird wie gehabt nur der im “Navision Report Designer” erstellte Teil angezeigt. Das bedeutet, dass wenn man einen Hybridansatz fährt und somit beide Clients parallel einsetzen will, dass man dann auch den doppelten Aufwand (= doppelte Kosten) innerhalb eines Reports hat.

Es wurde auch angesprochen, dass keine weiteren Entwicklungstool-Kosten für die Partner entstehen, da der Visual Studio Report Designer mit NAV “6.0” mitgeliefert wird.

Objektänderung zur Laufzeit

Bei einer Demo wurde auch gezeigt, dass das Gerücht “Bei jeder Objektänderung müssen alle Objekte neu kompiliert werden” wirklich nur ein Gerücht war. Es bleibt auch weiterhin so, dass jeweils nur das aktuelle Objekt kompiliert wird. Es gibt sogar noch eine kleine Verbesserung: In der neuen Architektur wird die Änderung der Meta-Daten sofort registriert, so dass der Client sich das Objekt neu in seinen Objekt-Cache zieht und damit nicht mehr neu gestartet werden muss.

Das die Objekte zuerst nach C# und dann automatisch nach IL kompiliert werden, wurde jedoch bestätigt. Der Entwickler hat dabei jedoch keinerlei Einfluss auf diesen Prozess. Es wurde explizit erwähnt, dass der NAV-Entwickler keine Möglichkeit hat den generierten C#-Code anzupassen.

WebServices

Beeindruckend war die Präsentation der WebServices. Ich habe zwar schon Demos dazu gesehen, aber es ist tatsächlich nur ein Haken in der Einrichtungstabelle zu setzen und schon wird der Dienst auf dem IIS veröffentlicht. Man kann dabei jede Page und jede Codeunit als WebService veröffentlichen. Es wurde an dieser Stelle auch nochmal explizit darauf hingewiesen, dass nur die in der Page verfügbaren Felder über den WebService veröffentlicht werden und dass genau derselbe Code in der Geschäftslogik ausgeführt wird.

NAV “7.0”

Es wurden ein paar kurze Slides zu den späteren Versionen mit den Codenamen “NAV Malta” bzw. “NAV Mallorca” gezeigt. Im Wesentlichen ging es darum den neuen Visual Studio-Editor (Visual Studio 2008 Shell) im Dynamics NAV zu hosten. Offenbar steht man da aber noch ganz am Anfang.

Offene Fragen

Leider blieb die “Developer Clinic” noch relativ nah an der Oberfläche. So stellen sich mir momentan vor allem folgende Fragen:

  • Wie sieht der generierte C#-Code aus? Wenn ich den Code schon nicht editieren kann, kann ich ihn dann wenigstens irgendwo einsehen und debuggen oder bin ich auf den aktuellen C/AL-Debugger angewiesen?
  • Welche Datenzugriffstechnologie wird verwendet? Generiert NAV schon LINQ-Statements? Ich vermute eher, dass genau die SQL-Statements, die der Client jetzt schon intern generiert einfach über ein SQLCommand-Objekt abgesetzt werden und dann ein DataReader die Ergebnisse ausliest. Aber da man sowieso nicht an den C#-Code kommt, ist diese Frage wahrscheinlich für die Praxis unbedeutend.
  • Wie sieht die Kommunikation zwischen Client und ServiceTier aus? Was hat der MetaDataProvider für ein Interface? Ãœber welche Protokolle wird kommuniziert? Da es ja mehrere Clients (“RoleTailered”, SharePoint, Mobile) geben soll, kann ich mir da vielleicht einen eigenen Client schreiben?
  • Wie sieht es mit den Workflows aus? Da wir ja dann in der .NET-Welt sind, könnte man ja die Windows Workflow Foundation nutzen – wann ist das für die Applikation geplant?
  • Wie sieht die technische Implementierung der WebServices aus? Wird dort die Windows Communication Foundation genutzt bzw. kann ich Protokolle und Security-Features genauso einfach konfigurieren wie in der WCF?
Erfolgreiche ERP-Projekte mit der Implementierungsmethode “Sure Step” (Peter Güttinger)

Hier wurde sehr schön gezeigt wie man sich in Zukunft die Arbeit mit “Sure Step” vorzustellen hat. Es wird einen riesigen “Baukasten” geben, in dem die gesamte Methode erklärt wird (bzw. auf englisch gibt es den schon jetzt). Man kann sich dann für jede Projektphase den entsprechenden Teil herausgreifen, die genannten Schritte abarbeiten und die mitgelieferten Dokumente ausfüllen. Den eventuellen Mehraufwand der dadurch entsteht, bekommt man jedoch sicherlich durch das standardisierte Vorgehen ausgezahlt. Im Fokus der weiteren Entwicklung steht eine Ãœbersetzung der Methode bzw. der Dokumente und eine bessere Unterstützung durch Tools (wie z.B. dem “Sure Step Business Modeler”).

Microsoft Dynamics AX – Produkt Update and Outlook (Hans Jorgen Skovgaard und Arvid Nielsen)

Kurz nach dem Frühstück am zweiten Konferenztag gab es eine Keynote über die Zukunft von Dynamics AX. Es war sehr interessant mal über den NAV-Tellerrand zu blicken und zu sehen, dass Microsofts ERP-Produkte wirklich konvergieren. Viele Teile, die für NAV entwickelt werden, werden auch in AX eingebaut und umgekehrt. In einigen Punkten scheint AX aber schon etwas voraus zu sein. Konkret meine ich, dass UnitTesting und VSS-Integration bereist in AX integriert sind und dass bereits Demos für die Workflow-Integration AX 5.0 gezeigt wurden (auch wenn diese einen unfertigen Status vermittelten).

Die interessanteste Aussage des Vortrags war jedoch ein kurzer Kommentar zur Frage “Warum wird AX nicht komplett auf C# umgestellt – X++ ist doch schon nah dran.” Die Antwort war, dass im .NET-Framework offenbar noch nicht alles so vorbereitet ist, wie man sich das wünscht. LINQ sei zwar ein riesiger Schritt, aber das würde zum Erhalt der Produktivität noch nicht ausreichen. Der zweite genannte Grund war, das dies erst passiere wenn man 99,9% des Codes automatisiert nach C# konvertieren kann.

Microsoft.NET – Softwareentwicklung heute (Sebastian Weber)

Sebastian Webers Keynote ging um die aktuellen Möglichkeiten der Softwareentwicklung. Da ich Sebastian bereits auf diversen Konferenzen gesehen habe, waren für mich keine “Ãœberraschungen” mehr drin. Allerdings wurde wieder einmal der “Physics Illustrator” gezeigt und es ging das erwartete Staunen im Raum um. (Nebenbei: HOW TO: Use Physics Illustrator on non-tablet PC)

Nicht weniger Begeisterung verursachte die Demo von Microsoft Photosynth – allerdings stellt sich hier natürlich die Frage wie die Software auf “zufällige” Photos reagiert. Interessant wäre, wenn man nicht einen professionellen Fotografen unter idealen und gleichbleibenden Belichtungsverhältnissen die Fotos aufnehmen lässt, sondern das Tool mal auf Flickr loslässt.

Bedeutung einer rollenbasierten Oberfläche für die Geschäftsprozesse eines Unternehmens (Udo Krachenfels)

In diesem Vortrag wurde detailliert auf die Vorteile einer rollenbasierten Anwendung eingegangen und wieder verschiedene Elemente des “RoleTailered”-Clients gezeigt. Die bisherigen Probleme mit dem ZUP-File sollen übrigens wegfallen, da die Benutzereinstellungen weitesgehend auf dem Server gespeichert werden sollen.

Business Intelligence Lösungen mit Dynamics NAV (Michael Berroth)

Michael Berroth zeigte in seinem Vortrag, was aus BI-Sicht jetzt schon mit NAV und dem SQL-Server, Excel-Services und SharePoint möglich ist und dass Business Analytics noch lange nicht vom Tisch ist.

Dynamics AX Development – UnitTesting und VSS (Michael Ferschl)

Dieser Vortrag ging auf die neuen Developer-Tools in Dynamics AX 4.0 ein. Es wurde die Integration von Visual Source Safe und das UnitTesting-Modul vorgestellt.

VSS-Integration

Interessant war zu sehen, welche Abneigung im Publikum gegen eine Quellcodeverwaltung bestand. Offenbar ist es im Dynamics-Umfeld noch nicht wirklich angekommen, dass der vermeintliche “Mehraufwand” eigentlich nur Vorteile bringt. Es scheint eher so zu sein, dass viele Partner lieber projektspezifisch direkt auf der Kundendatenbank entwickeln bzw. direkt dort Bugs fixen. Die Probleme der Nachvollziehbarkeit von Änderungen, dem vorhergehenden Test bzw. dem Deployment auf andere Datenbanken werden ignoriert. Dabei ist das in AX doch schon alles integriert und es muss nicht mal wie im NAV ein “AddOn für VSS” benutzt werden. Das ist mir ehrlich gesagt vollkommen unverständlich.

UnitTesting

Auch die Bereitschaft für Test Driven Design (TDD) hat sich im Dynamics-Umfeld wohl noch nicht etabliert. Dabei ist TDD doch ein guter Ansatz um die Qualität in Softwareprojekten hoch zu halten und die Anzahl gescheiterter Projekte zu minimieren. Dynamics AX ist, soweit ich weiß, das einzige ERP-System mit einem integrierten UnitTest-Modul. Ich würde mich freuen, wenn es sowas demnächst auch von Hause aus im NAV-Bereich geben würde (Unittest mit NAV).

Ein Argument vom Publikum ist jedoch nicht von der Hand zu weisen: “Richtig sinnvoll wird das Ganze, wenn Microsoft die UnitTests der Dynamics AX Basisapplikation veröffentlicht.” Das stimmt natürlich – wenn ich kontrollieren könnte, dass ich bei meinen Anpassungen das Standardverhalten des ERP-Systems nicht zerstöre, dann könnte ich weitaus ruhiger schlafen. Dazu brauche ich natürlich die UnitTests der Standardentwickler, da ich niemals jedes Problem kennen kann das vielleicht ein anderer Partner gemeldet hat. Also Microsoft: “Gebt die UnitTests frei!” 🙂

Integrationsszenarien Dynamics NAV mit Microsoft Office (Stephan Adolphi)

Hier wurden im Wesentlichen nochmal die Neuerungen in Dynamics NAV 5.0 vorgestellt – also Export nach Excel und Word bzw. Integration in Outlook.

Fazit

Insgesamt war die Veranstaltung sehr gut organisiert und es besteht eigentlich kein Grund zum Meckern. Allerdings ist es leider so, dass die meisten Vorträge nur an der Oberfläche gekratzt haben und es für meinen Geschmack bei diesem Titel der Veranstaltung noch nicht technisch genug war. Dennoch würde ich auch nächstes Jahr wieder zu einem “Microsoft Dynamics Technical Community Airlift” fahren.

Nachtrag: Die Slides vom Event wurden nun auch veröffentlicht.

Tags: , , , , , , , , , , , ,

2 Comments »

  1. […] Glück wird das Thema WebServices in Dynamics NAV 2009 wesentlich einfacher. […]

    Pingback by WebServices in Dynamics NAV - Video auf MSDN Chopsticks » Blog der Microsoft .NET / Dynamics NAV - Group Halle — Sunday, 16. March 2008 um 11:49 Uhr

  2. […] Airlift 2008” statt. Letztes Jahr war ich im November bei der ersten Verstaltung dieser Art (Bericht) und kann diese Konferenz jemenden NAV-Entwickler nur […]

    Pingback by Dynamics ERP-Launch und Technical Airlift 2008 » Blog der Microsoft .NET / Dynamics NAV - Group Halle — Wednesday, 30. July 2008 um 17:33 Uhr

RSS feed for comments on this post. | TrackBack URI

Leave a comment

XHTML ( You can use these tags): <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> .