Horus: a flexible group communication system
Communications of the ACM
Scheduling multithreaded computations by work stealing
Journal of the ACM (JACM)
A Classification and Comparison Framework for Software Architecture Description Languages
IEEE Transactions on Software Engineering
An Event-Based Architecture Definition Language
IEEE Transactions on Software Engineering
Architectural Reasoning in ArchJava
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Appia: A Flexible Protocol Kernel Supporting Multiple Coordinated Channels
ICDCS '01 Proceedings of the The 21st International Conference on Distributed Computing Systems
Scalable component abstractions
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Software—Practice & Experience
Language support for fast and reliable message-based communication in singularity OS
Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006
ArchStudio 4: An Architecture-Based Meta-Modeling Environment
ICSE COMPANION '07 Companion to the proceedings of the 29th International Conference on Software Engineering
Mace: language support for building distributed systems
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
A generic component model for building systems software
ACM Transactions on Computer Systems (TOCS)
ATC'07 2007 USENIX Annual Technical Conference on Proceedings of the USENIX Annual Technical Conference
An overview of the OMNeT++ simulation environment
Proceedings of the 1st international conference on Simulation tools and techniques for communications, networks and systems & workshops
Kilim: Isolation-Typed Actors for Java
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Programming with Live Distributed Objects
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Scala Actors: Unifying thread-based and event-based programming
Theoretical Computer Science
The Definitive Guide to Lift: A Scala-based Web Framework
The Definitive Guide to Lift: A Scala-based Web Framework
CouchDB: The Definitive Guide Time to Relax
CouchDB: The Definitive Guide Time to Relax
Type-safe eventful sessions in java
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Scala Web Frameworks: Looking Beyond Lift
IEEE Internet Computing
Introduction to Tornado
Hi-index | 0.00 |
Message-passing concurrency (MPC) is increasingly being used to build systems software that scales well on multi-core hardware. Functional programming implementations of MPC, such as Erlang, have also leveraged their stateless nature to build middleware that is not just scalable, but also dynamically reconfigurable. However, many middleware platforms lend themselves more naturally to a stateful programming model, supporting session and application state. A limitation of existing programming models and frameworks that support dynamic reconfiguration for stateful middleware, such as component frameworks, is that they are not designed for MPC. In this paper, we present Kompics, a component model and programming framework, that supports the construction and composition of dynamically reconfigurable middleware using stateful, concurrent, message-passing components. An added benefit of our approach is that by decoupling our component execution model, we can run the same code in both simulation and production environments. We present the architectural patterns and abstractions that Kompics facilitates and we evaluate them using a case study of a non-trivial key-value store that we built using Kompics. We show how our model enables the systematic development and testing of scalable, dynamically reconfigurable middleware.