`
qiezi
  • 浏览: 497737 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

正式建立asgard项目 (因ancients已经被人使用了)

    博客分类:
  • c++
阅读更多
“为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:Asgard项目的API

    Asgard API 测试覆盖率 Typehint覆盖范围 阿斯加德项目Asgard项目的存在主要有两个目的: 便利开发应用程序(所有类型)的人们的生活; 对于维护运行数百/数千个应用程序的基础结构的人员来说,生活变得更轻松通过...

    Asgard 原始文件

    NEXON公司的韩国服务器的原始.EXE文件,用于未备份而修改exe文件后备用

    Asgard Test and Monitoring Tool-开源

    为了使用或贡献于Asgard项目,你需要解压该文件,按照文档指示进行配置和安装。这可能涉及到设置环境变量、安装依赖库、编译代码等步骤。对于开发人员来说,熟悉Git版本控制工具和基本的编程知识是必要的,因为开源...

    asgard-api-sdk:用于编写Asgard API插件的SDK

    Asgard API SDK 在这个项目中,我们找到可以在为API编写的插件中使用的通用代码。可用功能asgard.sdk.options.get_option() 它允许读取多个环境变量并在列表中返回值,例如: 数据= get_option(“表格”,“地址...

    Asgard Free Software RPG-开源

    文件"asgard-0.3.10"很可能代表了Asgard游戏的一个版本,版本号0.3.10可能意味着这是项目的早期阶段,但已经包含了基本的游戏功能和一些改进。用户可以通过下载这个压缩包来体验游戏,同时也鼓励有能力的社区成员...

    Asgard-开源

    Asgard是一个简单的项目经理,使用您喜欢的编辑器(作者使用Scite)。

    matlab如何敲代码-asgard:阿斯加德

    要在您的工作中引用ASGarD代码,请使用:(TODO) ASGarD项目的目标是构建专门针对高维PDE的求解器,在该求解器中,“维数诅咒”先前已排除了有用的连续谱/ Eularian(基于网格或网格的模拟,而不是Monte-Carlo采样...

    基于Java的choerodon-asgard任务调度服务设计源码

    本项目是基于Java开发的choerodon-asgard任务调度服务,包含182个文件,其中包括132个Java源代码文件、11个Groovy脚本文件、10个XML配置文件、9个YAML配置文件、4个Markdown文档文件、3个YML配置文件、3个SQL文件、2...

    Asgard:使用PyQt5开发的Thor的GUI

    阿斯加德Asgard是的图形用户界面(GUI),由设计和编程。 主要特征: 用户友好的图形界面正向运动学实现(第一个版本) 反向运动学实现(第二版)-即将推出顺控编程器(第3版)-即将推出我想补充一些但不是短期的: ...

    immutable-infrastructure-for-bootstrappers:使用Asgard,Packer,Vagrant,VirtualBox和AWS的不可变基础架构的虚拟机配置

    引导者的不可变基础架构该项目提供了一个虚拟机框架,以使用以下各项在Amazon Web Services中促进低成本的不可变基础架构: - 创建系统快照,能够输出多种格式,包括亚马逊机器映像和虚拟箱箱(对我来说很有用)的...

    Asgard:阿斯加德框架

    Asgard简介Asgard是设计用于综合解决常驻进程应用、计划任务、定时任务的分布式作业管理系统。架构设计Asgard系统由web节点、master节点、agent节点组成。web节点主要功能包括实例管理、分组管理、作业配置、作业...

    Asgard Integration Test Tool-开源

    在使用Asgard时,开发者可以利用它提供的API和配置文件来定制模拟行为,定义各种交互的预期响应。同时,由于Asgard支持集成测试框架,如JUnit或TestNG,它能够无缝地融入到现有的测试流程中。 总结来说,Asgard ...

    choerodon-front-asgard

    choerodon-front-asgard Choerodon Front Asgard 是一个任务调度服务(通过saga 实现微服务之间的数据一致性)前端。 Start cd choerodon-front-asgard npm install chmod -R u+x node_modules npm start 更新日志 ...

    Asgard-DNA:个人服务器堆栈

    重命名一些文件并根据自己的喜好进行编辑-这两个文件都说明了应在何处使用哪些值: cp htpc/.defaults-env htpc/.env && \ cp traefik/data/default_traefik.yml traefik/data/traefik.yml 为了在启动之间保留卷...

    Python库 | asgard-api-plugin-metrics-mesos-0.3.0.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:asgard-api-plugin-metrics-mesos-0.3.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    ASGARD:从DNA或蛋白质序列进行代谢重建。-开源

    ASGARD是一款强大的生物信息学工具,专门设计用于代谢途径的重建,同时也支持对DNA和蛋白质序列进行多种类型的注释。作为一个开源软件,ASGARD为研究者提供了透明且可自定义的平台,以深入理解生物体的代谢网络。...

    CRISPR_Asgard

    CRISPR_Asgard 该存储库分为4个目录:arCOG,PSI-BLAST,neighborhood_analysis,结果分析。 每个目录都包含一个.ipynb脚本,该脚本为项目的每个阶段执行代码。 arCOG:CRISPR_arCOGs.ipynb脚本消除了未注释为...

    Herald of Darkness Tab by Old Gods Of Asgard .pdf

    适合中级进阶吉他手的曲谱/吉他谱,全球热门吉他曲

    Asgard

    自述文件 该自述文件通常会记录启动和运行应用程序所需的所有步骤。 您可能要讲的内容: Ruby版本 系统依赖 配置 数据库创建 数据库初始化 如何运行测试套件 服务(作业队列,缓存服务器,搜索引擎等) ...

    asgard-exchange

    该项目是使用生成的。 对于组件样式,我们使用和 。 开发服务器 使用ETHERSCAN_KEY和INFURA_PROJECT_ID创建一个.env文件。 为本地开发人员运行npm run start 。 这将建立src/environments文件夹并启动本地服务器。 ...

Global site tag (gtag.js) - Google Analytics