[发明专利]从基于非异常的模型中生成基于异常的组件模型有效
申请号: | 201110094624.0 | 申请日: | 2011-04-06 |
公开(公告)号: | CN102214095B | 公开(公告)日: | 2018-09-18 |
发明(设计)人: | M·M·阿格森;C·J·西蒙兹;J-P·杜普莱西斯 | 申请(专利权)人: | 微软技术许可有限责任公司 |
主分类号: | G06F8/20 | 分类号: | G06F8/20 |
代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 黄嵩泉 |
地址: | 美国华*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 异常 模型 生成 组件 | ||
可以从基于非异常的模型中生成基于异常的组件模型。例如,可以解析可消费软件组件的基于非异常的接口合约(诸如头部文件中的基于非异常的接口合约)。另外,可以从基于非异常的接口合约中生成可消费软件组件的包装。包装可以具有基于异常的接口合约实现,并且基于异常的接口合约实现可以是与基于非异常的接口合约等价的镜像。如果基于非异常的接口合约将一个或多个变量提示为可消费软件组件中的函数的输出变量,则可以使用预定义试探法来将基于异常的接口合约实现要使用的那些变量中的一个选为函数的返回值。
技术领域
本发明涉及软件开发技术,尤其涉及软件模型开发技术。
背景技术
在开发软件应用程序时,开发者常常为应用程序编写代码来消费一个或多个预先存在的软件组件。例如,在先前可能已经编写了软件组件,并且该软件组件可能具有在调用该软件组件时该软件组件将遵循的接口合约。例如,接口合约可以提示软件组件中的一个或多个函数的输入变量、输出变量和/或返回值。
许多这样的接口合约和软件组件被实现为基于非异常的模型,该模型通常返回错误代码(例如,HRESULT值)。错误代码可以指示函数是成功还是失败,并且还可以指示其他信息,例如关于失败(如果出现)的本质的附加信息。可以为应用程序编写代码来检查来自该组件的错误代码并处理失败(如果出现)。其他软件组件在基于异常的模型中实现,该模型通常在出现失败时抛出异常。对于这样的基于异常的模型,可以调用异常处理函数来处理被抛出的异常并处理相对应的失败。在消费基于非异常的模型时,消费应用程序通常调用非异常技术,例如检查所返回的错误代码来检测失败。类似地,在消费基于异常的模型时,通常调用诸如异常处理函数等基于异常的技术。
发明内容
在消费软件组件时,消费应用程序通常根据由软件组件作者所选择的错误处理模型来消费软件组件。由此,在消费基于非异常的软件组件,消费应用程序已经调用基于非异常的技术来处理那些软件组件,即使将优选基于异常的技术。例如,在许多情形中,消费基于异常的软件组件可以比消费类似的基于非异常的软件组件使用更少的代码。此处描述的各实施例处理将基于非异常的软件组件模型转换成基于异常的软件组件模型,从而使得软件组件可以使用基于异常的技术来消费,即使组件被创作为基于非异常的组件模型。消费应用程序可以选择通过消费原始的基于非异常的模型或经转换的基于异常的模型来调用软件组件。
在一个实施例中,工具和技术可以包括解析可消费软件组件的基于非异常的接口合约。另外,可以从基于非异常的接口合约中生成可消费软件组件的包装(例如,类包装)。包装可以具有基于异常的接口合约实现,并且基于异常的接口合约实现可以是与基于非异常的接口合约等价的镜像。如此处所使用的,基于异常的接口合约实现是与基于非异常的接口合约等价的镜像,指的是(1)基于异常的接口合约实现在基于异常的接口合约实现中的方法或函数的信息和基于非异常的接口合约中的相对应的方法或函数的信息之间具有一对一的对应关系,以及(2)基于异常的接口合约实现和基于非异常的接口合约以相同水平与方法或函数交互(例如,两者都直接与函数或方法交互)。
在工具和技术的另一实施例中,解析可消费软件组件的基于非异常的接口合约,并且从基于非异常的接口合约中生成可消费软件组件的基于异常的模型。如果基于非异常的接口合约提示一个或多个变量是可消费软件组件中的函数的输出变量,则生成可以包括在基于异常的模型中,生成用于返回来自函数的一个或多个变量中的一个(即,被提示为是输出变量的变量中的一个)的代码。输出变量是被传递到函数并由函数填充的变量。合约可以用各种不同的方式来将变量提示为输出变量,这些方式在编程语言之间常常不同。例如,合约可以使用C#中的关键词“ref”、通过在C++中的变量类型之后包括“**”等来提示输出变量。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软技术许可有限责任公司,未经微软技术许可有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110094624.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种内容分发控制方法和一种中心控制器
- 下一篇:一种路由器的升级系统及方法