iSven

Unwichtiges nach Relevanz sortieren...

Kommentarheader für ASP.NET Seiten mit Subversion Keywords

Subversion unterstützt das Ersetzen von Keywords im Sourcecode. Hierzu müssen für die jeweiligen Dateien die entscheidenen Properties gesetzt werden. Beispiel: HeadURL LastChangedBy LastChangedRevision LastChangedDate

In C# Dateien sieht dann ein Kommentarheader folgendermaßen aus:

//===============================================================================
// $HeadURL$
// $LastChangedBy$
// $LastChangedRevision$
// $LastChangedDate$
// Copyright   : 2006-2007, ITDevCon Germany
// Autor       : Sven Soennichsen
// Beschreibung: Ausführliche Beschreibung
//===============================================================================


In ASPX Dateien empfiehlt sich folgendes Format:

<%--
  //===============================================================================
  // $HeadURL$
  // $LastChangedBy$
  // $LastChangedRevision$
  // $LastChangedDate$
  // Copyright   : 2006-2007, ITDevCon Germany
  // Autor       : Sven Soennichsen
  // Beschreibung: Ausführliche Beschreibung

  //===============================================================================
--%>

Subversion ersetzt dann beim Commit die Keywords mit den tatsächlichen Tatbeständen.

Nachtrag zum .NET Usergroup Treffen in HH

Hier ein kleiner Nachtrag zum .NET Usergroup Treffen in Hamburg, das jeden ersten Mittwoch im Montag im Irish Pub im Fischhafen stattfindet:

Thema war die Windows Workflow Foundation (WF), welche Bestandteil von .NET 3.0 ist. Da das Thema sich nicht gleich vollständig bei einem Gläschen Bier erschließt, hier einige Links, die weiterführende Infos enthalten:

  1. Die Powerpoint Folien zum Vortrag von Sebastian Weber gibt es hier.
  2. Super kleine Webcasts zum Thema WF gibt es unter wf.netfx3.com. Einfach unter Samples/Information/Screencasts die entsprechenden Dateien runterladen. Jeder Webcast dauert zwischen 10 und 15 Minuten und führt ideal in die Windows Workflow Foundation ein.
  3. Das Windows SDK for Vista and .NET 3.0 enthält viele Samples und die Dokumentation zu WF.
  4. Zur Entwicklung von Workflows braucht man den graphischen Designer als Visual Studio Extension.

Viel Spaß in der neuen Welt der Workflows!

Übrigens, beim nächsten Usertreffen am 7.3.2007 werden wir nochmals das Thema Workflow Foundation behandeln. Vielleicht bringen ja mal einige Sharepoint Entwickler Ihr Notebook mit und erzählen von Ihren Erfahrungen...

.NET 3.0 ist da!

Nach vielen CTP's und 2 Betas ist die Version Nummer 3 des .NET Frameworks released worden. Allerdings hat sich bei den bestehenden .NET Komponenten nichts geändert, sondern es sind lediglich neue aber sehr interessante Komponenten hinzugekommen:
  • Windows Presentation Foundation
  • Windows Communication Foundation
  • Windows Workflow Foundation
Insofern wäre die Versionsnummer 2.5 für das Framework eigentlich eher angebracht gewesen, denn bei den Sprachelementen bleibt alles wie gehabt.

Mehr Infos und Links zum Download

Kommunikation zwischen eigenen User Controls in ASP.NET

