net 网站新建webservice,客户端调用,用法详解

关于新建webservice的例子,这里不赘述,重点是调用过程中,一些注意事项

.net记得添加服务引用,

.net记得添加服务引用,

.net记得添加服务引用,

新建服务,很大程度上是要跨平台使用,因此并不能直接返回诸如,datarow,datatable之类的数据集合,

跨平台序列化

跨平台序列化

跨平台序列化

解决方法是,序列化,某位大神说过,跨平台,不序列化,需要面壁思过,

这里实现的方式,转为bytes[],同时需要注意,进行解压步骤,数据量大,节省宽带,

服务端,和客户端 解压缩,要一致

服务端,和客户端 解压缩,要一致

服务端,和客户端 解压缩,要一致

 

相关方法和代码

 protected DBSERVICE.connDBSoapClient conn = new DBSERVICE.connDBSoapClient();
//.net 记得添加服务引用,才能调用
//.net 记得添加服务引用,才能调用
//.net 记得添加服务引用,才能调用

 /// <summary>
        /// 序列化
        /// </summary>
        /// <param name="data">要序列化的对象</param>
        /// <returns>返回存放序列化后的数据缓冲区</returns>
        public byte[] Serialize(object data)
        {
            BinaryFormatter formatter = new BinaryFormatter();
            MemoryStream rems = new MemoryStream();
            formatter.Serialize(rems, data);
            return rems.GetBuffer();
        }

        /// <summary>
        /// 反序列化
        /// </summary>
        /// <param name="data">数据缓冲区</param>
        /// <returns>对象</returns>
        public object Deserialize( byte[] data)
        {
            BinaryFormatter formatter = new BinaryFormatter();
            MemoryStream rems = new MemoryStream(data);
            data = null;
            return formatter.Deserialize(rems);
        }

//需要自己写相关的压缩,解压方法,这里采用的公司封装的zip压缩方式

//需要自己写相关的压缩,解压方法,这里采用的公司封装的zip压缩方式

//需要自己写相关的压缩,解压方法,这里采用的公司封装的zip压缩方式
   public  byte[] getbyte(DataSet dataSet)
    {
        DataSetSurrogate dss = new DataSetSurrogate(dataSet);
        BinaryFormatter ser = new BinaryFormatter();
        MemoryStream ms = new MemoryStream();
        ser.Serialize(ms, dss);
        byte[] buffer = ms.ToArray();
        byte[] zipBuffer = new CompressionHelper(CompressionLevel.BestSpeed).CompressToBytes(buffer);
        return zipBuffer;
    }
        public DataSet getdateset(byte[] zipBuffer)
        {
            byte[] buffer = new CompressionHelper(CompressionLevel.BestSpeed).DecompressToBytes(zipBuffer);
            MemoryStream br = new MemoryStream(buffer);
            BinaryFormatter bf = new BinaryFormatter();
            object o = bf.Deserialize(br);
            DataSetSurrogate sds = (DataSetSurrogate)o;
            DataSet ds = sds.ConvertToDataSet();
            br.Close();
            return ds;
        }

//调用相关
conn.Insert(Serialize(ht), "DW_PHONE");

  //select * from DW_PHONE
            byte[] bys = conn.GetDataTable(@"select  b.RealName 沟通人员,case when [Type]='2' then '呼出' else '来电' end 类型,
case when a.state=1 then '已接' else '未接' end 状态,
cast(Times/60 as varchar(8))+'分'+cast(Times%60 as varchar(8))+'秒' 沟通时长,FollowAbstract 产品摘要,AbstractContent 内容摘要 from DW_PHONE a
left join Tb_Common_User b on a.WorkNo=b.WorkNO");
            DataTable dt = getdateset(bys).Tables[0];

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值