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


"Every solution will only lead to new problems."

Category .NET

In dieser Kategorie geht es um das Microsoft .NET Framework und damit zusammenhängende Technologien wie CLR, C#, ASP.NET, WCF, WF und WPF.

Thursday, 21. September 2006


GhostDoc gewinnt Basta-Award

Filed under: Visual Studio,Wettbewerbe — Steffen Forkmann at 10:12 Uhr

Mein Lieblingsplugin für VisualStudio 2005 “GhostDoc” hat nun auch den BASTA-Publikumspreis gewonnen – und das zu Recht. Herzlichen Glückwunsch.

https://edpillsbelgium.com

Monday, 18. September 2006


Navision: Report in bestimmten Druckerfach ausgeben

Filed under: C#,msu solutions GmbH,Navision — Steffen Forkmann at 14:28 Uhr

Oftmals steht man im Navision vor dem Problem einen Report in einem bestimmten Druckerfach auszugeben. Dafür muss man jedoch die RawKind-Property des Druckerfachs wissen und im Report als PaperSourceFirstPage bzw. PaperSourceOtherPages oder über CurrReport.PaperSource einstellen. Leider gibt es im Navision keine einfache Möglichkeit diese Property auszulesen. Mit dem folgenden Stück C#-Code kann man sich jedoch alle installierten Drucker samt unterstützten Druckerfächern anziegen lassen:  

using System.Drawing.Printing; .. PrinterSettings ps = new PrinterSettings(); foreach (string name in PrinterSettings.InstalledPrinters) { listBox1.Items.Add(name); ps.PrinterName = name; foreach (PaperSource paperSource in ps.PaperSources) listBox1.Items.Add(ps); }
Download: FindPrinter-Tool (benötigt: .NET Framework 2.0)
Tags: , ,

Saturday, 16. September 2006


TechTalk mit Christian Weyer in Leipzig

Filed under: Diverses,TechTalk,WCF — Steffen Forkmann at 12:40 Uhr

 

Am 27. September findent im Leipziger Mercure-Hotel ein TechTalk mit Christian Weyer über die Windows Communication Foundation (WCF ehemals Indigo) statt. Organisiert wird das Event von der .NET User Group Leipzig.

Die Anmeldung und weitere Informationen gibt es hier.

Saturday, 2. September 2006


Ausblick auf Microsoft Dynamics .NAV 5.0

Filed under: .NET,Navision — Steffen Forkmann at 20:22 Uhr

