在仔细分析了tnl这个网络游戏lib之后, 最大的一个认识就是网络程序的架构,无论应用在哪个领域,都是一样的,都要有rpc和远程proxy,都是一种corba的架构,无论这些架构的名字真正叫什么.因为架构无非是编程规范的固定化,而规范是一种抽象认识,既然都是网络编程,问题域都是相同的,得出的解决方案也是差不多的,只不过因为应用领域的需求不同稍有变化罢了.网络编程的特殊需求就是.对网络环境要有极大的容忍度.所以不试图去隐藏网络通信本身的险恶环境,所以不能使用tcp这种假装什么问题都没有的协议,要有分级可靠的包传递方式...

tnl为了简化网络编程开发,实现了一个lightweight corba的架构,虽然这个corba 架构是假装的..只所以说是假装的是因为首先并没有idl帮你生成stub,得自己来继承了 event 类之后完成pack 和 unpack 方法将对象 属性写到 bitstream里头去,基本的 event 和 netobject 都可以在 pack unpack里头做 bitstream的 update 然后 基于 event 之上的 rpc 应用,也只是宏,帮你简化了event的编写.就这样...

call back func
Unpack is called on the destination side of the connection to read an event's data out of a packet.

以下,rpc 宏应用:

// Let the network system know this is a valid network connection.
    TNL_DECLARE_NETCONNECTION(SimpleEventConnection);

// declare the client to server message
    TNL_DECLARE_RPC(rpcMessageClientToServer, (const char *theMessageString));被客户所调用而在服务端运行的,参数从对方来

// declare the server to client message
    TNL_DECLARE_RPC(rpcMessageServerToClient, (const char *theMessageString));被服务端调用而在客户端运行的,参数从对方来
The first parameter to the macro is the name of the RPC method, which can be invoked like any other member function on the object. The second argument is a parenthesized argument list to the RPC.

TNL_IMPLEMENT_RPC(SimpleEventConnection, rpcMessageClientToServer, (const char *messageString),
NetClassGroupGameMask, RPCGuaranteedOrdered, RPCDirClientToServer, 0)

TNL_IMPLEMENT_RPC(SimpleEventConnection, rpcMessageServerToClient, (const char *messageString),
NetClassGroupGameMask, RPCGuaranteedOrdered, RPCDirServerToClient, 0)
一个  connection 只要客户发起就可以了,server只要接受就肯定用这个connection来做事,
而rpc是哪到哪里的,则有RPCDirClientToServer可以帮助界定,而执行逻辑上是由函数调用(rpc)界定的

这个问题是这样的在网络游戏设计里每一个bit的传输都是必须节省的.所以..这件事情程序员必须亲自完成....

但是在宏观角度网络游戏架构跟实际的orb架构都差不多,masterserver 是naming service,以及 event service 的结合体至于其他的..一般也用不上...

与tnl 相比较起来,raknet实在太裸了,socket这个关键字都
还保留着,只是薄薄的一层。
虽然各个lib都能实现最终的功能,程序员心中有剑的话做到最后都一样,但是那,我就直接用socket好了,
socket也很抽象其实。。ip加程序id就可以了。。

只能说网络游戏是网络程序的游戏应用而不是游戏的网络扩展,那种用各种editor编了个地图让人物在里头走之后就畅想着"扩充"成mmorpg的人.跟花痴一样.

