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())
一切搞定,如有疑问欢迎留言