Laut Microsoft wird Navision 5 wohl im ersten Quartal 2007 kommen und damit die erste Welle der Umstellung zu einem einheitlichen Dynamics auf .NET-Basis darstellen. An dieser Stelle möchte ich einmal die bisher mehr oder weniger öffentlich gemachten Erkenntnisse darstellen und betone aber das dies eher Gerüchte sind, da es ja noch keine öffentliche Beta gibt.

  • Programmiert wird weiterhin in C/AL und nicht in C#! Aber der komplette C/AL-Code wird in C# übersetzt und dann automatisch in eine .NET-Assembly kompiliert und in eine Service Tier gesteckt. Das bedeutet dann wohl, das man den Navision-Code nun endlich auch von “außen” anstoßen kann und somit Sachen wie UnitTesting usw. endlich richtig realisierbar sind. Gleichzeitig bedeutet das aber auch das die Zeiten vorbei sind, in denen man mal schnell ein einzelnes Objekt beim Kunden in der Fernwartung fixen konnte.
  • Reports werden auf Basis der Microsoft SQL Server Reporting Services im RDL-Format laufen. Das wird für die tägliche Arbeit wird das wohl heißen:
    1. Report im Navision Report Designer anlegen und Grobdesign implementieren
    2. Im Visual Studio 2005 dem Report den Feinschliff verpassen
    3. Im Navision nochmal kompilieren
  • Die Benutzeransichten werden rollenbasierend. Microsoft will ein völlig neues Interface-Konzept einführen. Damit der Umstieg aber nicht zu schwer wird, liefert Microsoft für Dynamics .NAV 5.0 wohl 2 verschiedene RichClients aus. Einer der im Look and Feel dem 4.0er entspricht und einen die neue Benutzeroberfläche hat. Die Konvertierung der Oberfläche (Forms und Reports) soll im Wesentlichen automatisch über ein Tool passieren. Microsoft empfiehlt hier den Code innerhalb von Formularen möglichst gering zu halten – damit kann dann der manuelle Umstellungsaufwand reduziert werden.
  • Der Native Server wird immer mehr abgelöst. Nur noch der “alte” Client wird auf den Native Server zugreifen können – der neue rollenbasierte Client wird nur mit dem SQL-Server zusammen arbeiten.
  • Während Navision bis Version 4 ein reines Client/Server-System war wird Microsoft Dynamics 5 eine 3-Tier-Architektur besitzen. Die schon erwähnte .NET-Assembly spielt dabei die sogenannte ServiceTier und enthält die komplette Business-Logik. Die angenehme Folge davon ist, das es damit möglich ist einen auf SharePoint basierenden WebClient zu benutzen. Der Kunde hat dann also die Wahl zwischen Windowsoberfläche (RichClient) und Weboberfläche (ThinClient).
  • User erhalten eigene “HomePages”. Darunter versteht Microsoft benutzerdefinierte Startseiten, die dem Nutzer ermöglichen mit wenigen Clicks die für ihn wichtigen Funktionalitäten zu erreichen ohne sich mühselig im mittlerweile ja gewaltigen Navision-Menü zu verlieren. Besonderes Augenmerk liegt bei den “HomePages” auch auf der Outlook-Integration.
  • Es wird wohl auch kleinere C/AL-Verbesserungen geben:
    • Block-Einrückung (Der Wahnsinn *grins*)
    • SMTP-Features
    • Einfacheres Handling mit Fehlertexten
    • Benutzung von neuen Bildformaten (WMF, JPG, GIF) in Forms und Reports
  • WebServices werden ein zentrales Element von Navision. Mit Hilfe neuer Tools soll es möglich werden C/AL als WebServices zu veröffentlichen.
  • Die Perfomance auf dem SQL-Server soll massiv verbessert werden.

Windows Workflow Foundation (Teil 1)

Filed under: WF — Steffen Forkmann at 17:11 Uhr

“Businesses depend on business processes” schreibt David Chappell als einleitenden Satz in einem viel zitierten Artikel über die Windows Workflow Foundation (WF). Dieser Satz zeigt meiner Ansicht nach sehr gut wie wichtig es für Unternehmen ist ihre Geschäftsabläufe zu standardisieren und zu automatisieren. Dabei gibt es zwei Welten die aufeinander prallen. Auf der einen Seite sind logische und streng geordnete Programme und auf der anderen Seite Menschen, die Ihre Arbeitsabläufe unterbrechen und einteilen wollen. Programme sind in der Regel so geschrieben, dass sie ihre Aufgaben schön sequentiell hinter einander abarbeiten. Menschen tendieren eher dazu angefangene Aufgaben erstmal ruhen zu lassen und bei Bedarf andere Aufgaben zwischen zu schieben. Man denke dabei an einen Angestellten der zur Mittagspause geht und unterwegs einen Kollegen trifft. Der Kollege erzählt ihm von einem wichtigen Auftrag und schon startet der Angestellte noch beim Mittagessen einen neuen Workflow.

Was ist eigentlich ein Workflow?

Ein Workflow ist eine vordefinierte Menge an Aktivitäten die Menschen und/oder Software koordiniert zu einem bestimmten Ergebnis führen soll. Dabei unterscheidet man in sequentielle (FlowCharts) und zustandsbasierte Workflows (StateMachines).

FlowChart innerhalb der WF

StateMachine in der WF

Was sind typische Workflow-Szenarien?
  • Bestellvorgänge: Wenn beispielsweise eine Bestellung in einem OnlineShop aufgeben wird muss eine Bestätigung erfolgen (je nach Bestellwert automatisch oder manuell). Danach muss eine Bestätigungsmail versandt werden, die Abbuchung vorgenommen und die Bestellung im Lager zusammengestellt und versandt werden.
  • Zulassungsvorgänge: In Firmen fallen oftmals Dokumente an die von verschiedenen Personen bewilligt und freigegeben werden müssen. Gleichzeitig wollen die Personen möglicherweise Notizen und Änderungsvorschläge für das Dokument hinterlassen.
  • Issue tracking: Ein CallCenter nimmt Anfragen und Probleme entgegen und startet für jedes Problem einen Supportvorgang (Ticket). Dabei kann es je nach Problem verschiedene Abläufe geben, bei denen die verschiedensten Personen (Second-Level-Support, Administratoren, Entwickler) involviert sein können.

