正在学习写一个三层系统,对Midias安全问题有点疑问:我用的ADO+DataSetProvider+SocketConnection+ClientDataSet客户端只要知道IP和端口号,就可以获得DataSetProvider列表,进而威胁数据库不知以下方法能不能解决这个问题:
1、DataSetProvider的AllowCommandText属性舍为False,不接受客户端的SQL语句;
2、客户端只通过DataRequest提交参数和接受返回的查询结果,在DataSetProvider的OnDataRequest事件里进行查询和返回;但这样做的缺点是只能传一个参数。
3、根本不用DataSetProvider,在服务器端自定义方法,客户端通过AppServer调用相应的方法,传递参数和接受查询结果。在参数传递和查询结果返回方面我也有点问题:
  在服务器端如何定义一个可以返回查询数据的方法?
  客户端的ClientDataSet同AppServer调用该方法后,如何将得到的查询数据放到Listview列表里面??  盼望熟悉三层开发的朋友现身指点,分不够开贴再加,谢谢~~~~~

解决方案 »

  1.   

    呵呵,你知道三层架构是干吗的吗?? 为什么要用三层架构?? 你做的东西用该架构的目的和意义是什么?  从这些角度去选择和使用哪种方式的三层架构才是、才能体现(了解)多层的分布式系统。
    当然了,从你上面写的看,想要安全,用DCOM连接,恐怕连你自己想连接都不容易,用自带的SocketConnection连接,也太简单了
      

  2.   

    to 小老头:   谢谢!因为我的系统要通过互联网进行使用,所以三层是必要的,至少要保护数据库安全,因此才有了以上这些疑问。
       至于为什么用SocketConnection连接,的确简单,对你而言。对于我等初学者,呵呵,想把系统写好,也是一块难啃的骨头啊。
       如果有时间,还请解答我的问题,谢谢!
      

  3.   

    如果不是局域网的话,用web service做吧,比用这个连接有技术含量,还是能学点东西的,另外,客户端不要想着直接通过某个连接连到数据库,想偷懒的话,可以将数据集获得的数据用savetofile , 之后处理, 通过web service到客户端后在loadfromfile回来,或者直接用XML解析数据集发到客户端去(如果说你用socket连接的话,还不如直接将服务器的数据库开放出来,那样你就直接可以做客户端连接数据库了,就一般的C/S程序了)
      

  4.   

    先将服务器端的DataSetProvider 和 dataset 之间的关联断开,然后写一个过程进行连接,在客户端的SocketConnection连接后,调用服务器端的这个过程。