tnl分析笔记之 CORBA 与假装自己是 CORBA相关推荐

  1. 2.View绘制分析笔记之onMeasure

    今天主要学习记录一下Android View绘制三部曲的第一步,onMeasure,测量. 起源 在Activity中,所有的View都是DecorView的子View,然后DecorView又是被V ...

  2. 用户行为分析笔记(一):概述

    今天有人问我会不会推荐算法,回到家里反复思考了下(其实就是一个会与不会的回答,为啥我还要反复思量下了?),我发现自己从事软件开发工作这么多年,大小项目无数,但是如果从做应用角度换句话说我做了哪些提高人 ...

  3. 重载内核全程分析笔记

    标 题: [原创]重载内核全程分析笔记 作 者: Speeday 时 间: 2013-08-20,20:19:46 链 接: http://bbs.pediy.com/showthread.php?t ...

  4. oracle10g cssd日志,【案例】Oracle CSSD进程HANG导致RAC节点重启原因分析笔记

    [案例]Oracle CSSD进程HANG导致RAC节点重启原因分析笔记 时间:2016-11-04 19:20   来源:Oracle研究中心   作者:HTZ   点击: 次 天萃荷净 Oracl ...

  5. NJ4X源码阅读分析笔记系列(一)——项目整体分析

    NJ4X源码阅读分析笔记系列(一)--项目整体分析 NJ4X是什么 参见NJ4X的官网:http://www.nj4x.com/ Java and .Net interfaces to support ...

  6. SharpDevelop源码分析笔记(一)

    SharpDevelop自动命令启动UI部分(看SharpDevelop源码分析笔记随想) 参见:Fbt2008的大作  SharpDevelop源码分析笔记(一) 源文档 <http://ww ...

  7. NJ4X源码阅读分析笔记系列(三)—— nj4x-ts深入分析

    NJ4X源码阅读分析笔记系列(三)-- nj4x-ts深入分析 一.系统的工作流程图(模块级) 其工作流程如下(以行情获取为例): 应用端向Application Server发起连接 应用服务器调用 ...

  8. 【转载】Instagram架构分析笔记

    原文地址:http://chengxu.org/p/401.html Instagram 架构分析笔记 全部 技术博客Instagram团队上个月才迎来第 7 名员工,是的,7个人的团队.作为 iPh ...

  9. CSMA/CD协议分析笔记

    CSMA/CD协议分析笔记 CSMA/CD(carrier sense multiple access with collision detection) 文章目录 CSMA/CD协议分析笔记 前言 ...

  10. 关于qcom camera cpp driver 的buf分析笔记(msm8996)

    关于qcom camera cpp driver 的buf分析笔记(msm8996) tags : linux camera 文章目录 关于qcom camera cpp driver 的buf分析笔 ...

最新文章

  1. 在项目中使用Google Closure Compiler
  2. 查看无线网卡是否支持监听模式
  3. 如何打造规范的开源项目workflow
  4. 【原创】VSFTP: Login failure: 530 Login incorrect的解决办法
  5. Flutter Dart 安装在window系统
  6. school‘s movie demonstration
  7. sqlite数据库实现字符串查找的方法(instr,substring,charindex替代方案)
  8. Spring FactoryBean的开发1
  9. kail linux稳定版本,Kali Linux 2020.3 稳定版已发布 更新后新功能概览
  10. 攻城狮危险:波士顿动力机器狗去福特当工程师了!
  11. 运维从业人员是否需要考证?
  12. 晒晒女儿学国画一学期的成果
  13. 网络七层协议 五层模型 TCP连接 HTTP连接 socket套接字
  14. 34. Find First and Last Position of Element in Sorted Array
  15. 怎样把照片中的头像扶正_微信头像用对了,2020运气差不了
  16. 权力的游戏登录显示服务器上限,权力与纷争登录不上怎么办 登录不上解决方案...
  17. Python 100道题深入理解
  18. 淘宝电子面单怎么用CAINIAO打印组件调打印偏移
  19. win10字体大小_暴露年龄警告!Win10干掉了多少装机必备?
  20. Mysql里有2000w数据,redis中只存20w数据,如何保证redis中的数据都是热点数据

热门文章

  1. 分析一个游戏脚本框架
  2. 微信支付必须是服务器,微信付款码不需要联网的原理是什么?怎么生成?
  3. Oracle:sqlplus命令行登录方法 as sysdba
  4. 正在升级android s8,国行版三星S8/S8+再添新操作 升级安卓8.0
  5. 教程丨GIS制图教程01
  6. linux系统 用优盘启动流程,制作u盘启动linux系统
  7. Improving and Simplifying Pattern Exploiting Training
  8. (63)计数器设计(递增计数器)
  9. [操作系统]进程管理 进程同步、死锁相关、处理机调度
  10. 解决底部横杠遮挡问题(兼容苹果手机底部)