Distributed Shared Objects Runtime for the .NET Framework and Rotor

Thomas Seidmann
Slovak University of Technology in Bratislava
Faculty of Electrical Engineering and Information Technology Department of Computer Science and Engineering
Slovakia

e-mail: seidmann@dcs.elf.stuba.sk http://

 

Keywords: Object-based distributed shared memory, DSM, IPv6, IP multicasting, Causal consistency, .NET Framework, .NET Remoting

Abstract

The paper introduces a software-only object based DSM implementation designed as an extension to the Microsoft .NET Framework and SSCLI (Rotor). With respect to distributed objects, the .NET Framework uses an architectural model based on discovery (or even hard-coded location) with subsequent RPC-like invocation Of remote objects, which reside at a particular place during their whole life cycle. Thus there is no notion of object replication/migration, although the .NET Framework offers provisions for object transportation via .NET Remoting. This paradigm fits well to client/server architecture, but may be inappropriate for peer-to-peer architectures, where the desire may arise to share objects ad-hoc in absence of a dedicated `object provider'. This paper presents an extension to the .NET Framework which adds facilities for sharing objects following the Multiple Readers Multiple Writer (MRMW) memory model, which includes object replication. The presented implementation is facilitated by a memory coherence protocol developed by the author, which uses group communication using multicasting on IPv4 and IPv6 networks and delivers causally consistent memory. C# was chosen as the programming language and the implementation consists solely of managed (IL) code. It contains of several .NET Remoting extensions, namely a UDP-based channel service, and working threads with implementations of the receiving and sending parts of the coherence protocol. Access to local instances of shared objects is monitored and instrumented using interception. The described DSM implementation allows the construction of distributed peer-to-peer applications with a simple programming model, that can be deployed in any networked environment where multicast is available.