最近接到一个项目,数据库需求比较怪异,数据库是直接使用客户的。打个比方,可能不太恰当:有10个客户,他们都有自己的进销存系统,然后我写了个进销存,能直接套用他们的数据库直接使用
而他们的数据库由于是不同厂家开发的,所以数据结构不太相同,但所需要的数据基本还是能取到的。
这样的需求数据层应该如何设计比较好!
不知道大家有没有遇见过,或者有比较好的意见给点拨点拨,小弟感激不尽了!

解决方案 »

  1.   

    做一个Webservice,针对各数据库处理,前台调用ws,多个数据库结构,重复的工作量
      

  2.   

    我的例子供你参考:我们单位有个ERP,有自己的数据库。我做网站用到ERP的数据。经过协商我们建了一个中间数据库,ERP每天定时执行一个存储过程,把相关数据调到中间数据库里,供网站使用。
      

  3.   

    解决方案?只要一句话就解决了,看不明白我也没有办法。你的BLL方法该调用几个数据库就调用几个数据库。而为完整这个项目拿到钱而最初设计表现层是,设计可以自由地访问BLL,先用写一些“假的”实现来让BLL运转起来,而并不需要半点纠结于无关的所谓10种数据库的问题。这就是“解决方案”。如果不是及其简单的东西,也谈不上这个问题的解决方案。也许许多人只承认尽可能多堆砌大公司的服务器产品的方案才叫解决方案。
      

  4.   


    同意。对于设计c/s系统就是如此简化即可。注意我指的不是使用一个c/s数据库的开发,使用这类关系数据库之后程序员就可以在本地调用关系数据库接口进行操作,由于程序员从来不亲自定义功能服务接口(作为通讯规范发布给不同客户端平台),于是就容易忘记了分层概念。
      

  5.   

    sp1234,你说挺对的。
    我初步想法也是不想太纠结于这个数据层怎么设计,先拿一个数据库来写,把整个软件的界面和业务逻辑那块都写好,保证OK。然后数据层这块就可以独立出来解决了。实在不行,最笨的办法一个数据库写一套也可以,呵呵~··然后关于这个数据层,我不太赞成用orm,因为表结构有差异,而且说不定有的表结构定义可能差很远。
    反正都能取到大概需要的信息,是不是直接用一个兼容多种数据库工厂类+sql语句,来得更简便?或者有更好的办法?
      

  6.   

    软件是BS架构,我本来是想把数据层全部用wcf写,然后就像11楼说的定义好数据通信接口,但这样就会跨进程访问数据接口,担心会有性能上的损失,但不知道你们的看法如何?
      

  7.   

    B/S就不能用WCF了吗?WCF只有宿主的概念没有什么C/S、B/S,哪里来的什么“跨进程访问”...
      

  8.   

    10、主持人:利用WCF,不同系统之间可以进行通信,同时,层与层之间也可以基于WCF来进行通信。对于UI层与BLL层之间的通信,如果是基于WPF或 WinForm的C/S架构,那么基于WCF是非常方便的,但是如果是B/S的架构,ASP.NET页面与业务逻辑层可能部署在同一个IIS中,以前可以直接基于API来调用业务逻辑层,现在有无必要也基于WCF来实现? 赵劼: “分布式应用的第一条准则就是不分布式”,分布式通信相对于进程间通信的确会带来较为明显的性能降低,像您说的情况,比如ASP.NET的Web层和业务逻辑,很可能就不应该使用WCF来通信。事实上,如果用Java一脉的技术来说,以前EJB远程访问横行,但是现在的互联网应用几乎都不太适用EJB了,而是使用 Struct、Spring等轻量级框架,因为远程通信代价很高。
    张逸: 选择某种技术,首先要看其具体应用的场景和需求,而不是觉得这门技术好或者新就选用。对于B/S系统而言,如果需求没有要求其他系统采用服务的方式调用该B/S系统,那就没有必要采用WCF 技术。最合理的方式是,在B/S系统中,专门设计一个服务层,体现所谓面向服务的特点,这个服务层中的服务相对粒度较粗一点,而且应该是其他系统可能会调用的。我们可以事先考虑到这一层的设计。它并不一定是B/S系统内部调用,而是考虑未来的扩展。
    ------------------------------首先我承认wcf我了解的不是很多,我是看到这里才产生的一些顾虑!具体用不用wcf,肯定还是需要好好了解下这个技术才能够下定论的。呵呵~··
      

  9.   

    你得先理解这个问答的背景...这段话是在说部署在同一物理层的单一系统或向外部系统提供服务的单一系统...与你的需求完全不是一回事...关于WCF...你把它理解为ASP.NET Web Services+.NET Remoting的合体就容易明白了...B/S也好C/S也好只是宿主的不同...
      

  10.   

    然后关于这个数据层,我不太赞成用orm,因为表结构有差异,而且说不定有的表结构定义可能差很远。
    反正都能取到大概需要的信息,是不是直接用一个兼容多种数据库工厂类+sql语句,来得更简便?或者有更好的办法?-----------------------这块有什么好的建议吗?呵呵
      

  11.   


    10个客户都有自己的进销存数据库,所需要的数据应该是统一的吧。
    按照需求的数据建数据库,然后定时采集信息到这个数据库。定时采集可以做一个windows服务或者WinForm