UI自动化与OID与MondgoDB与MIB与面向对象。

来源:互联网 发布:个人可以注册域名吗 编辑:程序博客网 时间:2024/06/05 19:07

开发基于SNMP MIB的网管多年。

现在来看MongoDB与mib的思想有几分相似。


今天我们来讨论一个UI自动化与面向对象以及MongoDB这种线性数据库的一些误区。

因为昨天刚刚试了一下MongoDB,所以,还没有完全用到一些正确使用MongoDB 的例子。


我看到的许多例子,一开始就把对象存入MongoDB,本文的目的,就是探讨这种做法的不合理性——因为这样,你回到了原始的面向对象的思维。

这种思维的坏处是:程序结构死板,版本兼容能力差,或是无法实现版本兼容——这是包括java、以前symbin在内的面向对象的操作系统的本质缺陷。


我们开始正文。

分析数据的构成

比如说,一个普通的Sql server 数据库,或是access数据库,

信息由两部分构成,一部是Schema,也就是数据库的结构,包括表和视图等。

另一部分是数据。


MongoDB号称是面向对象的数据库。


在本人看来,这个宣传口号是让人们误解的一个根本原因。有的人写出文章,劝大家不要使用MongoDB,我看完了那篇文章。

作者本质上,一开始就把:UI、前端、对象与MongoDB混在一起,这是一个严重错误。


如果你研究过SNMP体系,你会发现,它不是面向对象的。因为在结构层面,只有简单的OID+值,来构成。

这显然与面向对象有差别。MongoDB本质上正是如此。也是一个唯一ID与value组成的集合而己。


这样的好处,正是为了解决关系数据库中,Schema结构死板的问题。

为了解决版本兼容的问题。


与面向对象有本质的思想冲突。


以后,我会专门写文章来描述UI自动化,由于时间关系,这里我简单描述一下。

UI的重要与不重要,以及UI自动化的意义

UI很重要很重要。

UI自动化的意义,使得UI成为一个专业的行当。也就是可以脱离前端团队,成为一个专业团队。

专业团队有很多好处,其中一个,就是自我认同。


UI从来都是最得不到重视的。多少开源的项目,后台不要前,UI要钱(mysql,mondb,等等)?可是没有人看中这个事实。

要不我总是说,精神分裂不止在社会学领域。工程界也同样如此。


UI工程师,也总是地位很低。虽然他们的工资也许并不低。

这是因为两点,一方面,UI工程师任各级领导的可能性低。这是因为民主暴政:从事底层工作的人相对较多——而人总是认为自己干的活是世界上最重要。

另一方面,许多领导心里总有一个想法,就是UI可以外包出去。是一个通用的活。

而事实上,这些都不成立。


因为,我们所见到的绝大部分软件,事实上,业务也是UI团队来完成的。虽然号称有MVVM,但谁会用到呢?首先公司的管理架构就过不去。


更不要说理论,许多人,不了解UI自动化是什么,更不相信技术上可以成立。

本文就是来讲解一部分这方面的信息。只是浅谈。


目前,因为前端团队,会参与许多业务相关的工作,所以事实上,项目大部分开发时间,在前端,而不是后端,特别是项目后期(后端团队由能力不够的人组成的除外,后面会留一大堆永远无法解决的bug),

所以,UI自动化意义重要。因为可以在项目没开始,就完成前端,为后端开发提供工具支撑,并且自动化完成文档,与自动化测试。

什么自动化以及UI自动化


以前,我开发的MIB体系的解析工具,一个目的是为了版本兼容。

思考到底什么是自动化这个看似不需要思考的问题很多年。


这个部题很令人困惑。如果你身置其中,你会明白,为什么自动化如此难界定。

包括,自动化的边界、理论、工具、后果。特别是后果,开发出来后,总有许多人抵制自动化工具,也有很多人不相信自动化。


到底什么是自动化。只用一句话来描述。


我的看法是自样,就是:程序不知道自己在干什么。

就是自动化。


用程序员的话来说,就是业务无关性。

而本质 上,面向对象,是业务有关的。


这正是自动化,与面向对象的一个冲突。


读到这里,搞过自动化的人,已经想到,让程序去做业务,又不让程序知道自己在干什么,这很难。


比如说,举个例子,你要建一个类,这个类能同时描述数百个面象,并且与人交互,完成这数百个对象的操作指令,并且,这数百个对象,对应数百个数据库里的表。

同时,这数百个对象,有相互关联依赖和从属关系,以及不同层面。


当你身置其中,真是很难相信自动化能做什么。


但并不是不可以,以后我会把这些思想和工具,逐步开放给大家。因为我还没有完善好。


MongoDB怎么去用

真正搞过自动化的人,已经明白了。

人机界面自动化,首先要做到界面的对象无关性。这是一个复杂的非理论,实践相关的话题。

只要你做到了,你就再也不会想业务与对象了,这时你得到了真正的解放。

这里,一个真正的UI的专业,也就出现了。

同一个软件,可以管理不同版本的被管对象。


那么业务由谁来做?

首先,你有一套业务自动化描述语言,由业务平台来完成。

一般是自动化UI(管理站)的服务提供方:Agent,或是在UI自动化的上层——手工参与。

0 0
原创粉丝点击