“为C++实现一个IDL”这个主题,我已经考虑得差不多了,最后几个问题也解决了,打算建立一个项目来实现它。
项目命名为ancients,字面意思是“远古的,旧的”,实际上这个主题也算是旧的了。原本打算命名为C++ Remoting,不过想了一下,还是换个名字,免得让人一看就想拿去跟java, c#的remoting比较。
取这个名字主要是因为喜欢看《星际之门》剧集,里面最喜欢的一个种族就是ancients。
asgard是另一个种族,在ancients这个名字被人占用了的情况下,只好选它了。它的字面意思是“仙宫”,也是不错的名字,呵呵。asgard这个种族的科技非常发达,有先进的亚空间旅行技术,先进的光传送技术,身体也比较符合一些报道中外星人的样子。
暂时还没找到合适的空间来放这个项目,就以压缩包的形式在这个blog上做吧。
打算先实现动态部分,我给它命名为reflection,模仿java的,当然也不会做它那么完整。这部分必须先做,这样方便用来测试静态结构。
然后是静态结构部分,前面已经写了2篇乱七八糟的描述,剩余问题(函数原形推导问题)基本已经解决了。
整个框架在Service以下都是环境无关的,这里的环境指的是协议、通讯等环境。也就是说,定义一个Service,并不在一开始就指定它所使用的通讯协议。定义完成以后,把它指定给一个协议,就可以实现协议绑定,甚至在运行时刻动态切换到另一个协议。当然这可能是不合理的,不过我认为如果支持这种做法,本身就是灵活性的一种体现。
前面还有些地方,和实际情况有些差别的,需要补充完善。简要描述如下:
使用宏来定义Service,前面只定义了方法的原型、名称、服务端绑定的函数,其实还差一个重要的东西,就是参数的名字。
如果使用自己的协议,或者是顺序存储的协议,比如BENCODE,来作为远程调用协议,那么参数的名字是不重要的,只要按顺序把参数序列化、反序列化就可以了。
但在使用SOAP作为远程调用协议时,就得考虑为参数加上名字了,SOAP是从XML元素中,按参数名称来提取参数值的,虽然我们可以为参数生成一个名字,但这个名字不能描述参数所表达的意思。
所以需要考虑为参数取上名字。
暂时就补充这一点,其它方面有等进一步研究。
分享到:
相关推荐
Asgard API 测试覆盖率 Typehint覆盖范围 阿斯加德项目Asgard项目的存在主要有两个目的: 便利开发应用程序(所有类型)的人们的生活; 对于维护运行数百/数千个应用程序的基础结构的人员来说,生活变得更轻松通过...
NEXON公司的韩国服务器的原始.EXE文件,用于未备份而修改exe文件后备用
为了使用或贡献于Asgard项目,你需要解压该文件,按照文档指示进行配置和安装。这可能涉及到设置环境变量、安装依赖库、编译代码等步骤。对于开发人员来说,熟悉Git版本控制工具和基本的编程知识是必要的,因为开源...
Asgard API SDK 在这个项目中,我们找到可以在为API编写的插件中使用的通用代码。可用功能asgard.sdk.options.get_option() 它允许读取多个环境变量并在列表中返回值,例如: 数据= get_option(“表格”,“地址...
文件"asgard-0.3.10"很可能代表了Asgard游戏的一个版本,版本号0.3.10可能意味着这是项目的早期阶段,但已经包含了基本的游戏功能和一些改进。用户可以通过下载这个压缩包来体验游戏,同时也鼓励有能力的社区成员...
Asgard是一个简单的项目经理,使用您喜欢的编辑器(作者使用Scite)。
要在您的工作中引用ASGarD代码,请使用:(TODO) ASGarD项目的目标是构建专门针对高维PDE的求解器,在该求解器中,“维数诅咒”先前已排除了有用的连续谱/ Eularian(基于网格或网格的模拟,而不是Monte-Carlo采样...
本项目是基于Java开发的choerodon-asgard任务调度服务,包含182个文件,其中包括132个Java源代码文件、11个Groovy脚本文件、10个XML配置文件、9个YAML配置文件、4个Markdown文档文件、3个YML配置文件、3个SQL文件、2...
阿斯加德Asgard是的图形用户界面(GUI),由设计和编程。 主要特征: 用户友好的图形界面正向运动学实现(第一个版本) 反向运动学实现(第二版)-即将推出顺控编程器(第3版)-即将推出我想补充一些但不是短期的: ...
引导者的不可变基础架构该项目提供了一个虚拟机框架,以使用以下各项在Amazon Web Services中促进低成本的不可变基础架构: - 创建系统快照,能够输出多种格式,包括亚马逊机器映像和虚拟箱箱(对我来说很有用)的...
Asgard简介Asgard是设计用于综合解决常驻进程应用、计划任务、定时任务的分布式作业管理系统。架构设计Asgard系统由web节点、master节点、agent节点组成。web节点主要功能包括实例管理、分组管理、作业配置、作业...
在使用Asgard时,开发者可以利用它提供的API和配置文件来定制模拟行为,定义各种交互的预期响应。同时,由于Asgard支持集成测试框架,如JUnit或TestNG,它能够无缝地融入到现有的测试流程中。 总结来说,Asgard ...
choerodon-front-asgard Choerodon Front Asgard 是一个任务调度服务(通过saga 实现微服务之间的数据一致性)前端。 Start cd choerodon-front-asgard npm install chmod -R u+x node_modules npm start 更新日志 ...
重命名一些文件并根据自己的喜好进行编辑-这两个文件都说明了应在何处使用哪些值: cp htpc/.defaults-env htpc/.env && \ cp traefik/data/default_traefik.yml traefik/data/traefik.yml 为了在启动之间保留卷...
资源分类:Python库 所属语言:Python 资源全名:asgard-api-plugin-metrics-mesos-0.3.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
ASGARD是一款强大的生物信息学工具,专门设计用于代谢途径的重建,同时也支持对DNA和蛋白质序列进行多种类型的注释。作为一个开源软件,ASGARD为研究者提供了透明且可自定义的平台,以深入理解生物体的代谢网络。...
CRISPR_Asgard 该存储库分为4个目录:arCOG,PSI-BLAST,neighborhood_analysis,结果分析。 每个目录都包含一个.ipynb脚本,该脚本为项目的每个阶段执行代码。 arCOG:CRISPR_arCOGs.ipynb脚本消除了未注释为...
适合中级进阶吉他手的曲谱/吉他谱,全球热门吉他曲
自述文件 该自述文件通常会记录启动和运行应用程序所需的所有步骤。 您可能要讲的内容: Ruby版本 系统依赖 配置 数据库创建 数据库初始化 如何运行测试套件 服务(作业队列,缓存服务器,搜索引擎等) ...
该项目是使用生成的。 对于组件样式,我们使用和 。 开发服务器 使用ETHERSCAN_KEY和INFURA_PROJECT_ID创建一个.env文件。 为本地开发人员运行npm run start 。 这将建立src/environments文件夹并启动本地服务器。 ...