none
net remoting中dataset序列化问题 RRS feed

  • 问题

  • 使用 net remoting技术创建局域网内的分布式应用程序,对于dataset的数据传输,本来我的方式是编写

    获取数据的函数时指定RemotingFormat= SerializationFormat.Binary;如下
    public dataset GetDataset(...){
    ....
     ds.RemotingFormat = SerializationFormat.Binary;
    ...
    return ds;
    }
    后来在网上看到使用webservices传输数据时,对于大数据量的dataset,还要进行二进制序列化处理,更

    进一步的还使用了DataSetSurrogate以提高性能,甚至还用到了压缩。我就怀疑我的那种用法似乎是不正

    确的,起不了什么作用?是吗?(问题一)
    又看到有关资料中说:当使用tcp通道时,默认为二进制序列化。那么是不是意味着不用再考虑二进制序

    列化和反序列化问题?(问题二)

    2010年8月29日 3:05

答案

  • 是这样的。 Dataset本身是可序列化的,你可以不关注些细节。

    只是它比较重量级,所以在数据量大的时候需要做压缩处理。

    也可以用自定义的实体类进行传输,比Dataset要好一些。配置序列化方式:

    <configuration>
      <system.runtime.remoting>
       <application>
         <channels>
          <channel ref="http">
            <clientProviders>
             <formatter ref="binary"/>
            </clientProviders>
         <channels>
       </application>
      </system.runtime.remoting>
    </configuration> 
    • 已标记为答案 Mog Liang 2010年9月22日 1:08
    2010年9月8日 10:07

全部回复

  • 是不是使用 net remoting技术编写c/s应用使用tcp通道就不用管系列化问题? ds.RemotingFormat = SerializationFormat.Binary;这一句也是多余的了?
    2010年9月1日 1:30
  • 是这样的。 Dataset本身是可序列化的,你可以不关注些细节。

    只是它比较重量级,所以在数据量大的时候需要做压缩处理。

    也可以用自定义的实体类进行传输,比Dataset要好一些。配置序列化方式:

    <configuration>
      <system.runtime.remoting>
       <application>
         <channels>
          <channel ref="http">
            <clientProviders>
             <formatter ref="binary"/>
            </clientProviders>
         <channels>
       </application>
      </system.runtime.remoting>
    </configuration> 
    • 已标记为答案 Mog Liang 2010年9月22日 1:08
    2010年9月8日 10:07