Tagged: Mono RSS

  • admin 02:55 on 26.01.2009 Permalink | Reply
    Tags: , , Mono, Performance,   

    Lazy Loading von Plugins in multilingualen .NET Applikationen 

    Letztes Jahr hab ich eine kleine Anwendungs-Shell gebaut, welche mir die Entwicklung von Desktopanwendungen einfacher machen soll. Schwerpunktmäßig habe ich mich dabei auf die Features Erweiterbarkeit, Multilingualität, Lazy Loading und gute Trennung der Logik von der Oberfläche konzentriert. Als festes Standbein habe ich das Framework Mono.Addins genutzt, mit dem ich in meinen Anwendungen Erweiterungspunkte in einem XML-Baum definieren kann.

    Ähnlich wie in XUL oder XAML erzeuge ich außerdem etliche Teile meiner Oberflächen direkt aus dem XML-Baum, der sich aus allen XML-Knoten der geladenen Plugins ergibt. Dies ermöglichst es mir Menüs und Werkzeugleisten darzustellen ohne alle Plugin-Assemblies zu laden. Denn die Infos über Struktur, Titel und Icons der Oberfläche befinden sich bereits in den XML-Daten und müssen nicht erst vom .NET Code erzeugt werden. Mit solchen Prinzipien kann man auch große Anwendungen zu einem schnellem Start verhelfen, Visual Studio, #Develop und Co machen es genauso.

    (More …)

     
  • admin 10:15 on 05.09.2008 Permalink | Reply
    Tags: , Debugging, Mono,   

    Remote Debugging: .NET-Software mit Visual Studio unter Linux debuggen 

    Die Leute vom Mono-Projekt arbeiten gerade intensiv an dem Mono Debugger (mdb) und einem Visual Studio Plugin, mit dem Remote Debugging von .NET-Software erstmals möglich wird. Damit kann man endlich direkt aus seiner gewohnten Windows/Visual Studio-Umgebung heraus seine Programme unter Linux starten lassen und ganz normal debuggen mit allem was dazu gehört … Haltepunkte, Beobachten lokaler Variablen etc.

    Meiner Meinung nach eine geniale Sache, die sicherlich die Verbreitung von .NET-Software unter Linux stark verbessern und die Akzeptanz von Mono vergrößern wird.

    Alternativ zum Remote Debugging mit Visual Studio wird man auch bald mit MonoDevelop .NET-Software debuggen können – direkt unter Linux. Bis dato gibt es keinen integrierten Debugger für MonoDevelop 1.0, das soll sich nun aber mit Version 2.0 ändern – die zusammen mit Mono 2.0 fertiggestellt wird. Hoffentlich ist es bald so weit :-)

     
  • admin 20:02 on 19.07.2008 Permalink | Reply
    Tags: , Mono,   

    Gendarme 0.2 

    Vor kurzem ist Gendarme 0.2 fertig geworden! Es gibt nun inzwischen auch einen Windows-Installer “gendarme-0.2.0.0-win32-setup.zip” in der Google-Gruppe zum Projekt. Nach der Installation kann man direkt loslegen … Assemblies auswählen, analysieren und den resultierenden Report betrachten.

    Inzwischen gibt es eine wirklich große Anzahl an Code-Regeln. Nicht alles ist unbedingt immer für jeden sinnvoll, aber mit diesem Klasse-Tool findet man sicher immer noch einige unerwartete Probleme … und nicht zuletzt erhält man natürlich auch wunderschönen Code, wenn man alle Regeln einhält :-)

     
  • admin 20:38 on 16.05.2008 Permalink | Reply
    Tags: , , Mono, ,   

    Gendarme – Alternative zu FxCop? 

    Viele kennen sicherlich die Codeanalyse von Microsoft, die auch in einige Editionen der Visual Studio Produkte integriert ist … nun gibt es eine Open Source Alternative namens Gendarme, die innerhalb des Mono Projekts entwickelt wird.

    Mit Gendarme kann man Probleme in seinem .NET-Code finden und leicht beheben. Neben echten Problemem werden von dem Analyse-Tool aber auch sehr viele Vorschläge und harmlose Warnungen angezeigt, die für ein besseres OOP-Design sorgen sollen. So meckert Gendarme z.B. bei sehr langen Methoden, deckt mögliche Threading-Probleme auf und sorgt allgemein für besseren und stabileren Code.

    Aktuell gibt es einen Assistenten, der nach dem Auswählen von .NET-Assemblies einen Report ausgibt. In Zukunft wird es sicherlich auch eine Integration in ausgewählte IDE’s geben, ein Addin für MonoDevelop ist bereits in Arbeit.

     
  • admin 23:21 on 11.04.2008 Permalink | Reply
    Tags: , , Mono,   

    Open Toolkit 

    Vor einiger Zeit bin ich auf das Open Toolkit gestoßen, einen sehr coolen OpenGL/OpenAL .NET-Wrapper. Anders als z.B. Tao funktioniert das Toolkit bei mir auch problemlos unter Linux/Ubuntu. Außerdem bietet OpenTK zusätzlich zur normalen C-API von OpenGL/OpenAL viele High-Level-Klassen. Besonders interessant ist für mich das einfache Zeichnen von Text, der dann auch noch gut aussieht.

    Ein weiterer Pluspunkt: Es gibt ein Winforms-Control, was mit Mono und .NET gleichermaßen funktioniert und so erstmals die Entwicklung von CrossPlattform-OpenGL-Programmen mit .NET möglich macht.

    Da es bisher kein Stable-Release gibt, sind jedoch Veränderungen der Schnittstelle an der Tagesordnung. Dafür kann man aber auch noch selber Patches einsenden, um diese zu verändern. So habe ich nun beispielsweise Unterstützung für Bezier-Kurven nachgereicht, sowie die Anbindung von Mathe-Klassen an die OpenGL-API ermöglicht.

    Bekanntermaßen muss man bei vielen Matrix-Funktionen in OpenGL einen Zeiger übergeben, der auf das float[]-Array zeigt. OpenTK bringt eine Reihe von nützlichen Strukturen wie Vector3 oder Matrix4 mit, mit denen der sichere Umgang mit OpenGL problemlos möglich ist. Auch in Sprachen, die ohne Zeiger auskommen müssen – wie Visual Basic. Beispiel:

    Vector3 start = new Vector3(1.0f, 0.0f, 5.0f);
    Vector3 end = new Vector3(5.0f, 3.0f, -6.0f);
    Matrix4 projection = Matrix4.LookAt(...);
    GL.LoadMatrix(ref projection);
    GL.Color4(Color.Green);
    
    GL.Begin(BeginMode.Lines);
        GL.Vertex3(start);
        GL.Vertex3(end);
    GL.End();
    

    So einfach war OpenGL-Programmierung noch nie :-)

     
  • admin 23:26 on 03.02.2008 Permalink | Reply
    Tags: , Mono,   

    Item Templates in Visual Studio 2005 

    Heute habe ich mir mal einen Webcast zum Thema “Wie erzeuge ich selber Symbol- und Projektvorlagen” angeschaut. Erstaunlich einfach! Ich habe gleich mal ein Item Template gebaut, mit dem man XML-Dateien für Mono.Addins erzeugen kann.

    addintemplate.png

    Diese Eintrag erscheint nun wenn man auf ein Projekt rechtsklickt und dann “Hinzufügen | Neues Element” anwählt. So kann man sich das lästige Eintippen des Grundgerüsts nun sparen.

    Installation der Vorlage

    1. Zip-Datei hier runterladen

    2. Datei verschieben nach “Eigene Dateien/Visual Studio 2005/Templates/ItemTemplates

    3. Fertig!

    So und jetzt wollen wir natürlich noch sehen, was die Vorlage überhaupt erzeugt (der Name der Datei wurde im Dialog auf “My Addin” festgelegt):

    < ?xml version="1.0" encoding="utf-8" ?>
    
    
      
      
        
        
      
    
      
      
        
      
    
      
      
        
      
    
      
      
        
      
    
    
     
  • admin 10:08 on 10.05.2007 Permalink | Reply
    Tags: , , Mono   

    Mono.Addins 

    Vor ein paar Tagen habe ich die Bibliothek Mono.Addins gefunden, mit der man erweiterbare Anwendung schreiben kann. Das Konzept dahinter ist stark dem Kern von SharpDevelop angelehnt.
    Man hat ebenfalls einen Addin-Tree, der alle sogeannten Extension Points enthält. Dies sind die Punkte im Baum, an denen man sich als Addin einklicken kann. Beispielsweise könnte dies der Baumpfad “\Menu\File\” sein. Ein Addin würde nun innerhalb einer XML-Manifest-Datei eigene Knoten (Extension Nodes) zu diesem Pfad hinzufügen und sich somit bei der Anwendung registrieren. Beim Start der Anwendung werden alle Manifest-Dateien aller Addins eingelesen und zu einem gemeinsamen Baum zusammengefasst. Bei diesem Beispiel würden nun alle Einträge aus dem Pfad “\Menu\File” ausgelesen werden und auf Basis dieser Daten würde das Menü erzeugt werden.

    Insgesamt ist Mono.Addins etwas “sauberer” programmiert als der Kern von #Develop. Es gibt keine festen Verweise zu log4net oder z.B. zu WindowsForms. Möchte man Features wie das Logging eingebaut haben, kann man diese später noch mit Hilfe von Interfaces innerhalb von Mono.Addins integrieren. Die Bibliothek ist außerdem auch portabel und daher genauso gut für Linux wie für Windows geeignet.

    Eine exzellente Referenz befindet sich auf der Mono-Seite hier. Übrigens kann man in Mono.Addins auch fast alles, was man über XML-Dateien beschreibt, auch über Attribute im Code regeln. Eine weitere interessante Option (und auch meine bevorzugte) ist das Integrieren der XML-Beschreibung in die Assembly als eingebettete Ressource.

     
c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
l
go to login
h
show/hide help
esc
cancel