诚征方案!!!请高手不吝赐教! (200分)

  • 主题发起人 主题发起人 HHSH
  • 开始时间 开始时间
H

HHSH

Unregistered / Unconfirmed
GUEST, unregistred user!
公司最近完成了一个较大的三层系统(Midas+oracle),用户又要求做单机版,
原因是有些客户端无上网条件或网络很不稳定,不能全部使用网络版。
我没有做过单机版,对于网络转单机全无经验。
转换的基本原则是:
(1)尽量减少客户端的发布、维护和使用难度(客户端很多)。
最初选择三层系统,就是基于这方面的考虑。象有的方案:单机上
oralce+midas(也是三层)模拟网络,虽然能最少地改动程序,但象
oracle这样的家伙,用户是搞不了的。事实上是行不通的。
(2)尽量减少程序的改动!这点是不用多说了。
(3)方便地实现单机版与网络版的数据共享。例如数据的导入与导出,汇总与统计等。
我查找了许多资料,初步确定了以下两套方案:
(1)单机上sql server desktop版+ADo+midas,仍然是三层,模拟网络版。
优点:改动程序较少,数据库性能好,支持存储过程触发器等(网络版中用了好多存储过程),与网络版的数据共享方便。
缺点:分发程序麻烦,维护难度高。
(2)单机上Access(或MSDE)+ADO,纯单机版。
优点:软件发布、维护、用户使用方便。
缺点:程序改动很大,与网络版数据共享不方便。
我现在的疑惑是:
(1)以上两种方案哪种更可行?
  若用(1)客户端怎样采取最简便的方法安装SQL server?
  若用(2),是用Access好,还是MSDE好?怎样最大限度地减少程序的改动?原来的存储过程都完了吗?数据共享方面怎样更好地实现。
(2)若有更好的方案,肯请不吝赐教!
请有经验的朋友畅所欲言,若分不够,可以再加!
 
MSDE就是sql server桌面简版。
我认为用ACCESS好,不用安装数据库软件,当然,原来的存储过程都完了!
 
看了以后,就我目前的经验,我会选择(1)
单机上模拟3层,装上SQL_SERVER的服务端和客户端,将server和中间层移植到单机,能够最少的改动程序!
就象你说的存储过程也可用!
我想问的是:既然你的三层系统(Midas+oracle),那么你也可在单机上装ORACLE模拟3层啊??
将ORACLE的数据库和client端全装上!
》》》oracle这样的家伙,用户是搞不了的。事实上是行不通的。
为何行不通??
我考虑的唯一限制(或不利)大概就是发布的时候会麻烦一点!
(2)用Access,不知有多大的数据量?“较大的三层系统”恐怕不能承受!
再说,Access受限多多!
---仅仅参考一下, 我开始旁听! [:)]
 
可以把原来的存贮过程转为Access中的VBScript脚本。
如果你确定数据库最终可能会超过500M,那么选用MySQL是更好的选择。
MSDE就不用考虑了,性能不提也罢......
关于数据共享:加个同步功能,更改后的数据集中到服务器。可由用户手动运行或打开程序时自动更新。
 
to jrq:
最初就希望采用oracle+midas,当然,这是减少麻烦的最好的办法。但是事实上有以下
困难:(1)客户端很多,且地理位置不集中,有的相距较远。一般用户不会oracle。若全
靠我们去安装维护,真是累人。你也知道,单机上安oracle和配置专门的服务嚣就不是
一会事了,单机使用什么麻烦不会出现。不仅是第一次安装麻烦,以后呢?难以想像....
(2)正版软件费用怎么算?这个oracle算什么?Z版还是D版的?
若把oracle改为sql server或mysql可能好些。当然,若你有成功的使用oralce单机三层
的经验,请继续指教!谢谢!
用access其实是很无奈的,唉!
to evod:
老兄的指点很有参考价值。
(1)哪儿有使用access的vbscript的资料,能否给个示例。
(2)听说mysql不错,且免费,但关键是安装、使用是否方便?
(3)关于数据共享,能否说得再详细点?
请继续指教!谢谢!
 
不能上网,用三层干嘛,劝客户上网吧,你开发这个程序的费用还不如开通网络便宜啊!
适当的时候要引导一下客户嘛!!
 