Wie kann man solche Geschäftsabläufe jedoch unterstüzen und kontrollieren? Die Antwort lautet natürlich Windows Workflow Foundation.

Was ist die WF?

Die WF ist ein zum .NET Framework 3.0 gehörendes deklaratives Programmierkonzept, das Entwicklern ermöglichen soll komplexe Workflow-Szenarien im Computer abbilden zu können. Besonderes Augenmerk wurde dabei auf die grafische Veranschaulichung des Workflows innerhalb des Visual Studio Designers gelegt, so dass man komplexe Arbeitsabläufe direkt mit den jeweiligen Workflow-Experten grafisch erfassen kann. Gleichzeitig wird eine RunTime-Umgebung zur Verfügung gestellt, die innerhalb eines Host-Prozesses den Ablauf des Workflows steuert.

Jeder Workflow braucht einen Host-Prozess, der die RunTime-Umgebung des Workflows instanziert. Dies kann jede .NET-Anwendung aber auch jeder Server sein. Die Windows Workflow Foundation-Technologie kommt übrigens ursprünglich aus dem BizTalk-Server und wurde von dort direkt ins .NET-Framework ausgelagert. 

Ist die WF nur für Entwickler?

Prinzipiell ist die WF ein Programmierkonzept – jedoch wurde die WF bereits in die nächsten Versionen von SharePoint und Office integriert, so dass es durchaus möglich sein wird Workflows zu definieren ohne eine einzige Zeile Code zu schreiben. Dokumentenzulassungs-Workflows zum Beispiel kann man komplett im SharePoint Designer erstellen.

Wie geht es weiter?

Im nächsten Teil der Serie werde ich einen einfachen Workflow und die Implementation mit der WF vorstellen. 

Weiterführende Quellen:
Tags: , ,

.NET Rocks – Internetradio

Filed under: .NET,WebCasts — Steffen Forkmann at 15:49 Uhr

Unter http://msdn.microsoft.com/dotnetrocks/ gibt es ein Internetradio, dass alle paar Tage eine ca. einstündige Talk Show zu .NET-Themen sendet.

https://apotekese.com

Tests des Windows Live Writer (beta)

Filed under: .NET,Diverses — Steffen Forkmann at 13:23 Uhr

Nachdem ich bisher nur Gutes vom Windows Live Writer gelesen habe, wollte ich das neue Tool auch mal ausprobieren.

Der erste Eindruck ist durchweg positiv auch wenn die Beta noch einige kleinere Schwachstellen hat.

Nach der Installation fragt Live Writer nach den LogIn-Daten des Blogs. Da ich Blogger benutze musste ich nur meinen Blogger-Account angeben und konnte dann direkt loslegen und mit Hilfe dieses Testposts Erfahrungen sammeln:

  1. Der Editor bietet fast Word-Komfort – sogar Undo-Funktionalität ist implementiert.
  2. Das Veröffentlichen von Post geht spielend einfach.
  3. Für Bilder kann man einen eigenen FTP-Account angeben.
  4. Karten von Windows Local Live können eingefügt werden. (Offensichtlich gibt es da aber noch ein paar Bugs.)
  5. Posts können nach dem Veröffentlichen editiert werden. Dabei kann ich sogar Posts die ich nicht mit dem Live Writer erstellt habe editieren.
  6. Es gibt eine Wörterbuch-Funktion. Allerdings habe ich die bisher noch nicht auf Deutsch einstellen können.
  7. Ping-Funktionaltität nach dem Bloggen ist auch implementiert, so dass z.B. Technorati nun automatisch auf die neuen Posts aufmerksam gemacht wird.
  8. Es gibt einen Windows Live Writer SDK falls man was dazu programmieren will. Es ist ja nicht so, das ich das jetzt direkt vor hätte, aber schön zu wissen. (Das ist so ähnlich wie mit meinem Handy. Das habe ich vor 1,5 Jahren gekauft. Auschlaggebendes Argument war damals, mit dem Argument das dort das .NET-Framework läuft. Bislang hatte ich aber noch keine Zeit dafür mal eine Anwendung zu schreiben. Ich habe noch nicht mal irgend ein .NET-Programm auf dem Handy. Aber schön zu wissen das es gehen würde… )

