In der deutschsprachigen
ALT.NET-Mailingliste ist eine
sehr interessante Diskussion über die Erzeugung eines visuellen Abhängigkeitsgraphen aus dem Quelltext heraus entstanden. Der Gedanke, aus bestehendem Quelltext eine Architekturdokumentation generieren zu lassen klingt sehr vielversprechend.
Ralf Westphal schrieb ein Posting, in dem er fragte, wie man ein Fluent API dafür aufbauen könnte. Seine Idee sieht dabei in etwa so aus:
Konfiguration:
DIContainer.Instance
.Root<IServiceA, ServiceA>()
.uses<IServiceB, ServiceB>();
Dazugehöriger Quelltext:
class ServiceA : IServiceA
{
private IServiceB _sb;
public ServiceA()
{
_sb = DIContainer.Instance.Get<IServiceB>();
}
}
Generierung des Graphen:
Bitmap bmp = DIContainer.Instance.DependencyGraph.ToBitmap();
Es gibt nur ein Problem, das ich bei dem Ansatz noch sehe. Es verletzt das
DRY-Prinzip. Ralf konnte mich bisher noch nicht restlos vom Gegenteil überzeugen. Die Information der Abhängigkeit ist an zwei Stellen vorhanden. Einmal in der Konfiguration des Containers und ein zweites mal im Quelltext selbst.
Momentan bin ich der Überzeugung, dass man mit Hilfe des
Managed Extensibility Frameworks diese Wiederholung der Informationen aufheben könnte. Ich forsche aber noch. :)