Service Based Assembly Control (SACO)

11/28/2010

Technologien: .NET (C#), GUI, Netzwerkprogrammierug (WCF, UDP Unicast/Multicast), XML

SACO („Service-Based Assembly COntrol“) ist ein verteiltes Softwarepaket, das die Erstellung und Verwendung von Diensten auf Technologie der Windows Communication Foundation (WCF) erleichtert. Für SACO erstellte Dienste haben den Schwerpunkt in der Bereitstellung von Schnittstellen zur Nutzung PC-gesteuerter Gerät oder Maschinen auf unterster Ebene, die an verschiedenen Computern in einem lokalen Netzwerk (LAN) angeschlossen sind. Einfach gesagt: Geräte, die mit einem PC verbunden sind, können von anderen PCs mitgenutzt werden.

SACO wurde mit der Zielsetzung entwickelt, zukünftig einmal die Basis für ein verteiltes Produktionssteuerungsystem zu bilden.

SACO besteht aus drei Komponenten:

  1. Die SACO Plattform verwaltet Dienste, die als Plugins eingebunden werden. 
  2. Die SACO Client Library ermöglicht die einfache Lokalisierung und Instanziierung eines Dienstes.
  3. Die SACO User Auth Library führt eine Autorisierungsprüfung durch um gegen unbefugte Steuerung zu schützen.

Techniken und Features:

  • Vorteile gegenüber WCF
    • Sehr leichte Konfigurierbarkeit der Dienste mit XML: Übliche in WCF benötigte Einstellungen (z.B. Adresse, Verhalten und Bindung) entfallen gänzlich.
    • Automatische Dienstauflösung: Der Ort eines Dienstes kann anhand eines eindeutigen Names aufgelöst werden, ohne dessen IP Adresse zu kennen (Client-Server oder Multicast Modus).
    • Sicherheitsmechanismen zu Benutzerauthentisierung: Es sind keine Windows Credentials nötig und es muss kein Validierer implementiert werden. Es ist möglich, eine Autorisierung auf Methodenebene des Dienstes durchzuführen (Flexibilität).
    • Kontrolliertes Hosting mit übersichtlicher Benutzerschnittstelle.
  • Dynamisches Aktivieren und Deaktivieren der Dienste
  • Einbindung und Austausch von (neuen) Diensten (Plugins) zur Laufzeit des Programms (Erweiterbarkeit).
  • Automatische Versionskontrolle von Client und Dienst.
  • Automatische Synchronsation bei gemeinsamen Clientzugriff (Thread-Mutex)
  • Offene Architektur und modularer Aufbau.
  • Prinzipiell keine Limitierung in der Anzahl gleichzeitig laufender und vernetzter Plattformen (Skalierbarkeit).
  • Sehr hohe Performance durch Nutzung des UDP Netzwerk Protokolls.
  • Dummy-Services zur „Offline“-Nutzung von Diensten: Auch wenn Geräte nicht angeschlossen sind, funktionierten die Dienste und lassen sich so zu Simulationen nutzen.
  • Ausführliches Logging (GUI, File).

SACO wurde unter meiner Leitung am Fraunhofer IPT entwickelt und wird dort in der Abteilung Produktionsmaschinen (Automatisierung) eingesetzt.

Screenshot der SACO Plattform:

Screenshot einer Seite der API Dokumentation eines Dienstes zur Robotersteuerung (erstellt mit Doxygen):


Leave Comment



Blog

jReflectServer 2.0
New version released | 1/4/2017

jReflectServer (formerly jReflect) has been updated. Version 2.0 allows distributed code ... Read More

DocuCast
Instantly backup your files on change | 3/21/2014

DocuCast is a real time file revision and backup system for use in professional and private ... Read More

jReflect: lightweight java web-server & -framework
3/7/2014

jReflect is a very small & lightweight java web-server and -framework for ... Read More

More Blog Entries