Wer mehr über den Windows Live Writer lesen will: http://windowslivewriter.spaces.live.com/

Tuesday, 29. August 2006


Nachlese zur ICE2006

Filed under: .NET,Security,Veranstaltungen,Windows Vista — Steffen Forkmann at 17:32 Uhr

Am Samstag war ich mit meinem Kollegen Jens Hesse bei der ICE2006 in Lingen.

An dieser Stelle möchte ich kurz einmal die wichtigsten Themen vorstellen die mich auf der ICE2006 bewegt haben.

  1. Die Windows Workflow Foundation rockt!
  2. Entwickler sollten auf keinen Fall lokale Adminstratoren sein.
  3. Firmen-WLAN’s können viel stärker abgesichert werden als ich bisher angenommen habe.
  4. Windows Live bietet viele bekannte Dienste gesammelt in neuem Umfeld.
  5. Mit lose gekoppelter Software kann man zur Not auch 40.000 Clients bedienen.
  6. Microsoft tut alles um Software sicherer zu machen.
  7. Immer den Feedbackbogen abgeben.

Zu Punkt 1:

In einem Vortrag von Sebastian Weber wurde die Windows Workflow Foundation vorgestellt. Ich muss ganz ehrlich sagen, ich habe schon einiges darüber gelesen aber erst die Demo hat bei mir ein gewaltiges “Aha!-Erlebnis” ausgelöst. Die Einsatzmöglichkeiten der WF sind nahezu unbegrenzt. Einer der großen Vorteile die ich sehe ist, dass man mit dem Designer ein Tool in die Hand bekommt mit dem man zum Kunden gehen kann und gemeinsam mit ihm den Workflow baut. Wenn man dann nach Hause kommt muss man nur noch die freigelassenen Codeblöcke implementieren, der Ablaufplan steht dann jedoch schon.

Workflow Foundation im Einsatz

Ich habe mir bereits die Beta herunter geladen und einige kleine Workflows implementiert und werde dem Thema eine eigene Blog-Serie widmen.

Zu Punkt 2:

In einem wirklich interessanten Vortrag zeigten die Security-Experten Michael Willers und Frank Solinske die Gefahr von Rootkits und wie leicht diese auf Rechnern mit Administratorbenutzern die Kontrolle übernehmen können.

Es wurde in einer Art Live-Hack gezeigt, dass Rootkits bis in den Kernelmode (Ring 0) eindringen können und dann dort einfach alles machen können. EventLog, Prozessanzeige usw. kann man ab dem Moment vollkommen vergessen. Selbst ein Neuformatieren der Festplatte hilft nicht das Rootkit los zu werden, da es die eigenen Speicherbereich als defekt markieren kann und somit vom Formatieren auschließen kann. Auch das Finden der Rootkits ist selbst für Experten ein Problem, da sich manche ins BIOS oder den Grafikkartenspeicher speichern oder sich teilweise als Gerätetreiber tarnen.

Die beiden Redner starteten deshalb einen energischen Aufruf, dass Firmen Entwicklern die Lokalen Adminrechte entziehen sollten – so wie bei Microsoft und einigen anderen Firmen schon geschehen.

Wer mehr darüber lesen will, kann sich die Vortragsfolien von Michael Willers als Einstiegspunkt ansehen oder unter www.rootkits.com einige Rootkits downloaden.

Zu Punkt 3:

Daniel Melanchthon und Michael Kalbe diskutierten in einem durchweg unterhaltsamen Vortrag wie man das firmeninterne WLAN sicherer konfigurieren kann.

Michael Kalbe und Daniel Melanchthon zeigen sicheres WLAN