Als ein ganz wichtiges Mittel zur Kapselung von immer wiederkehrenden Bestandteilen bei ASP.NET Webanwendugen existieren User Controls. Im Gegensatz zu Custom Controls lassen sich User Controls recht schnell und einfach innerhalb einer Anwendung erstellen, können aber nicht wie Custom Controls in anderen Anwendungen weiterverwendet werden.
Prinzipiell sollte man User Controls immer als eigenständige Einheit ohne Abhängkeiten zu anderen Controls oder Seiten entwickeln. Was aber, wenn man einem anderen User Control ein Ereignis senden will bzw. eine Methode aufrufen will? Beispiel: ein User Control für eine Statuszeile. Andere User Controls sollen dem Statuszeilencontrol den aktuellen Zustand mitteilen. Beispielsweise, daß Daten erfolgreich geladen oder aktualisert worden sind. Diese Infos gehören eigentlich zum guten Stil, denn in Zeiten von Ajax kann der User nicht mehr anhand des fehlenden Flackerns beim Postback erkennen, ob eine Aktion nun ausgeführt worden ist oder nicht.

Zum Senden einer Nachricht an so ein Statuszeilecontrol bedarf es erst einmal einer Klasse zur Aufnahme der Argumente:

public class StatusMessageEventArgs : EventArgs{
  private string _message;
  private int _type;

  public enum Types {
    Info,
    Error
  }

  public String Message {
    get {
            return _message;
         }
    set {
            _message = value;
         }
  }

  public Types Type {
    get {
            return (Types)_type;
         }
    set {
            _type = (int)value;
         }
    }
}


Hier wird einerseits eine Message als String übergeben, als auch der Typ der Message: Info oder Error.
Als nächstes benötigen wir eine öffentliche Methode in dem Statuszeilencontrol, dass die Nachricht empfangen und verarbeiten soll:

public void HandleStatusMessageEvent(object sender, StatusMessageEventArgs e) {
  if (e.Type == StatusMessageEventArgs.Types.Info) {
    this.TextInfo = e.Message;
  }
  else {
    this.TextError = e.Message;
  }
}


This.TextInfo und this.TextError sind nur weitere private Properties, die die Statuszeile entsprechend aktualiseren.
Im User Control, daß eine Nachricht an das Statuszeilencontrol senden will, muß ein Eventhandler definiert werden:

public event EventHandler<StatusMessageEventArgs> OnSendStatusMessage;

Dieser Eventhandler kann dann entsprechend im User Control aufgerufen werden:

if (OnSendStatusMessage != null) {
  StatusMessageEventArgs message = new StatusMessageEventArgs();
  message.Type = StatusMessageEventArgs.Types.Info;
  message.Message = "Daten sind aktualisert worden";
  OnSendStatusMessage(this, message);
}

Letztendlich muss dann auf der Seite, die die beiden User Controls enthält eine Verknüpfung zwischen Eventhandler und der Methode hergestellt werden:

this.MyUserControl.OnSendStatusMessage += new
EventHandler<StatusMessageEventArgs> (this.StatusControl.HandleStatusMessageEvent);

Das war's! Durch diese recht lose Kopplung können User Controls miteinander kommunizieren. Die Aufgabe der Verknüpfung der Controls übernimmt dann immer die Seite, in die die User Controls aufgenommen werden.

Visual Studio 2005 Performance Probleme bei ASP.NET Projekten

Wenn's mal wieder länger dauert beim Build: Prüfen, ob Verweise bzw. eingebundene Assemblies mit einer Refresh Datei (wie Assembly.dll.refresh) versehen sind. Diese Datei sorgt bei jedem Build dafür, dass geprüft wird, ob einen neue Version der Assembly vorliegt und das kann den Buildprozess extrem ausbremsen. In einem Projekt von mir benötigte ein Build mit einer Vielzahl von Refresh Dateien so ca. 2 Minuten, nach dem Löschen der Refresh Dateien waren es nur noch 10 Sekunden.
Das Löschen ist recht gefahrlos. Man muss dann nur selbst dafür sorgen, dass die Assemblies immer aktuell sind.

Windows Workflow Foundation

Auf der Suche nach Tipps und Tricks zu der Windows Workfow Foundation bin ich auf folgende Blogs gestossen:

Advanced Workflow: Enabling Tricky Scenarios:

blogs.msdn.com/sonalic/

Paul Andrew