Design and Implementation of Linqspace
Total Page:16
File Type:pdf, Size:1020Kb
Die approbierte Originalversion dieser Diplom-/Masterarbeit ist an der Hauptbibliothek der Technischen Universität Wien aufgestellt (http://www.ub.tuwien.ac.at). The approved original version of this diploma or master thesis is available at the main library of the Vienna University of Technology (http://www.ub.tuwien.ac.at/englweb/). Design and Implementation of LinqSpace DIPLOMARBEIT zur Erlangung des akademischen Grades Diplom-Ingenieur im Rahmen des Studiums Medizinische Informatik eingereicht von Wolfgang Gelbmann Matrikelnummer 0525873 an der Fakultät für Informatik der Technischen Universität Wien Betreuung Betreuerin: Ao.Univ.Prof. Dipl.-Ing. Dr. eva Kühn Mitwirkung: Proj. Ass. Dipl.-Ing. Thomas Scheller Wien, 18.08.2011 (Unterschrift Verfasser/in) (Unterschrift Betreuer/in) Technische Universität Wien A-1040 Wien ▪ Karlsplatz 13 ▪ Tel. +43-1-58801-0 ▪ www.tuwien.ac.at Seite 2|99 Eidesstattliche Erklärung Wolfgang Gelbmann Hasengasse 18 / 2 / 16 1100 Wien Hiermit erkläre ich, dass ich diese Arbeit selbständig verfasst habe, dass ich die verwendeten Quellen und Hilfsmittel vollständig angegeben habe und dass ich die Stellen der Arbeit – einschließlich Tabellen, Karten und Abbildungen –, die anderen Werken oder dem Internet im Wortlaut oder dem Sinn nach entnommen sind, auf jeden Fall unter Angabe der Quelle als Entlehnung kenntlich gemacht habe. Wien, 18.08.2011 _________________________ Seite 3|99 Abstract In the .NET environment LINQ (Language Integrated Query) has established as universal component for data inquiry. The creation of the SQL-like query is strictly separated from the execution and interpretation and therefore represents an appropriate foundation for extensions. The “Space-based computing” or “Shared Data Spaces” forms the basis for the XVSM (eXtensible Virtual Shared Memory) middleware solution that consistently uses coordinators to shift query logic from the application code into the abstraction framework. The initial intention of this work was to extend XVSM with LINQ in order to enrich the API with uniform and versatile query capabilities. A portion of this thesis presents a LINQ adapter for XcoSpaces, the .NET reference implementation of XVSM. These module converts LINQ queries, so-called expression trees, to the matching LindaCoordinator inquiry which can be interpreted by XcoSpaces. Because this coordinator is based on template matching, the support of LINQ functionality is mainly restricted to equality comparisons. As consequence of the insights gained, this work focuses on a new XVSM reference implementation (LinqSpace) with LINQ as primary interface for inquiry. For data storage any system which offers LINQ capabilities would be appropriate. In order to evaluate new opportunities an unconventional form of data storage regarding XVSM was chosen: the relational database. Finally, the new LinqSpace is compared with XcoSpaces which allows illustrating the paradigm shift from “records” which are stored by the space toward direct interaction with a domain model. An example shows how the entities in an Entity-Relationship model and their relationships can be used as a basis for distributed coordination without additional adaptations. Seite 4|99 Kurzfassung Im .NET Umfeld hat sich LINQ (Language Integrated Query) als Komponente zur universalen Abfrage von Datenquellen durchgesetzt. Das Erzeugen der an SQL angelehnten Anfrage ist konsequent von der Ausführung und der Interpretation getrennt, was eine geeignete Basis für Erweiterungen darstellt. Das „Space Based Computing“ oder „Shared Data Spaces“ Paradigma dient als Grundlage für die XVSM (eXtensible Virtual Shared Memory) Middleware Lösung, welche durchgängig Koordinatoren einsetzt um Abfragelogik vom Anwendungscode in das Framework zu verschieben. Die einleitende Intention dieser Arbeit resultierte in den Bestrebungen XVSM LINQ-tauglich zu machen und folglich die Interaktionsschnittstelle um eine vielseitige und ausdruckstarke Abfragesprache zu erweitern. Ein Teilbereich dieser Arbeit präsentiert einen LINQ Adapter für die .NET Referenzimplementierung von XVSM (XcoSpaces). Dieser wandelt LINQ Abfragen, sogenannte Expression Trees, in den für XcoSpaces erfassbaren Linda-Koordinator um. Da dieser Koordinator auf Template-Matching basiert, sind die unterstützen LINQ Anweisungen stark eingeschränkt und umfassen im Wesentlichen Abfragen auf Gleichheit. Als Konsequenz der erlangten Einsichten richtet sich der Fokus dieser Arbeit auf die Neuimplementierung der XVSM Spezifikation (LinqSpace) mit LINQ als primärer Schnittstelle für Abfragen. Zur Datenspeicherung wäre prinzipiell jedes LINQ-fähige System geeignet, jedoch wurde im Sinne neuer Evaluierungsmöglichkeiten auf eine, im XVSM Umfeld eher unkonventionelle Speicherform zurückgegriffen: die relationale Datenbank. Abschließend wird der neue LinqSpace mit XcoSpaces verglichen und der Paradigmenwechsel von „Einträgen“ im Space zu einem Arbeiten direkt an einem Domain- Model erläutert. Ein Beispiel zeigt wie die Entitäten eines Entity-Relationship-Modells und deren Beziehungen ohne zusätzliche Adaptionen als Grundlage für verteilte Koordination genutzt werden kann. Seite 5|99 Acknowledgements First I want to thank my supervisor eva Kühn for this interesting master thesis topic and for the freedom to experiment far off conventional pathways, as well as Thomas Scheller and Markus Karolus for supporting me and sharing their great insights. Furthermore, I want to thank Doris Wilfinger for her helpful proofreading. Special thanks to my parents on which I can always count on. Finally, my greatest thanks go to my little boy Jamie and my wife Evelin for encouraging and reminding me about the most important thing in life: family. Seite 6|99 Content 1 Introduction ......................................................................................................................... 8 1.1 Overview ..................................................................................................................... 9 1.2 An Introduction to eXtensible Virtual Shared Memory (XVSM) ............................... 9 1.2.1 Container ............................................................................................................ 10 1.2.2 Coordinator ......................................................................................................... 10 1.2.3 Aspects ............................................................................................................... 11 1.2.4 Profiles ............................................................................................................... 11 1.2.5 Remote communication ...................................................................................... 11 1.2.6 XVSM reference implementations ..................................................................... 11 2 Middleware technology .................................................................................................... 11 2.1 Remoting middleware................................................................................................ 12 2.2 Messaging middleware or message-oriented middleware (MOM) ........................... 12 2.3 Component container middleware ............................................................................. 13 2.4 Space Based computing middleware and Space Based computing paradigm (SBC) 13 2.5 Classification ............................................................................................................. 14 2.5.1 Exchange patterns used for comparison ............................................................. 15 2.6 Middleware in the .NET environment ....................................................................... 17 2.6.1 Windows Communication Foundation (WCF) .................................................. 17 2.6.2 XcoSpaces, a reference implementation of XVSM ........................................... 19 2.6.3 XcoAppSpace ..................................................................................................... 21 2.6.4 Decentralized Software Services (DSS) ............................................................. 23 2.6.5 NServiceBus ....................................................................................................... 24 2.6.6 Conclusion .......................................................................................................... 25 3 .NET technologies used by LinqSpace ............................................................................. 27 3.1 Language Integrated Query (LINQ) .......................................................................... 27 3.1.1 Extension methods ............................................................................................. 28 3.1.2 The IEnumerable interface ................................................................................. 29 3.1.3 The IQueryable interface .................................................................................... 30 3.1.4 Expression trees .................................................................................................. 32 3.1.5 Deferred execution ............................................................................................. 33 3.2 Entity Framework (EF) .............................................................................................. 34 3.2.1 LINQ for Database inquiry ................................................................................ 36 3.2.2 Entity change tracking .......................................................................................