Type-Safe Evolution of Web Services

João Campinhos, J. Seco, Jácome Cunha
{"title":"Type-Safe Evolution of Web Services","authors":"João Campinhos, J. Seco, Jácome Cunha","doi":"10.1109/VACE.2017.6","DOIUrl":null,"url":null,"abstract":"Applications based on micro or web services have had significant growth due to the exponential increase in the use of mobile devices. However, using such kind of loosely coupled interfaces provides almost no guarantees to the developer in terms of evolution. Changes to service interfaces can be introduced at any moment, which may cause the system to fail due to mismatches between communicating parts. In this paper, we present a programming model that allows the development of web service applications, server end-points and their clients, in such a way that the evolution of services' implementation does not cause the disruption of the client. Our approach is based on a type based code slicing technique that ensures that each version only refers to type compatible code, of the same version or of a compatible version, and that each client request is redirected to the most recent type compatible version implemented by the server. We abstract the notion of version and parametrize type compatibility on the relation between versions. The relation between versions is tagged with compatibility levels, so to capture the common conventions used in software development. Our implementation allows multiple versions of a service to be deployed simultaneously, while reusing code between versions in a type safe way. We describe a prototype framework, based on code transformation, for server-side JavaScript code, and using Flow as verification tool.","PeriodicalId":391663,"journal":{"name":"2017 IEEE/ACM 2nd International Workshop on Variability and Complexity in Software Design (VACE)","volume":"22 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"7","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"2017 IEEE/ACM 2nd International Workshop on Variability and Complexity in Software Design (VACE)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/VACE.2017.6","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 7

Abstract

Applications based on micro or web services have had significant growth due to the exponential increase in the use of mobile devices. However, using such kind of loosely coupled interfaces provides almost no guarantees to the developer in terms of evolution. Changes to service interfaces can be introduced at any moment, which may cause the system to fail due to mismatches between communicating parts. In this paper, we present a programming model that allows the development of web service applications, server end-points and their clients, in such a way that the evolution of services' implementation does not cause the disruption of the client. Our approach is based on a type based code slicing technique that ensures that each version only refers to type compatible code, of the same version or of a compatible version, and that each client request is redirected to the most recent type compatible version implemented by the server. We abstract the notion of version and parametrize type compatibility on the relation between versions. The relation between versions is tagged with compatibility levels, so to capture the common conventions used in software development. Our implementation allows multiple versions of a service to be deployed simultaneously, while reusing code between versions in a type safe way. We describe a prototype framework, based on code transformation, for server-side JavaScript code, and using Flow as verification tool.
Web服务的类型安全演化
由于移动设备的使用呈指数级增长,基于微服务或web服务的应用程序有了显著的增长。然而,使用这种松耦合接口几乎不能保证开发人员的发展。对服务接口的更改可以在任何时候引入,这可能会由于通信部分之间的不匹配而导致系统失败。在本文中,我们提出了一个编程模型,该模型允许开发web服务应用程序、服务器端点及其客户端,从而使服务实现的演变不会导致客户端中断。我们的方法基于基于类型的代码切片技术,确保每个版本只引用类型兼容的代码,相同版本或兼容版本,并且每个客户端请求都被重定向到服务器实现的最新类型兼容版本。我们抽象了版本的概念,并在版本之间的关系上参数化了类型兼容性。版本之间的关系被标记为兼容性级别,以便捕获软件开发中使用的公共约定。我们的实现允许同时部署服务的多个版本,同时以类型安全的方式重用版本之间的代码。我们描述了一个基于代码转换的原型框架,用于服务器端JavaScript代码,并使用Flow作为验证工具。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:604180095
Book学术官方微信