DCNF 采用RSOMC(Remote Service Object Method Call)远程服务对象方法调用机制,分层结构实现. 1.网络通信适配层 2.服务对象管理层 3.应用业务层(For Delphi VCL 组件)
容易学习,灵活的扩展机制.兼容原有的应用开发环境(譬如:VCL DB 控件), 利于旧系统迁移(大部分成熟的应用软件都是C/S结构,其业务功能非常完善, 为了能在互联网上直接使用,技术解决方案大部分为VPN,远程桌面等, 采用第三方支持技术实现,加重用户使用运维成本,并没有直接提升产品本身价值) 所以采用一种平滑的迁移技术方案,从而提高产品的竞争优势,延长产品生命周期.
传统Win32客户端应用模式 Win32 GUI Client->Application Server->Service Object Adapter->Service Object Pool(Stateless)->DBMS(Oracle,DB2,MS-SQL..)
浏览器客户端模式 Web Browser(IE/Firefox)->Web Server(IIS)->Application Server->Service Object Adapter->Service Object Pool(Stateless)->DBMS(Oracle,DB2,MS-SQL...)
3.1.基于记录行级的提交(Insert,Delete,Modify)前后事件触发机制 在成熟的C/S结构中,大部分的业务逻辑都是在数据库端以储存过程或者触发器等机制实现. 而作为面向Internet的多层结构应用,严格来说,业务逻辑应该在应用层实现,而不是数据库 端.譬如:销售订单审核,业务实现是将表头某个标记字段值改变同时触发执行其他业务逻辑. 如果应用层直接提供触发机制,那么在应用层封装业务逻辑非常容易,相反,那就得在数据库中 实现了.
3.2.自动记录分页 为什么要将记录分页?在大部分的C/S结构应用软件中,几乎是没有这种机制,因为基本上C/S 结构应用软件的测试/生产环境都是在本地局域网中,通信质量是可以保证的(但是我们经常会 听到用户说,系统越用越慢,可想而知,数据可是每天都在增加,而带宽可不是.这时候软件产商 大部分都是建议用户做硬件升级来解决).那么在Internet环境中,通信质量就更重要,就如Google 一样,如果10000个用户同时都键入"中国"来搜索,然后将所有查询结果全部一次性下载到本地, 估计Google的服务器得趴窝.
3.3.多表一次性提交和自动事务管理 我们都知道Midas中的TClientDataSet提供ApplyUpdates方法用于将变动过的记录集提交保存. 但是并不支持多表关联一次性提交.譬如:销售订单有表头和订单明细组成,在提交张订单的时候, 如果表头提交成功而订单明细提交失败那就麻烦了.
3.4.无状态自动数据代理 一说用Midas实现多层结构应用,我就想到TRemoteDataMoudle中一堆的 TClientDataSet/TDataSetProvider/TDataSet控件,导致无论开发还是维护都费时费力. 采用无状态数据代理模式,简化应用层的服务实现.提高产品的开发与维护质量.
安装使用DCNF开发套件之前,请确认将 dcnf_opm.dll dcnf_win32.dll 两个文件拷贝到system32目录,并使用regsvr32.exe 注册 dcnf_win32.dll.
Demo 程序提供的是在Delphi环境应用开发中最常见的单表和主从表在DCNF模式下的处理实现. |