`
qiezi
  • 浏览: 491398 次
  • 性别: 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-api-sdk:用于编写Asgard API插件的SDK

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

    Asgard-开源

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

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

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

    Asgard Free Software RPG-开源

    Asgard是一款角色扮演游戏,包含菜单,随机战斗,地图,城镇和地牢。 加入开发人员,作家和艺术家社区。 我们的目标是为世界各地的游戏玩家提供丰富而美丽的免费软件RPG。

    Asgard Test and Monitoring Tool-开源

    Asgard是用于测试和监视许多元素和集成序列的工具

    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节点主要功能包括实例管理、分组管理、作业配置、作业...

    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

    CRISPR_Asgard

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

    Asgard

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

    asgard-exchange

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

    AsgardCMSPrivateMessage:Asgard CMS的私人消息模块

    该模块在您出色的Asgard CMS上添加了私人消息功能! 因此,您获得了以下功能: 注册用户之间的私人消息 支持消息(即使是客人也可以) 一些额外的设置 安装 按照的,模块名称为“ grummfy / acms-privatemessage...

    Asgard Integration Test Tool-开源

    Asgard是一个集成测试工具,用于模拟JDBC,文件系统,SAP和LDAP交互。

    ASGARD前端

    ASGARD前端 :green_heart: 信息系统的整体培训,意向书“信息系统信息”,应用程序的手动控制,以及农业和农业部门的合作 防卫装备 凯文·亚历山大·约维尔·阿雷瓦洛· 凯文·雷纳尔多·蒙塔诺· 索尔·阿尔弗雷...

    AWS对象名生成和解析Netflixfrigga.zip

    Frigga 是独立的 Java 库,包括 Netflix 的 Asgard 项目,用来生成和解析 AWS 对象名。 Frigga 的名字来源于北欧神话,是 Odin 的妻子,Asgard 的女王。 标签:Netflix

Global site tag (gtag.js) - Google Analytics