我以前开发的主要使用了com+技术,c/s 三层结构,数据库操作也主要是用存储过程,现正在学习.net,都说dataset采用离线访问技术,可我总感觉在性能上差别不大啊,也不如直接调用存储过程来得顺手,各位的高见呢?

解决方案 »

  1.   

    你可以把数据用存储过程读到dataset,然后对dataset里的datatable进行处理,譬如修改,删除,添加,当你的数据量很大的时候,如几百万条的时候,效果应该比较明显
      

  2.   

    主要是提供了更好的编程模型。==》如几百万条的时候,效果应该比较明显
    这个放到DataSet里面恐怕比较耗内存吧?
      

  3.   

    (1)。
    离线状态是指DataSet是把ado.net采用无持续连接访问方式,并且DataSet取得数据后
    虽断开连接,但它的数据还保存.   在对DataSet记录集进行操作时,不需要一直维持着
    连接。当更新到数据库时,再打开连接(2)。如果调用用WebService,DataSet可以XML序列化,专门用来传递数据库数据信息.
      XML WebService和SOAP标准支持的数据类型
      不知道读者有没有遇到这种情况,在调用WebService并给一个方法传递了一个DataRow参数时,运行
      时会抛出异常: "没法将参数序列化!",如果把DataRow加入到DataSet中,并将DataSet作为参数
      传递再运行就OK了。 这是因为:XML WebService只能对数据集DataSet对象类型进行XML序列化,
      不能对DataRow对象类型进行XML序列化造成的错误.  所以了解一下XML WebService支持序列化的基
      本数据类型是比较重要的.它支持的数据类型如下:
      1.基本数据类型.  
          标准类型,如:int float bool DateTime string等基本数据类型
      2.枚举.
          支持枚举Enum定义的类型
      3.自定义对象.
          可以传递任意基于自定义类或结构创建的对象。 但要注意一点: 它只能传输数据成员(变量和属性).
          如果定义了方法,则方法不能进行序列化传输,序列化后只剩下数据成员.
      4.DataSet对象
          支持DataSet,切记:不支持DataTable和DataRow,DataSet已经是XML Webservice能够支持的最小的可序列化对象.
      5.XmlNode对象
          基于XmlNode的对象可以表示XML文档的一部分.
      6.数组和集合
          可以使用任何被支持的类型的数组和简单集合,包括: DataSet对象/XmlNode对象和自定义对象.对程序员来说感觉到差不多一样,但不管在应用程序,还是数据库性能上都有所提高
      
      

  4.   

    可是使用dataset来修改,增加数据时,怎样来体现诸如事务等操作呢?是不是对dataset填充表结构后,诸如数据规则、索引也要重新设置?那好像也增加了编程的工作量?
      

  5.   

    视情况而定,DataSet在某些方面(例如大量数据的更新同步,对数据进行非常复杂的处理),用起来非常方便,因为它是离线的,你想怎么弄就怎么弄。但是在数据实时操作,事务处理,数据检索,聚合等方面就比较麻烦了。