Lutz-IT GmbH - Ihr Partner für IT-Consulting und Programmierung
  • Email
  • Rss
Tel: +41 76 459 0580
  • IT-Consulting
  • Programmierung
  • Showcases
  • Blog
  • Referenzen
  • Auszeichnungen
  • Kontakt
Search the site...
Home» Programmierung » Plugin Mechanismus für Trading Systeme

Plugin Mechanismus für Trading Systeme

Posted by Benjamin Lutz - 9. April 2011 - Programmierung
0

Um ein Handelssystem erweiterbar  zu designen benötigt man einen leistungsfähigen Plugin Mechanismus der es erlaubt weitere Handelssystemlogik ins System einzuhängen und zu nutzen.

Vor einem Jahr hätte ich an dieser Stelle einen Artikel über Reflection gebracht. Aber die Welt hat sich weiter gedreht und Microsoft hat inzwischen MEF (Microsoft extensibility Framework) releast.

Der heutige Artikel gibt eine kurze Einführung wie ein Plugin Mechanismus mit MEF realisiert werden kann.

1. Fügen Sie Ihrem Projekt eine Referenz auf System.ComponentModel.Composition.dll hinzu

2. Definition des Interfaces für Handelssysteme

  public interface ITradingSystem
    {
        void Start();
        void Stop();
    }

3. Initialisieren von MEF

