Kazazic, A. (2009). .NET-based pilot implementation and evaluation of the platform-independent DeDiSys architecture [Diploma Thesis, Technische Universität Wien]. reposiTUm. http://hdl.handle.net/20.500.12708/185665
Die Bedeutung der verteilten Computersysteme wächst von Tag zu Tag, die moderne Welt ist unvorstellbar ohne verteilte Systeme. Trotzdem ist es alltäglich, dass diese Systeme versagen und wichtige Dienste wie Elektrizitätswerke, Banken oder Verkehr in unserer Welt hindern. Die Verlässlichkeit dieser Systeme könnte erheblich verbessert werden, wenn die Systemeinschränkungen ( Constraints) zumindest kurzfristig entspannt werden könnten. Das Ziel von Dependable Distributed Systems (DeDiSys) Projekt ist die Bereitstellung einer robusten Architektur die zur Erstellung von verlässlichen verteilten Systeme verwendet werden kann. Diese Magisterarbeit beschreibt eine Pilot-Implementierung dieser Architektur in Microsoft .NET 1.1 Diese Arbeit beschreibt erfolgreiche Implementierung der DeDiSys -Architektur, mit einigen Abweichungen von ursprünglicher Architektur. Erweiterte Konzepte von .NET Framework wie ContextBoundObjects und MessageSinks wurden verwendet, um Container-Architektur zu implementieren um einen direkten Zugriff auf Objekte und ihre Felder außerhalb der Middleware zu verbieten. Um Data-Einschränkungen (Constraints) und Abgleichroutinen (Reconciliation Handler) Anforderungen zu deklarieren und implementieren wurden .NET Attribute verwendet. Die Attribute sind als abstrakte Klassen implementiert und bieten eine einfache Möglichkeit für Anwendungsentwickler neue Abgleichroutinen und Einschränkungen zu definieren und zu implementieren. Diese Architektur ermöglicht eine saubere Trennung der Aufgaben (Separetion of Concnerns) zwischen Middleware (Einschränkungen, Abgleichrutinen usw.) und Anwendung (Domain Logik). Das ermöglicht dem Anwendungsentwickler seine Einschränkungen einfach anzugeben, entweder wehrend Kompile - Zeit als Attributen von Methoden, Klassen und Eigenschaften oder dynamisch während der Laufzeit diese zu registrieren. Alle abstrakte Klassen wurden implementiert und zusammen mit Unit-Test stellen sie ein "Proof of Concept" für diese Middleware dar. Diese Implementierung ermöglicht auch verschachtelte Methoden - Aufrufe ("nested method invocation"). Insgesamt bietet .NET-Framework alle notwendigen Funktionen um DeDiSys Architektur zu implementieren. An manchen Stellen weicht die Implementierung in dieser Arbeit von der ursprüngliche Architektur ab. Diese Abweichungen wurden eingeführt um die Komplexität und den Projektumfang zu verringern und sollten daher nicht in Verbindung mit Mangel an Funktionalität oder Features der .NETFramework gebracht werden.
Distributed computer systems are daily gaining importance; the modern world is inconceivable without distributed computing. Still, each day we witness their failures, or the existence of inhibiting or retarding systems of such importance as electricity, banking or traffic regulation systems. Availability of those systems could be improved if data integrity constraints imposed on them could be at least temporarily relaxed during degradation. The goal of the Dependable Distributed Systems - (DeDiSys) Project is to provide a concept for trading data integrity against availability, including middleware architecture and replication protocols. This master thesis describes a pilot implementation of the DeDiSys Architecture implemented in .Net 1.1. This thesis presents a successful implementation of DeDiSys architecture, with some deviations to the originally designed architecture. Advanced concepts of .Net frameworks like ContextBoundObjects and MessageSinks were used to create container-architecture and prohibit direct access to objects and their properties outside of the middleware. To state the constraints and their reconciliation handler requirements .NET attributes are used. This attributes are implemented as abstract classes, so that application developers can easily implement required application constraints as DeDiSys constraints or Reconciliation handlers. This architecture enables clean separation of concerns between middleware related code (Constraints, Reconciliation handlers etc.) and applications, and also enables developers to easily state their needs statically during design time (as attributes on methods, properties or classes) as well as to add new constraints and handlers dynamically (on runtime). Also, several implementations of all abstract classes are provided together with unit tests as proof of concepts for developed middleware. This implementation also enables use of nested calls with required constraints and reconciliation handlers. Overall .NET framework provided all required functionality to implement architecture suggested by DeDiSys. Some deviations to the original architecture were introduced in this Thesis, but they are introduced in order to reduce complexity and project scope and cannot be linked to a lack of functionality or features of the .NET framework.