`
hanjiangit
  • 浏览: 187855 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SICS的起源

    博客分类:
  • SICS
阅读更多

在多年以前,因为一个偶然的机会,我参与了所在公司一个项目,并对这个项目中所使用的通讯报文的格式非常欣赏,认为这样的格式具有很好的通用性。后来在回到公司后,因为公司中的一个项目的需求,在这个项目的领导者的提议下,我使用这样的通讯报文格式建立了一个简单的 TCP/TP 的通用请求 / 处理程序。因为报文的高度适应性,这个程序有了一些基本的扩展性,可以称为一个非常小型的框架。

这个程序是用 JAVA 编写的,包括一个协议解释器,一个调用分配器,一个用户对象存储,一个功能容器,使用一个 Properties 文件作为配置管理。一共由 14 个类文件构成,总长度大约 3~4 千行。那个时候,它叫 DataRoad ,数据链路。

最初,这个小程序只是在那个项目中使用。在使用过程中,项目提出了一些更加高级的扩展需求,我就根据这些需求不断对功能容器部分进行增强,于是系统的体系结构迅速膨胀。到后来,已经明显的形成了这样的局面:原先作为程序主体的协议解释器已经变成了程序的一个分支功能。

一年之后,我参与了公司在外地的一个项目,这个项目使得这样的局面更加明显。于是,我在这个项目开始的阶段,用了近三周时间,重新编写了这个程序,以适应这样的一种应用格局:在一个系统范围内,必须能同时支持客户端调用和 WEB HTTP 调用。那个时候, SERVLET 规范才是 1.1 版的, API 非常简单。所以,我也很容易的就为这个程序编写并建立了一个基本的 HTTP 服务,以支持 SERVLET 。同时,我还为这个程序配上了一个基本的管理界面,采用 SWING 编写的全图形界面。也就是在这个版本中, SICS 的基本编程思想被初步建立。我给这个版本程序命名为 NetCenter

在随后的两年里, NetCenter 作为一个可选的应用框架,在一些项目中被使用。但是自身的功能却几乎没有什么太大的变化。

后来, 2003 3 月,我离开了原先工作的公司。从此也没再管这个程序在原来的这个公司的发展或者保持的情况。

2005 5 月,我开始开发 SICS 的 第一个正式版本。那个时候,我已经是一个完完整整的无业游民:没有稳定工作,没有固定收入,基本上是靠接一些小项目挣钱维持生活。在承接和编写这些小项目 的日子了,为了能更快更好的完成项目,我也编写了一些小工具(这么说也许不恰当,因为有的工具实际上规模非常可观,例如 InfoBase ,程序长达 6 万多行)。一边做项目,一边做工具的日子是非常辛苦的,而且因为收入不稳定,日子更加艰难。

但是这却几乎是我的一段快乐时光:在这期间, SICS 的编程思想逐渐定型,我对应用系统的构成和协作机制的理解有了一个质的飞跃!

在所有的希望都落空的情况下,我开始编写自己的 SICS 的第一个正式版本,并寄希望于能通过这个程序为自己带来面包!

总的来说,我打字的速度是非常快的,再加上经历了那么多的项目的锻炼,经验和技术应该可以说是炉火纯青吧!所以程序很快得以编写完成(大约 3 个月)。程序版本被正式命名为 SICS/SysFrame

在这个版本中,我建立了完整的系统构成规范,运行控制规范,并且配备了两个基本的扩展服务: LightRpc— 轻型远程过程访问和对象调用服务; MiniHttp— 小型 WEB 访问服务。

但是,这个程序并没有如愿的为我带来面包,虽然我也设法联系了一些可能的买家,但是:想让国人为一个应用框架掏钱,那只能是梦想!

在无可奈何的情况下,因为一些原因,我到了一个朋友的公司,以他们的市场为原形,我开始编写监控系统。那是我第一次接触监控系统。因为市场时间的原因,我选择了使用 JAVA 作为监控系统的开发语言,以希望能够尽快的完成任务。还是一句话:为了面包,我努力工作!

但是,至少在当时的情况来看,我的这份努力因为这句话被否定了:没有人用 JAVA 开发监控系统,因为速度太慢!尽管我也一再解释: JAVA 只是用于界面和控制,底层运行的实际上依然是 C/C++ 。但是最后还是走路了事!

但是我还得生存啊!于是我又找了家公司,做市场技术支持!但是很显然我不是那块料!于是一个多月后,我又只有离开的份!怎一个“惨”字了得!

痛定之后,我开始重新规划自己的发展方向:做工具赚不来钱,那就做应用吧!做市场做不好,那就专心做技术 技术性应用!

我选择继续编写视频监控系统,依然用 JAVA ,时间已经是 2006 年了。

实际上,我们大家对监控行业有了解的人都知道,视频监控市场几乎已经做烂了:十几个镜头,加一个计算机主机,才 8~9 千大洋!至少低端市场,已经不值得我去努力了。于是,我把市场瞄准在高端大型复杂监控领域。

对于我个人来说,是不需要什么计划或者市场调查之类的琐事的,想到了就干!

于是一个复杂的应用体系开始象一个神话似的慢慢建立起来了!说它象神话,是我个人的感觉:以我 10 多年的编程经验,甚至在有了 SICS 这样的完全为工程应用为目标的框架的支持下,编写过程依然磕磕跘跘!

1)  因为我没有自己的硬件,只能选择和硬件厂商合作,所以框架必须能支持所有的硬件(至少在理论上要建立这样的支持接口);

2)  因为要面向的是复杂应用领域,功能的扩展性可能包罗万象,所以必须建立一个稳定可靠而且非常灵活的功能性扩展机制;

3)  因为监控的应用和实施方式各种各样,系统必须能灵活适应所有这些已知的应用模式,所以其规模的伸缩性要求肯定也是一个关键。

这样的应用需求,导致了我对 SICS 系统框架本身的大幅度的修改!最终,在 2007 8 月, SICS 最终被再次彻底重写!

再往后,还有其它的一些项目,对 SICS 的功能的发展也有着重要的影响,包括促使 SICS 的核心层建立对 AOP 的直接支持

改动的细节,列出来可能得十几页,不列也罢,反正很大就是!几个关键点我需要提一下:

1)  MiniHttp 彻底抛弃了对所谓 SERVLET 规范的支持,轻装上阵了;

2)  LightRpc 实现了完整的远程回调和远程事件的直接支持;

3 )建立了基本的 AOP 支持,建立了资源桌面的机制,建立了完整的分组会话支持。

分享到:
评论

相关推荐

    梅特勒天平SICS指令集通讯协议

    SICS(System Interface Command Set)指令集是梅特勒天平与外部设备进行通信的一种标准化方式,它允许用户通过计算机或其他设备控制天平,获取测量数据,实现自动化工作流程。本文将详细解析梅特勒天平SICS指令集...

    基于SICS协议称量仪表与PLC通信的实现.pdf

    《基于SICS协议称量仪表与PLC通信的实现》一文深入探讨了梅特勒-托利多公司的IND236称量仪表如何通过SICS协议与三菱Q系列PLC进行有效通信,这不仅为相关领域的技术人员提供了宝贵的参考,也对提高生产效率和确保生产...

    银湖公司SICS系统方案

    SICS是完全模块化和高度参数化的产品,系统非常容易使用,支持及时按业务需求不断改变系统。用户可以在核心的卡管理模块外选择外围的功能模块,以丰富系统的功能。用户也可根据他们的业务需求将卡系统与其他系统连接...

    论文研究 - 布阿克(科特迪瓦)大学医院采用缝合法和无缝合小切口白内障手术(SICS)进行囊外摘除术(ECE)的比较评估

    我们的研究目的是评估新近引入的手动小切口白内障手术(SICS)的结果,并将其与传统的囊外摘除方法进行比较。 患者与方法:分析性横断面研究在布瓦凯大学医院眼科进行,为期1年。 结果:两种手术技术以相同比例进行...

    SICS协议格式说明文件

    《SICS协议格式详解》 SICS(Standard Interface Command Set)是托利多公司(METTLER TOLEDO)制定的一种通信协议,主要用于其ICS4__和ICS6__系列产品的数据交互。该协议旨在规范设备间命令的标准化,确保系统的...

    VBA API 32 Serialport MT-SICS

    Option Explicit '------------------------------------------------------------------------------- ' ' This VB module is a collection of routines to perform serial port I/O without ...

    mt-sics:一个使用Mettler Toledo标准接口命令集(MT-SICS)的Mettler Toledo平衡和缩放的node.js接口库

    mt-sics 使用Mettler Toledo标准接口命令集(MT-SICS)的Mettler Toledo的node.js接口库进行平衡和缩放。 安装 安装使用软件包管理器。 安装npm后只需键入以下命令。 npm安装mt-sics 梅特勒-托利多RS232设置 波特...

    梅特勒-托利多秤通讯协议

    为了确保梅特勒-托利多的衡器能够与外部系统进行有效通信,公司制定了一套详细的通讯协议——梅特勒-托利多标准接口命令集(MT-SICS)。本文将详细介绍该协议的内容和使用方法。 #### MT-SICS版本及支持设备 MT-...

    SICS-crx插件

    【SICS-crx插件】是一款专为葡萄牙语(巴西)用户设计的浏览器扩展程序,其主要功能是针对WebSICS平台提供优化和支持。这款插件的目的是在辅助计算保险后,帮助用户在已经计算的预算中定位并管理Colo安全相关的项目...

    电子秤协议说明

    梅特勒·托利多(Mettler Toledo)发布的《标准接口命令集》文档详细介绍了MT-SICS通信协议,这是一种专为梅特勒·托利多电子秤设计的标准化命令集,旨在简化电子秤与其他系统的集成,并最大化利用电子秤的功能。...

    PLC200SMART自由口与托利多标准SICS通信

    前几天做托利多IND245仪表通信,发现托利多IND245仪表网口或串口与PLC200SMART通信只有状态字,没有控制字,所以只能远程读重量而不能执行清零操作,想要远程清零只有托利多的标准SICS协议具备,没办法,只好自已用...

    Lwip 协议栈的设计与实现

    作者:Adam Dunkels adam@sics.se

    梅特勒 托利多 电子天平 开发指令集

    MT-SICS 0级别的命令格式适用于基本的电子天平操作,MT-SICS 1级别的命令格式适用于高级的电子天平操作,MT-SICS 2和MT-SICS 3级别的命令格式则适用于 Excellence 平衡天平的高级操作。 响应格式 梅特勒托利多电子...

    api32

    让查阅API 函数变的更简单,容易,也更有效。

    MC55 TCP 使用方法

    - 示例命令:`at^sics=0,conType,GPRS0`, `at^sics=0,passwd,gprsat^sics=0,user,cm`, `at^sics=0,apn,cmnet` 2. 创建TCP Service Profile:定义服务类型为socket,并指定连接ID和服务器地址(IP地址:端口号)。 ...

    uIP-1.0源码

    by Adam Dunkels <adam@sics.se>. More information can be obtained at the uIP homepage at http://www.sics.se/~adam/uip/. This is version $Name: uip-1-0 $. The directory structure look as follows:...

    oracle数据库安装步骤文档

    在SQL命令窗口中,编写创建表空间的SQL语句,如创建名为SICS_TBS、SICS_temp和SICS_index的表空间。这些表空间分别用于数据、临时数据和索引,大小可根据实际需求调整,并启用自动扩展功能。 创建完表空间后,你...

    tahu:Eclipse Tahu解决了旧有的SCADADCSICS协议和基础结构的存在,并提供了如何将MQTT最好地应用到这些现有工业操作环境中的迫切需要的定义

    Eclipse塔胡 Eclipse Tahu提供了各种语言以及各种设备的客户端库和参考实现,以显示设备/远程应用程序必须如何使用下面说明的Sparkplug规范与MQTT服务器连接和断开连接。 这包括设备生命周期消息,例如必须发送的...

    mc52i调试资料,绝对有用

    at^sics=0,passwd,gprsat^sics=0,user,cm at^sics=0,apn,cmnet ``` - **创建TCP Service Profile**:定义服务类型为socket,并指定连接ID和服务器地址。 ``` at^siss=1,srvType,socket at^siss=1,conId,0 ...

    MiTeC System Information Component Suite_12.1.0_DXBerlin.rar

    MiTeC System Information Component Suite,简称SICS,是一款由MiTeC公司开发的专业级系统信息检测工具,其最新版本为12.1.0,并以DXBerlin为主题。这款软件集合了多种实用组件,能够全面、深入地检测用户的计算机...

Global site tag (gtag.js) - Google Analytics