WCF大数据量传输的详细步骤

1.  新建一个空白解决方案解决方案WcfSolution。

2.  添加一个类库项目DBLibrary

首先添加一个序列化和反序列对象类MySerialize

///
        ///序列化对象
        ///
    public static byte[] SerializeArray(T DataValues)
        {
           byte[] b;
           // 创建一个内存流
           MemoryStream ms = new MemoryStream();
           try
           {
               // 序列化对象
               BinaryFormatter binaryFormatter =new BinaryFormatter();
               // 将对象序列化为内存流
               binaryFormatter.Serialize(ms, DataValues);
               // 设置内存流的起始位置
               ms.Position = 0;
               // 读入到byte数组
               b = new byte[ms.Length];
               ms.Read(b, 0, b.Length);
           }
           catch (Exception ex)
           {
               throw ex;
           }
            finally
           {
               ms.Close();
               ms.Dispose();
           }
           return b;
        }
 
        ///
        ///反序列化对象
        ///
        public static T DeserializeArray(byte[] DataValues)
        {
           T MyDataValues;
           // 创建一个内存流
           MemoryStream ms = new MemoryStream();
           try
           {
               // 序列化对象
               BinaryFormatter binaryFormatter =new BinaryFormatter();
               // 将byte数组到内存流             
               ms.Write(DataValues, 0, DataValues.Length);
               // 将内存流的位置到最开始位置              
               ms.Position = 0;
               // 反序列化成对象,创建出与原对象完全相同的副本         
               MyDataValues = (T)binaryFormatter.Deserialize(ms);
           }
           catch (Exception ex)
           {
               throw ex;
           }
           finally
           {
               ms.Close();
               ms.Dispose();
           }
           return MyDataValues;
        }


其二  添加一个数据结构类DBData(可以根据具体要求来声明)

[Serializable]
    public class DBData
    {
        public double BeginTime;
        public IList TimeSpan;
     
    }

其三 添加一个组织数据类DBHelp

public classDBHelp
    {
       ///
        ///序列化对象
        ///
    public static DBData GetData()
        {
           return new DBData();  // 具体数据自己添加
        }
 
     
    }

3.  在WcfSolution中添加一个类库Services,主要是用于定义契约。

添加一个IGetByte接口

///
    ///服务契约
    ///
    [ServiceContract(Name = " IGetByte ",Namespace ="http://www.weifangyh.com")]
    public interface IGetByte
    {
        [OperationContract]
      byte[]GetDBData();
    }

添加一个GetByte类,实现IGetByte接口

  

  public class GetByte: IGetByte
    {
        public byte[]GetDBData()
        {
           DBData db = newDBHelp.GetData();
           
           return MySerialize.SerializeArray(db);
        }
  }


4.  在WcfSolution中添加一个控制台应用程序Host,主要作用是作为启动wcf程序的宿主。

一.添加一个app.config用来配置服务器设置



 
   
        
            
                
            
        
   
   
   
     
          
            
          
        
        
          
            
          
        
     
   
 
   
   
     
        
          
          
            
        
        
     
   
 

 


二.在Main方法中写启动服务代码

static void Main(string[]args)
        {
   ServiceHost host = newServiceHost(typeof(GetProductssList));
           host.Open();
           Console.WriteLine("服务已启动!");
}


5.  在WcfSolution中添加一个asp.net网站当作客户端。

先把Host宿主运行起来,网站中右键添加服务引用,在地址中输入服务地址http://localhost:8050/GetByte前往然后确定

自动生成web.config配置文件,在这里需要修改些配置,以实现接受大数据量,配置文件如下:


     
     
          
              
                  
              
          
         
     
   
     
        
          
          
            
            
          
        
     
   
   
     
   
 

然后新建page页面,在代码中实现与服务通信获取数据

  

GetByteClient getListClient =newGetByteClient ();
DBData  db= MySerialize. DeserializeArray< DBData> (getListClient.GetDBData())

 

一切搞定,如有疑问欢迎留言

你可能感兴趣的:(WCF大数据量传输的详细步骤)