AWZhome - NQ - Übersicht
 Deutsch 
Quick Links
Mehr im Web
Folge A_Rpinski auf Twitter AWZhome Ihren XING-Kontakten zeigen

NQ-Projekt

Dieser Artikel beantwortet einige Fragen zum Projekt.

Was ist NQ?
Was kennzeichnet eine NQ-Anwendung?
Welche Vorteile ergeben sich?
Für welche Arten von Anwendungen ist NQ gedacht?
NQ Common Services
Wann wird NQ veröffentlicht?
Abschließend: Wofür steht eigentlich "NQ"?

Was ist NQ?

Bei NQ handelt es sich um eine Anwendungsarchitektur, eine Art Schablone, auf deren Basis sich eine Anwendung beliebiger Art aufbauen lässt. Die Grundsätze dieser Architektur sind umfassende Modularität durch einen komponentenorientierten Aufbau und Austauschbarkeit von Komponenten und deren Funktionen. Momentan wird das System für die .NET-Plattform entwickelt.

Was kennzeichnet eine NQ-Anwendung?

Im Sinne von NQ besteht eine Anwendung aus einer Ansammlung zusammenspielender Komponenten. Eine Komponente kann aus einer oder mehreren .NET-Assemblies bestehen, die beim Start der Anwendung dynamisch aus einem bestimmten Verzeichnis geladen werden. Eine Komponente bietet anderen Komponenten ihre Funktionalität in Form sog. Services an. Ein Service ist einfach gesagt ein Objekt mit Methoden und Eigenschaften, die von anderen Services genutzt werden können. Dieses Objekt ist durch ein Interface abstrahiert, sodass die interne Implementierung eines Services vor anderen Komponenten verborgen bleibt. Nach außen ist nur die Schnittstelle eines Services bekannt.

Den Zugriff von Services untereinander regelt der Service-Manager, der Kern des NQ-Systems. Dieser führt Buch über geladene Komponenten und deren Services und stellt den "Vermittler" zwischen ihnen dar.

Der Service-Manager wird durch den sog. NQ-Host angestoßen. Der Host ist die ausführbare Datei (*.exe unter Windows), die zum Starten der Anwendung verwendet wird. Sie erstellt eine Instanz des Service-Managers und veranlasst diesen, die verfügbaren Komponenten zu laden.

Alle Services sind austauschbar. Beispiel: Sollte eine Komponente den Service "Service1" bereitstellen, kann eine andere Komponente diesen "ersetzen" (in NQ-Terminologie als "Service Substitution" bezeichnet), d.h. sie lässt alle Zugriffe anderer Komponenten auf Service1 zu einem eigenen Service Service2 umleiten. Der Service-Manager stellt dabei sicher, dass die Schnittstelle gewahrt bleibt, sodass andere Komponenten von dieser Ersetzung nichts mitbekommen und normal weiter funktionieren.

Welche Vorteile ergeben sich?

  • Bei strenger Einhaltung der NQ-Prinzipien ergibt sich automatisch ein sauberes Objektmodell mit strikter Aufgabenteilung.
  • Plug-In-Modell integriert: Da neue NQ-Komponenten automatisch ins System integriert werden, können Plug-Ins für bestehende Anwendungen einfach realisiert werden.

Für welche Arten von Anwendungen ist NQ gedacht?

Grundsätzlich für alle! Es wurde zwar ursprünglich mit einem besonderen Augenmerk auf GUI-Anwendungen mit Verwaltung mehrerer Dokumente entworfen (z.B. für Browser, Editoren und Entwicklungsumgebungen, Dateimanager uvm.), aber es steht auch ein Konsolenhost zur Verfügung, der die Entwicklung NQ-basierter Konsolenanwendungen ermöglicht. Geplant ist ferner auch ein NQ-Host in Form eines Windows-Service, auch modulare Server wären somit realisierbar.

Obwohl bisher nur Microsoft Windows als Ziel-Betriebssystem favorisiert wurde, dürfte sich NQ unter Mono relativ problemlos auf andere Systeme (z.B. Unix/Linux) portieren lassen. Dies wird jedoch momentan nicht im Rahmen des Projekts verfolgt.

NQ Common Services

NQ an sich bietet keine Funktionalität für eine Anwendung, sondern lediglich eine Vorgabe für die Struktur des Systems. Um auch sinnvolle Anwendungen erstellen zu können, wurden die "NQ Common Services" konzipiert. Dies ist eine im Sinne von NQ gewöhnliche Komponente, die zahlreiche Services zum Aufbau einer modernen Windows-Oberfläche im Stil von Microsoft Office oder Microsoft Visual Studio und zur Speicherung von Anwendungseinstellungen, Ressourcenverwaltung und Aktualisierung per Online-Update bereithält.

Hier der Screenshot eines Prototyps:

NQ Common Services-Prototyp

Durch die Verwendung der NQ Common Services (oder auch kurz: NQCS) vermeidet der Entwickler einen Großteil des Aufwandes, den er im Normalfall betreiben muss, um die Grundfunktionen der Programmoberfläche umzusetzen, und kann sich stattdessen gleich auf die eigentliche Anwendung konzentrieren.

Wann wird NQ veröffentlicht?

Die NQ Core Library (d.h. die Kernbibliothek) liegt bereits in einer stabilen Version vor, herunterzuladen von den Projektseiten auf CodePlex. Die NQ Common Services befinden sich momentan in der Entwicklung, der aktuelle Quellcode-Stand kann aus der Versionsverwaltung auf CodePlex heruntergeladen werden.

Abschließend: Wofür steht eigentlich "NQ"?

So kurios es klingen mag: "NQ" hat im Zusammenhang mit dem System keine Bedeutung. Der Ursprung dieser Abkürzung ist schlicht historischer Natur. Einst war das Projekt als .NET-Nachfolger von awzIRC geplant (ein IRC-Client) und sollte den Namen "NetQuassel" tragen. Die alte Idee wandelte sich mit der Zeit immer mehr zu einem sehr allgemeinen komponentenorientierten Modell, das mit dem speziellen Einsatzzweck eines IRC-Clients nichts mehr gemeinsam hatte. Die interne Abkürzung für NetQuassel "NQ" wurde über die Zeit einfach beibehalten.

 nach oben   ---   Copyright © 2000-2014 Andreas Weizel.