Die Nachfolgende Klasse zeigt schematisch die Initialisierung einer Liste mit Handelssystemen. Dass die MEF Initialisierungslogik nicht in den Konstruktor sondern in einen Bootstrapper gehört versteht sich von selbst.

    public class TradingSystems
    {
        public TradingSystems()
        {
            var container = new CompositionContainer(new DirectoryCatalog(@".\"));
            container.ComposeParts(this);
        }   

        [ImportMany]
        public List<ITradingSystem> TradingSystemList { get; set; }
    }

4. Implementierung von Plugins (Handelssystemen)

    [Export(typeof(ITradingSystem))]
    public class TradingSystemA : ITradingSystem
    {
        public void Start(){}
        public void Stop(){}
    }

    [Export(typeof(ITradingSystem))]
    public class TradingSystemB : ITradingSystem
    {
        public void Start(){}

        public void Stop(){}
    }

Der ganze Mechanismus ist recht simpel. Man defiert einen Katalog auf ein Verzeichnis. MEF sucht in diesem Verzeichnis alle Assemblies und alle Typen. Jede Klasse die mit dem Export Attribut dekoriert ist wird in den Katalog mit aufgenommen. Der einzige Stolperstein liegt darin, das Interface zu exportieren und nicht die konkrete Implementierung. Dies wird mit dem typeof Attribute erreicht.

An der Stelle, an welcher die Plugins benötigt werden, genügt eine Collection Property vom Typ des Interfaces dekoriert mit dem ImportMany Attribut. Die Liste wird automatisch von MEF mit Instanzen der im Katalog enthaltenen Typen instanziert und gefüllt.

 

.NET 4, C#, Finance, MEF

Neueste Artikel

  • Windows Service Installation Simplified

    17. Juni 2013
  • Generieren eines Software Architektur Dokuments mit Enterprise Architect

    21. Mai 2013
  • .NET 4.5 Trading API für Interactive Brokers

    6. Mai 2013
  • Windows 8.1 jetzt doch wieder mit Start Menü?

    29. April 2013
  • WCF Service Discovery mit .NET 4

    12. April 2013

    Artikel Archiv

    • [+] 2013 (15)
      • [+] Juni (1)
        • Windows Service Installation Simplified
      • [+] Mai (2)
        • Generieren eines Software Architektur Dokuments mit Enterprise Architect
        • .NET 4.5 Trading API für Interactive Brokers
      • [+] April (3)
        • Windows 8.1 jetzt doch wieder mit Start Menü?
        • WCF Service Discovery mit .NET 4
        • Hackerangriff auf Blog durch SQL-Injection
      • [+] März (3)
        • Distributed Event Aggregator bzw. ServiceBus simplified
        • Aspekt orientierte Programmierung (AOP)
        • Testautomatisierung mit Unittests und Moq
      • [+] Februar (2)
        • Unleash the power of Domain-Specific Language in VS2012
        • Benutzeroberflächen ergonomisch gestalten
      • [+] Januar (4)
        • Trend Trading System App für Windows 8 verfügbar
        • Erfahrungsbericht: Domain Oriented N-Layered von Microsoft Spain
        • Kommunikationsszenarien mit NServiceBus 3.3
        • HTML5 Anwendung als WinRT Application veröffentlichen
    • [+] 2012 (28)
      • [+] Dezember (1)
        • DataBinding und das MVVM-Pattern in HTML5
      • [+] November (2)
        • Der Unterschied zwischen Sieger- und Verlierertypen
        • Tücken bei der Personalbeschaffung von .NET Entwicklern
      • [+] Oktober (2)
        • Kostenloser Kursdaten REST-Service
        • Migration von .NET 4 Projekten nach WinRT (JS)
      • [+] September (2)
        • Migration von .NET 4 Projekten nach WinRT (XAML)
        • Windows 8 im Praxistest
      • [+] August (1)
        • Eigene Sections in der .NET Standard Konfiguration
      • [+] Juli (2)
        • Steigerung des Marktwerts durch Weiterbildung
        • Effiziente Kostenstrukturen im IT-Consulting - Teil 4
      • [+] Juni (1)
        • Effiziente Kostenstrukturen im IT-Consulting - Teil 3
      • [+] Mai (3)
        • Effiziente Kostenstrukturen im IT-Consulting - Teil 2
        • Effiziente Kostenstrukturen im IT-Consulting - Teil 1
        • Vision eines Entwicklerarbeitsplatzes in der Zukunft
      • [+] April (3)
        • Windows 8 und die Zukunft von Silverlight und WinRT
        • Elegante und Effiziente Data Access Layer mit Dapper.NET
        • Quartalsergebnis Q1/2012 des Trendfolge-Handelssystems
      • [+] März (3)
        • Konfiguration von WCF Services in Silverlight
        • Rapid GUI Prototyping mit Mockups
        • Chancen und Risiken des Entity Frameworks
      • [+] Februar (3)
        • Vorsicht vor Recruiter aus Grossbritannien
        • Financial Chart für Silverlight und WPF
        • Erste Handelssignale 2012
      • [+] Januar (5)
        • Microsoft Silverlight 5 endlich verfügbar
        • Riskmanagement in IT-Projekten
        • Artikelempfehlung: "Schluss mit dem Burnout-Gejammer!"
        • Ursachen von hoher Fluktuation in IT-Projekten
        • Einsatzgebiete von Silverlight5 und HTML5
    • [+] 2011 (36)
      • [+] Dezember (4)
        • Business Objekt Modelle in Entwicklungsprojekten
        • Einsatz von Open Source in Entwicklungsprojekten
        • Buchempfehlung: "Ich weiss, wie du tickst" ISBN 3280054109
        • Prozessverbesserungen für qualitativ hochwertigen Code
      • [+] November (2)
        • Deklarative .NET Programmierung mit Attributen
        • Favorisierte Lösung für Silverlight Reporting
      • [+] Oktober (3)
        • Silverlight Reportinglösungen
        • Testautomatisierung mit Silverlight
        • .NET Schlüsseltechnologien der nächsten Jahre
      • [+] September (4)
        • Hauptgründe für das Scheitern von IT-Projekten
        • Auswahl der Titel für das Handelssystem
        • WebClient Sicherheitsrichtlinien in Silverlight
        • Nachhaltiger Erfolg im Consulting Teil 7 - Projektdauer
      • [+] August (4)
        • Nachhaltiger Erfolg im Consulting Teil 6 - Vertragsverhandlungen
        • Nachhaltiger Erfolg im Consulting Teil 5 - Vorstellungsgespräch
        • Nachhaltiger Erfolg im Consulting Teil 4 - Stundensatzverhandlungen
        • Nachhaltiger Erfolg im Consulting Teil 3 - Bewerbungsmanagement
      • [+] Juli (4)
        • Nachhaltiger Erfolg im Consulting Teil 2 – Onlineportale
        • Nachhaltiger Erfolg im Consulting Teil 1 - Das Profil
        • Integration von Windows Forms Controls in WPF
        • Unittesten von WCF-Services mit der ServiceHost Klasse
      • [+] Juni (4)
        • Verteilte Transaktionen in einer Service orientierten Architektur
        • Service orientierte Architektur und Domain Driven Design
        • View und ViewModel mit MEF unter testbarkeits Aspekten verbinden
        • Entfernung ungenutzter Strings in .NET Resource-Files
      • [+] Mai (5)
        • Enterprise Library Silverlight Integration Pack Validation Block Teil II
        • Enterprise Library Silverlight Integration Pack Validation Block Teil I
        • Programmierung von Streaming Services mit WCF und Silverlight
        • Order Statemachine mit Workflow Foundation 4
        • Memory leaks bei eventbasierten Architekturen
      • [+] April (5)
        • Linq Expressions in der Praxis
        • Handelsregeln mit der .NET Rule Engine umsetzen Teil II
        • Handelsregeln mit der .NET Rule Engine umsetzen Teil I
        • Plugin Mechanismus für Trading Systeme
        • Charttechnik mit .NET
      • [+] März (1)
        • Schaffen der Grundlagen für ein eigenes Handelssystem
    © 2013 Lutz-IT GmbH