看到这个题目也许有朋友会问对数据访问层扩展为分布式有没有意义不管怎样到最后都是对数据库进行访问瓶颈在数据库上对于这个问题我答案是“我们提供分布式查询能力然后和缓存Cache结合让数据库中数据缓存Cache起来”解决这个问题后我们来进入正题如何对数据访问层进行封装其实数据访问层思路方法我们常用是ExecuteDataExecuteNonQueryExecuteReaderExecuteScalar等这 4个思路方法
2:类图
图片看不清楚?请点击这里查看原图(大图)
3:原理
WCF中可以返回序列化对象而DataRead是不能被序列化(网上有人说可以让个序列化对象持有DataRead属性这个思路方法根本不行)
这里我们就说说如何通过WCF来返回DataReader
看过底层代码(.Data.SqlClient)都知道微软在实现ExecuteReader这个思路方法时候是用了个类似于游标东西每Read次游标就向下走行
这里我们可以借鉴这个思想我们首先把所有IDataReader中思路方法定义到契约中然后让客户端实现该契约这样客户端每Read次服务端也同样Read次这样我们就可以获取到该行相应字段值了不过这种思路方法要求WCF例子模型是PerSession而并发模型是Multiple
4:些问题
WCF在开启信道时候如果通过这种思路方法
ChannelFactory<IAdoHelper>(EndpoconfigKey).CreateChannel;
在压力测试时候会报错只有通过以下思路方法
ChannelFactory<IAdoHelper>(bind, address).CreateChannel;
还有就是WCF中信道池不知道如何开启MaxConnection好像不起作用因此自己就实现了对象池来解决信道池问题
最新评论