{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,12,26]],"date-time":"2025-12-26T03:43:40Z","timestamp":1766720620700,"version":"3.41.0"},"reference-count":51,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA","license":[{"start":{"date-parts":[[2018,10,24]],"date-time":"2018-10-24T00:00:00Z","timestamp":1540339200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/100006112","name":"Microsoft Research","doi-asserted-by":"publisher","id":[{"id":"10.13039\/100006112","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2018,10,24]]},"abstract":"<jats:p>\n            Sometimes, service clients repeat requests in a polling loop in order to refresh their view. However, such polling may be slow to pick up changes, or may increase the load unacceptably, in particular for composed services that disperse over many components. We present an alternative\n            <jats:italic>reactive polling<\/jats:italic>\n            API and\n            <jats:italic>reactive caching<\/jats:italic>\n            algorithm that combines the conceptual simplicity of polling with the efficiency of push-based change propagation. A reactive cache contains a summary of a distributed read-only operation and maintains a connection to its dependencies so changes can be propagated automatically.\n          <\/jats:p>\n          <jats:p>We first formalize the setting using an abstract calculus for composed services. Then we present a fault-tolerant distributed algorithm for reactive caching that guarantees eventual consistency. Finally, we implement and evaluate our solution by extending the Orleans actor framework, and perform experiments on two benchmarks in a distributed cloud deployment. The results show that our solution provides superior performance compared to polling, at a latency that comes close to hand-written change notifications.<\/jats:p>","DOI":"10.1145\/3276522","type":"journal-article","created":{"date-parts":[[2018,10,24]],"date-time":"2018-10-24T11:57:18Z","timestamp":1540382238000},"page":"1-28","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":2,"title":["Reactive caching for composed services: polling at the speed of push"],"prefix":"10.1145","volume":"2","author":[{"given":"Sebastian","family":"Burckhardt","sequence":"first","affiliation":[{"name":"Microsoft Research, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Tim","family":"Coppieters","sequence":"additional","affiliation":[{"name":"Vrije Universiteit Brussel, Belgium"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2018,10,24]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/1480945.1480946"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/1328438.1328476"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/1806596.1806650"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/1596527.1596530"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/1186632.1186634"},{"key":"e_1_2_2_6_1","unstructured":"Akka 2016. Akka - Actors for the JVM. Apache 2 License https:\/\/github.com\/akka\/akka.  Akka 2016. Akka - Actors for the JVM. Apache 2 License https:\/\/github.com\/akka\/akka."},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/1810891.1810910"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1006\/inco.2000.9999"},{"volume-title":"Orleans: Distributed Virtual Actors for Programmability and Scalability. Technical Report MSR-TR-2014-41. Microsoft Research.","year":"2014","author":"Bernstein Phil","key":"e_1_2_2_9_1"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/3133931"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1016\/0167-6423(92)90005-V"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/2038916.2038923"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1561\/2500000011"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/2491956.2462170"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/2048066.2048101"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/2038916.2038932"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/41625.41641"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/2523616.2523617"},{"volume-title":"Networked Systems Design and Implementation (NSDI)","author":"Condie Tyson","key":"e_1_2_2_19_1"},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1007\/11693024_20"},{"volume-title":"Frapp\u00e9: Functional reactive programming in Java. In Practical Aspects of Declarative Languages (PADL)","year":"2001","author":"Courtney Antony","key":"e_1_2_2_21_1"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.cl.2014.05.002"},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/2491956.2462161"},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/1327452.1327492"},{"key":"e_1_2_2_25_1","first-page":"1","article-title":"Programming Language Techniques for Incremental and Reactive Computing (Dagstuhl Seminar 16402)","volume":"6","author":"Demetrescu Camil","year":"2016","journal-title":"Dagstuhl Reports"},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/2048066.2048100"},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/2660193.2660240"},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/258948.258973"},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/857076.857078"},{"key":"e_1_2_2_30_1","unstructured":"Cormac Flanagan and Matthias Felleisen. 2001. The Semantics of Future and Its Use in Program Optimization. (09 2001).  Cormac Flanagan and Matthias Felleisen. 2001. The Semantics of Future and Its Use in Program Optimization. (09 2001)."},{"key":"e_1_2_2_31_1","unstructured":"Flink 2016. Apache Flink. https:\/\/flink.apache.org\/.  Flink 2016. Apache Flink. https:\/\/flink.apache.org\/."},{"key":"e_1_2_2_32_1","doi-asserted-by":"crossref","unstructured":"Thierry Gautier Paul Le Guernic and L\u00f6ic Besnard. 1987. SIGNAL: A Declarative Language for Synchronous Programming of Real-time Systems. In Functional Programming Languages and Computer Architecture. 257\u2013277.   Thierry Gautier Paul Le Guernic and L\u00f6ic Besnard. 1987. SIGNAL: A Declarative Language for Synchronous Programming of Real-time Systems. In Functional Programming Languages and Computer Architecture. 257\u2013277.","DOI":"10.1007\/3-540-18317-5_15"},{"volume-title":"Nectar: Automatic Management of Data and Computation in Datacenters. In Operating Systems Design and Implementation (OSDI) (OSDI\u201910)","year":"2010","author":"Gunda Pradeep Kumar","key":"e_1_2_2_33_1"},{"key":"e_1_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/1542476.1542480"},{"key":"e_1_2_2_35_1","doi-asserted-by":"crossref","unstructured":"Paul Hudak Antony Courtney Henrik Nilsson and John Peterson. 2003. Arrows Robots and Functional Reactive Programming. Springer Berlin Heidelberg 159\u2013187.  Paul Hudak Antony Courtney Henrik Nilsson and John Peterson. 2003. Arrows Robots and Functional Reactive Programming. Springer Berlin Heidelberg 159\u2013187.","DOI":"10.1007\/978-3-540-44833-4_6"},{"key":"e_1_2_2_36_1","doi-asserted-by":"publisher","DOI":"10.1007\/11737414_18"},{"key":"e_1_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.1007\/11785477_15"},{"volume-title":"Proceedings of CIDR","year":"2013","author":"McSherry Frank","key":"e_1_2_2_38_1"},{"key":"e_1_2_2_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/1640089.1640091"},{"key":"e_1_2_2_40_1","unstructured":"Luc Moreau. 1970. The Semantics of Scheme with Future. 31 (02 1970).  Luc Moreau. 1970. The Semantics of Scheme with Future. 31 (02 1970)."},{"key":"e_1_2_2_41_1","unstructured":"Orbit 2016. Orbit - Virtual Actors for the JVM. BSD 3-clause license. https:\/\/github.com\/orbit\/orbit.  Orbit 2016. Orbit - Virtual Actors for the JVM. BSD 3-clause license. https:\/\/github.com\/orbit\/orbit."},{"key":"e_1_2_2_42_1","unstructured":"Orleans 2016. Orleans - Distributed Virtual Actor Model for .NET. MIT license. https:\/\/github.com\/dotnet\/orleans.  Orleans 2016. Orleans - Distributed Virtual Actor Model for .NET. MIT license. https:\/\/github.com\/dotnet\/orleans."},{"key":"e_1_2_2_43_1","unstructured":"Benjamin C. Pierce. 2002. Types and programming languages. MIT Press.   Benjamin C. Pierce. 2002. Types and programming languages. MIT Press."},{"key":"e_1_2_2_44_1","unstructured":"React 2016. React - A declarative JavaScript library for building user interfaces. Available under BSD 3-clause license. https:\/\/github.com\/facebook\/react.  React 2016. React - A declarative JavaScript library for building user interfaces. Available under BSD 3-clause license. https:\/\/github.com\/facebook\/react."},{"key":"e_1_2_2_45_1","unstructured":"Reactors.IO 2016. Available under BSD 3-clause license. https:\/\/github.com\/reactors-io\/reactors.  Reactors.IO 2016. Available under BSD 3-clause license. https:\/\/github.com\/reactors-io\/reactors."},{"key":"e_1_2_2_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/2635868.2635895"},{"key":"e_1_2_2_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/2451436.2451442"},{"key":"e_1_2_2_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/2988336.2988352"},{"key":"e_1_2_2_49_1","unstructured":"SF Reliable Actors 2016. Service Fabric Reliable Actors. Available for the Windows Azure platform see https:\/\/azure.microsoft.com\/en-us\/documentation\/articles\/service-fabric-reliable-actors-get-started\/.  SF Reliable Actors 2016. Service Fabric Reliable Actors. Available for the Windows Azure platform see https:\/\/azure.microsoft.com\/en-us\/documentation\/articles\/service-fabric-reliable-actors-get-started\/."},{"key":"e_1_2_2_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/358438.349331"},{"key":"e_1_2_2_51_1","unstructured":"Matei Zaharia Mosharaf Chowdhury Tathagata Das Ankur Dave Justin Ma Murphy McCauly Michael J. Franklin Scott Shenker and Ion Stoica. 2012. Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing. In Networked Systems Design and Implementation (NSDI). USENIX 15\u201328.   Matei Zaharia Mosharaf Chowdhury Tathagata Das Ankur Dave Justin Ma Murphy McCauly Michael J. Franklin Scott Shenker and Ion Stoica. 2012. Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing. In Networked Systems Design and Implementation (NSDI). USENIX 15\u201328."}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3276522","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3276522","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T19:03:39Z","timestamp":1750273419000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3276522"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018,10,24]]},"references-count":51,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2018,10,24]]}},"alternative-id":["10.1145\/3276522"],"URL":"https:\/\/doi.org\/10.1145\/3276522","relation":{},"ISSN":["2475-1421"],"issn-type":[{"type":"electronic","value":"2475-1421"}],"subject":[],"published":{"date-parts":[[2018,10,24]]},"assertion":[{"value":"2018-10-24","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}