呵,一台电脑也可以三层啊。
 
有三层经验,要转为桌面型很快嘛!几天就成!
 
选择方案1,改动量小,时间就是¥[:D]
 
我觉得(1)比较实用,另外也可以考虑让用户采取拨号登录方式。
 
单机版用ORACLE是很可笑的事情,ORACLE是JAVA做的大型数据库,占用资源很厉害的
关于数据库的选择,要看你原来数据类型的设置:
1。如果数据库的内容不多可以考虑用ACCESS,但原版用了存储过程,所以不能考虑。
2。如果原来ORACLE中有一些VARCHAR2的数据类型且长度在255和4000之间,ACCESS不能考虑,
只能用MYSQL
3。如果用MYSQL,请注意它不直接支持ADO,只能通过ODBC,但原版用了存储过程,所以不
能考虑
4。方便地实现单机版与网络版的数据共享,怎么可能?真正意义的数据共享只适用于大型
分布式数据库,并且在数据库层要做很多触发器的(麻烦),如果只是在桌面数据库做
“已上传、已下载、已修改”的MARK字段,嘿!你程序的工作量·#¥%……
5。考虑一下这样的情况如果你改变了单机版上的数据的某条记录,而网络版的该记录也被
其他人修改了,算谁的,你怎么处理?再反过来说,网络数据的某条记录已复制到单机
版上,之后又有人在网络版上修改或删除了这条记录,怎么办?单机版的用户也修改或
删除了这条记录,怎么办?、、、、、、、、怎么办?、、、、怎么办?
6。用户之所以要求做单机版,肯定会有脱离网络运行的情况,做分布式数据库又是一个
“不可以”。
7。
8。
唉!!!!!!
我不再列了,只能给老弟你一个建议
1。单机版采用C/S结构,重新做一个,尽量说服用户很少或根本就不要在单机版维护数据,
只做查询
2。上传和下载数据模块的编写要很小心,原网络版的数据库的所有的表也要相应加入
“已上传、已下载、已修改”字段
3。新的桌面数据库的表用新的ID,原表中的ID保留做对比用。
4。修改原网络版的数据维护程序,特别是修改,要在记录中标记“已修改”,并且要有
日期
5。
6。
唉,我不想多说了,工作量大,我就是这样作过的,我想不出更好的办法,
不这样不能满足用户的“非分要求”,好的我的系统比较小啦(万幸万幸)

对于这个问题,如有更好的办法,请指教(hanahalu@etang.com)
 
就让用户使用win2000,然后在单机上使用三层结构也行.
 
1.我也支持用第一种方法,因为在数据类型的差异上来说,access和oracle的差异相对较大,
而且本身对大数据量的各种操作效率不高,如果系统可以简化一些功能或者数据操作不多的话
,可以重新用Access开发一套(同时需要一套数据共享系统);相反,如果重新开发有一定
难度的话,建议采用第一种方法;
 
就算是本地三层,数据冲突如何处理,就像hanahalua所说的
建议看看公文包模式的使用
三层结构都支持公文包模式,在本地存放DELTA数据,联网的
时候同步,只要修改一下冲突处理的弹出界面,还是能解决,
不过,需要将所有查询表都转换为公文包模式,如果是动态
窗口的话,呵呵,够你改的了
 
我猜这个项目本可以就是个单机版, 对数据同步共享要求不高,
不然就没有做单机版的必要。
从软件设计来说,是否应设计一个抽象的数据连接层,将界面、业务逻辑与具体的数据库分离。
并且不要用存贮过程。
这样无论用什么数据库、分布还是单机,重写数据驱动部分基本就可搞定。
 
你数据库改变了,那么你的存储过程岂不就要白写了,建议你使用Oracle的旧一点的版本
可以装在98上的
 
当然选择第一种方案。嘿嘿,又是一个调研不彻底的案例。实施难度很大啊,不一定都采用
程序解决,人工干预一下嘛,没上网的可以上,没条件的可以创造条件。怎么干都挺累。
同情。
 
单机就使用intrbase就行,delphi就自带IB的控件,intrbase安装简单,支持存储过程,
你的程序改动量是最少的,使用intrbase不仅可用单机,在小范围内还可以是网络版的
基本上不用改动程序。
 
多人接受答案了。
 
后退
顶部