用REMOTING实现传输一个.RAR或者.ZIP的压缩包怎么实现,能给个思路吗,谢谢

解决方案 »

  1.   

    这个不难,简单的做法是写一个类,属性set的时候调用相关的dll进行压缩,get的时候解压就行了[Soap]
        [Serializable]
        public class RemotingReturnObject
        {
            public object Value  
            {
                get
    {
    if( this.Message != null || this.Tag == null )
    {
    return mValue;
    }
    else
    {
    Type zipType = this.Tag as Type;
    if( zipType == typeof(DataSet) ) // 解压缩 DataSet
    {
    return ZipHelper.UnGZipDataSet(mValue as byte[]);
    }
    else if( zipType == typeof(DataTable) ) // 解压缩 DataTable
    {
    return ZipHelper.UnGZipDataTable(mValue as byte[]);
    }
    else if( zipType == typeof(byte[]) ) // 解压缩 byte[]
    {
    return ZipHelper.UnGZipByteData(mValue as byte[]);
    }
    else
    {
    return mValue; 
    }
    }
                }
                set
    {
    if( value != null )
    {
    Type varType = value.GetType();
    if( varType == typeof(DataSet) ) // 压缩 DataTable
    {
    this.Tag = typeof(DataSet);
    mValue = ZipHelper.GZipDataSet(value as DataSet);
    }
    else if( varType == typeof(DataTable) ) // 压缩 DataTable
    {
    this.Tag = typeof(DataTable);
    mValue = ZipHelper.GZipDataTable(value as DataTable);
    }
    else if( varType == typeof(byte[]) ) // 压缩 byte[]
    {
    this.Tag = typeof(byte[]);
    mValue = ZipHelper.GZipByteData(value as byte[]);
    }
    else
    {
    this.Tag = null;
    mValue = value;
    }
    }
                }
    }public class ZipHelper
    {
    public ZipHelper()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    } /// <summary>
    /// 压缩二进制数据
    /// </summary>
    /// <param name="desData"></param>
    /// <returns></returns>
    public static byte[] GZipByteData(byte[] desData)
    {
    return ZipLib.Compression.GZipByteData(desData);
    } /// <summary>
    /// 压缩 DataSet
    /// </summary>
    /// <param name="ds"></param>
    /// <returns></returns>
    public static byte[] GZipDataSet(DataSet ds)
    {
    return ZipLib.Compression.GZipDataSet(ds);
    }
    .......