数据总线-平台的灵魂

原创 2004年06月30日 14:53:00
用C开发程序比较多的人,对函数肯定是又爱又恨:作为过程语言,函数提高了程序的调理性,利于重用维护;编程中函数的参数又让人有些恶心,如果参数很多, 要写很长的参数列表,改动起来还得时刻准备加长,(如一个验证函数,一开始只有两个参数姓名、密码,后来又要扩充上权限),C语言中的函数声明又不和定义 部分在一起,实在麻烦。参数少的时候,还可以忍受,多的时候(如将接收前台数据传到子函数中)就难以忍受。所以有些时候会写一个超级长的函数来避免向子函 数传递参数。然而这样写出来的代码可维护性极其差(试问有几个程序员对几千行代码的长函数不头痛)。
实际上解决办法是有的,并且很普通,只是要增加额外代码。用中间件Tuxedo的fml(32)方式进行过开发的都知道,Tuxedo维护了一个大的缓冲 区,程序员可以通过变量ID去取得、更改其中的值。从前台传到后台的是一个指针(缓冲区),在大部分后台函数中只需传递指向缓冲区的指针这一个参数。进而 推展开,如果把这个缓冲区声明成全局的,并且加上一定的封装,最终程序员不需要在看到可爱又可恨的指针是多幸福的事情。诚然,这样会产生一些其它问题(后 边描述),但是程序的结构性,可读行大大提高了。如果可能,前后台都采用这种方式,数据透明的传输,一般的开发人员不用再关心什么中间件、指针之类的东 西,只要知道名字(如“操作员姓名”)就可以找到、更改对应的值。前台程序中不必再写从这个form上某个edit控件取出值,转换为后台需要的形式,组 织后台程序需要的信息流;后台程序中不必把指针指来指去该是多么幸福的事情。
just one name.
对,只要一个名字。如果信息流的格式发生改变,如由fml改为xml只需要改动格式生成规则,快捷方便。这里是以tuxedo为例子,实际上如果提供一个 平台完成这些,根本不需要考虑具体的实现形式(牛人可以自己写一个类似的缓冲区管理库),还有其它一些好处,不再一一列举。
当然会存在一些问题:

   1. 命名混乱。不同模块、函数中变量命名一定要控制住,否则会产生与过多使用全局变量同样的问题,不是变量找不到,就是变量乱使用,总而言之,变量混乱。
   2. 缺少访问控制。数据总线相当于全局变量,任意的函数都能访问到其中的变量,如果无意中更改了,会产生莫名其妙的错误。
   3. 效率会降低。当前的硬件可以忍受这些损耗。

初步的解决设想:
增加访问控制,数据总线分为程序级和交易级,程序级在本进程中始终不释放,交易级总线只在一个小的交易模块中作用。如果可能,在函数访问前可以lock一些变量,减少损失。
相关问题参见blog中其它文章

李建忠:Metadata是.NET平台的核心灵魂

网友来信:李老师,您好!前几天在博客园上的C#大论战,不知道您看过吗?特别是其中一个网友firelong所写的几篇轰动的帖子,对.NET的性能提出了许多批评。这个话题在我们项目组也引起了很多争论,很想...
  • u013885963
  • u013885963
  • 2014年04月18日 12:32
  • 1816

字长与数据总线

问题1: 计算机字长取决于哪种总线宽度?数据总线/地址总线?为什么? 答1: 取决于数据总线,宽度!代表一次可以取多少的数据! 地址总线,相当于取数据的地址范围! 可以这样比方,问题1:计算机字长取决...
  • loverszhaokai
  • loverszhaokai
  • 2010年11月05日 08:16
  • 4164

地址总线/数据总线/控制总线的作用

数据总线 (1) 是CPU与内存或其他器件之间的数据传送的通道。 (2)数据总线的宽度决定了CPU和外界的数据传送速度。 (3)每条传输线一次只能传输1位二进制数据。eg: 8根数据线一次可传送...
  • bat67
  • bat67
  • 2017年06月10日 09:47
  • 1228

地址总线、数据总线、控制总线详解

数据总线 (1) 是CPU与内存或其他器件之间的数据传送的通道。 (2)数据总线的宽度决定了CPU和外界的数据传送速度。 (3)每条传输线一次只能传输1位二进制数据。eg: 8根数据线一次可传送...
  • czw2010
  • czw2010
  • 2012年05月21日 15:50
  • 27650

今天学的是传说中的c语言灵魂指针。。

今天就让我带大家走进传说中的指针吧。。。
  • zhangke_zhangke
  • zhangke_zhangke
  • 2014年10月24日 22:08
  • 472

地址总线 数据总线 和控制总线的作用, 形象的比喻

系统总线上传送的信息包括数据信息、地址信息、控制信息,因此,系统总线包含有三种不同功能的总线,即数据总线DB(Data Bus)、地址总线AB(Address Bus)和控制总线CB(Control ...
  • maochengtao
  • maochengtao
  • 2013年06月01日 16:52
  • 1952

算法---程序的灵魂,没错就是灵魂!

说到算法,大家肯定会想到,“+”,“-”,“*”,“/”之类的东西; 但,是在在程序上的算法................... 其实与你想象的差不多,哈哈哈.      首先,著名计算机科学...
  • zaijianc
  • zaijianc
  • 2017年11月10日 18:48
  • 78

有趣的灵魂是什么样的

如果一定要给自己定位的话,我希望自己是个有趣的人。 王尔德曾经说:“这个世界上好看的脸蛋太多,有趣的灵魂太少”如果你碰到有趣的人,请一定要珍惜。那么我认为的有趣的人是什么样的呢? 1.每个...
  • Dorenn
  • Dorenn
  • 2018年01月10日 10:09
  • 98

地址总线、数据总线、控制总线

地址总线:决定内存数据操作的地址 CPU通过地址总线来指定存储器单元。地址总线上能传送多少个不同的信息,cpu就能对多少个内存单元进行寻址、公式如下: 寻址大小m=2的N次幂,N是地址总线的个数 ...
  • qq_28385797
  • qq_28385797
  • 2017年01月03日 13:40
  • 669

企业服务总线架构介绍

产品架构                                                          Sm@rtESB系统架构图          ...
  • smartesb
  • smartesb
  • 2014年10月24日 09:48
  • 4523
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据总线-平台的灵魂
举报原因:
原因补充:

(最多只允许输入30个字)