本人现要做一个人事薪资管理系统,要求以web方式实现,能够在广域网上使 用,现在有一个问题:要求人事管理部分的数据存放在数据库服务器中,但员工薪资档案部分要求存放在一个客户端的本地机器上,可能使用access数据库,而且薪资档案数据库中的部分数据需要能够从人事管理数据库中进行复制(为了保持一致,但又无实时性要求),这样人事档案部分的数据存取通过中间层既可实现,但中间层好像无法对本地数据库进行操作,不知使用何种方法能够实现?望高手赐教,谢谢!
是中间层,主要实现业务逻辑。对三层我的理解是客户端通过中间层获取数据 (因为它本身并不直接同数据库服务器打交道),如果要对客户端机器本地数 据库进行操作,也就可以理解为通过中间层对本地数据库操作,那么位于中间 层的那些程序如何访问客户端本地数据库呢? 可能我对三层的了解比较少,很多东西不是很清楚,请指教! 再请教中间件通过何种方式对客户端本地数据库进行操作的,谢谢!
1、该客户端主机在系统内是否为个别。 如果是这样,我建议将该主机逻辑上承担两种角色(客户机、数据服务器)。这样可以保证前端程序一致性和数据操作权限控制。
如果不要求数据完全实时,是否可以专门做一个数据获取的客户端程序安装在该客户机上,由人工或系统定时向相应数据服务器进行数据采集。只是身份认证要求麻烦一些。
需求:大概是一个集团公司下有很多各分公司,或一个公司有很多个办事处,要求以web方式在广域网上实现人事薪资的集中管理,但要求薪资档案、每月的员工薪资情况不能放在统一的数据库服务其中,而放在各公司或办事处的会计所使用的计算机中 的确,该机器肯定只有一台。 如果是局域网,把该机器作为一个数据库服务器是可以解决问题,但是如果使用该机器的人员更换机器就麻烦了,每次还得记着修改中间层的数据库连接配置,感觉不是很理想。 如果是广域网我不知道中间层的程序能否找到它
不想当作服务器,又不能安装应用程序,那只能通过Applet或Active控件方式下载到客户端对本地数据库进行操作,不过客户机的安全设置级别要求很低。可否?
这种方式我有一个疑问,就是下载到本地的话数据库配置文件是不是应该放到系统目录下,我如果要同时连接本地数据库和数据库服务器(因为有时候要进行数据的手工同步)怎么办? applet是不是也可以像普通的客户端程序一样与应用服务器进行数据交换,如果直接通过applet连接数据库服务器和本地数据库进行两个数据库间的数据复制是否更好(不通过应用服务器),能否实现? APPLET是不是只有在安全级别很低的时候才能对客户端本地文件进行读、写操作?
如果这样你的应用就不是三层能够解决的问题了。在数据库上面再垫一层(你可以使用,dcom,corba等中间件,也可以不用)
大虾: 其实b/s的s不是僵化的概念。任何提供服务的端都可以叫s。按你的说法其实就没有客户端,用户是在一个服务端操作,并且数据库是分布的。不知我的说法你能否理解。 再有,为什么那么迷信b/s呢?很多好的mis都是c/s的。按你的说法,窃以为用c/s实现更好一些。
直接按需要做服务端的逻辑层,然后根据数据读写的需要做一个数据层,连接那个只是小问题,做一个设置文件就可以灵活变化,最后根据客户端的傻B程度做一个友好的应用层,就可以交货了。 不管什么广域,局域,什么数据库变动,你想得实在太多了。就这么做够了
两种方法. 可以考虑web service 的体系结构形式.借助XML/SOAP来解决. 考虑一下,建立数据库层的分布式连接,在你的三层结构中,不要考虑数据分布问题.
AvciveX可以方面的操作客户端的数据库,可以要求数据库放在一特定目录,或让AvciveX去自行搜索! AvciveX也可按指定的IP地值直接联结(ado)远程数据库,或将数据post到你的中间层,有中间层进行数据的存取。 您认为可行否?
在广域网上从安全性角度来说数据库服务器可能不是直接挂在网上的,因此通过客户端可能无法实现通过指定ip地址来访问数据库服务器。 将数据post到中间层,我不知道activeX具体如何实现对中间层数据的处理,能否讲的详细点? 是否用applet也可以实现activeX的工作?
既然是集中控制的人事薪资管理系统,为什么要把数据放在下属部门呢? 谁会访问、使用这些数据?如果只有各下属部门、子公司自己使用,为什么要用集中式的系统和B/S架构? 如果有不同部门使用,又为什么要把数据分散? 这样分散的数据和B/S架构是不相容的。 两个选择: 1. 数据集中,所有的数据都集中在公司总部。 2. 各分公司、办事处使用C/S架构的应用,开发数据上传软件,把必要的数据上传公司总部。 B/S架构确实可以避免安装客户端软件,减少维护工作。但如果把数据库放在客户端,这个好处也就被抵消了。 如果是Access,中间件通过广域网访问的可能性几乎为0。
非常抱歉,我只是知道一些原理,具体实现未做过,所以无法回答你的问题。
比如说内地数据库是不能直接访问的,那么你可以有个中间层,如果需求简单的话搞个app server就行了,如果用servlet的话,你就写个入口函数,专门处理post来的数据,基本上采用xml的方式比较易懂。如你的客户端要提交数据如1xx.....将这个xml以字符串的方式post到中间层,中间层解析并调用中间层的其他相应的数据库操作类来进行相应的处理。至于取也就是个逆过程。至于applet签名的应该是可以的,至于安全设置怎么设,我不是很清楚。
一般来讲,B/S结构的特点就是便于维护,但在客户端需要有复杂的本地磁盘读取操作的,虽然可以用ActiveX之类的技术实现,但涉及安全性问题。我觉得还是用C/S更好。象你这样的需求,其实还是要涉及客户端数据库维护的问题,与其用B/S,还不如用C/S。对特殊的有限的用户,提供一些C/S工具也未尝不可。
制作一个ActiveX控件,用他访问客户机的数据库,然后将数据传递给业务逻辑,业务逻辑(中间层)去更新中心数据库,这难道不是完整的三层结构?
您说得很对,B/S结构其实初衷是用户不需要动任何东西(包括安装),但是你需要操作本地的文件、数据的话只能这样做了。而且安全设置只要将activex下载安装后,就可以改回去了。当然,用签名的话就没有这个问题了!