Bei einer der interessanten Möglichkeiten wurde ein Kondom über die Antenne des Access-Points gezogen. Der Erfolg war jedoch eher bescheiden. Informationen zu besseren Ideen findet man unter:

  • Sichere Drahtlosnetzwerke mit Windows Server 2003 [Webcast]
  • Windows XP – Überblick über Technologien und Komponenten für die Bereitstellung drahtloser Netzwerke [Whitepaper]
  • Grundlagen IPsec
  • Grundlagen Infrastruktur öffentlicher Schlüssel (Public Key Infrastructure)
  • Zu Punkt 4:

    Oliver Scheer zeigte in seinem Vortrag einen Einblick in die Windows Live Beta. Aus meiner Sicht ist da nichts wirklich neues dabei – jedoch werden viele bekannte und beliebte Dienste in einem neuen programmierbaren Komplettmodell angeboten. Ob sich Windows Live wirklich gegen die erfolgreichen Einzeldienste durchsetzen kann wird sich erst noch zeigen. Schön bunt und interaktiv ist es jedoch jetzt schon.

    Zu Punkt 5:

    Shinja Strasser und Frank Eller zeigten ihrem Vortrag die Architektur ihres Frameworks, das angeblich so stark skaliert das auch 40.000 Clients bedient werden können. Viele der gezeigten Aspekte sind natürlich nicht unbekannt jedoch konnte man gut erkennen, dass die Basis für alle wirklich großen Anwendungen eine lose Koppelung der einzelnen Funktionalitäten sein muss. Wenn man diesen Punkt von Anfang an beherzigt, dann lassen sich weitere schwierige Aspekte wie z.b. Updates zur Laufzeit (ein System mit tausenden Clients kann kaum einfach angehalten werden) mit relativ wenig Aufwand realisieren.

    Der zweite Teil des Vortrags sollte die neueste Version des Frameworks in Aktion zeigen, leider gab es da einige Probleme so dass dies sicher nicht so gelaufen ist wie von den Rednern gewünscht. Bei dem was man sehen konnte waren jedoch auch schon viele Prinzipien wie RemoteTransperancy usw. implementiert.

    Zu Punkt 6:

    Microsoft hat mit der Implementaton des Security Development Lifecycle ein System geschaffen um Ihre eigene Software auf ein wesentlich höheres Sicherheitsniveau zu befördern. Der Aufwand der dort betrieben wird ist absolut beeindruckend, aber offenbar auch nötig um das Vertrauen in Microsoft Software und Software im Allgemeinen zu stärken. besonders interessant ist, das nach Aussagen des Redners Sebastian Weber kein Microsoft Produkt mehr ausgeliefert wird, wenn es den abschließenden Security Review nicht besteht.

    Zu Punkt 7:

    Auf der ICE gab es am Ende so viele Bücher bei der Verlosung, so dass am Ende fast jeder der den Feedbackbogen abgegeben hatte auch eins erhalten hat. Jens und ich haben das natürlich vergessen 🙁

    Alle Speaker auf ICE2006

    Bilder mit freundlicher Genehmigung von Frank Lüken

    Tags: , , ,

    Thursday, 17. August 2006


    Konfigurationsdateien schnell und flexibel

    Filed under: C# — Sebastian Wolf at 17:03 Uhr

    Nini ist eine .Net Library mit welcher man besonders schnell hoch flexible Anwendungen mit Konfigurationsdateien erstellen kann. Die Anwendung ist denkbar einfach wie man im folgenden Beispiel sieht:

    ; MyApp.ini [Logging] File Name = MyApp.log MessageColumns = 5 MaxFileSize = 40000000000000

    Und der C# Code zum einlesen sieht folgendermasen aus:

    using Nini.Config; IConfigSource source = new IniConfigSource("MyApp.ini"); string fileName = source.Configs["Logging"].Get("File Name"); int columns = source.Configs["Logging"].GetInt("MessageColumns"); long fileSize = source.Configs["Logging"].GetLong("MaxFileSize");

    Das war aber noch längst nicht alles. Noch mehr gibt es hier.


    Visual Studio 2005 für lau

    Filed under: Visual Studio — Steffen Forkmann at 15:52 Uhr

    Dank der “Watch & Win”-Kampagne von Microsoft habe ich jetzt für private Zwecke eine Visual Studio 2005 Standard-Version gewonnen. Dabei muss man sich einfach 5 kurze (Einsteiger-)Videos ansehen, die Gewinncodes notieren und dann einfach über das Gewinnformular an Microsoft schicken. Mitmachen lohnt sich da die Gewinner zusätzlich auch noch 6 Monate ASP.NET-Webhosting gewinnen.