DataTable in WCF
来源:互联网 发布:多多软件站网页 编辑:程序博客网 时间:2024/05/16 23:02
在客户端与服务器之间交换的服务契约中,最常见的一种数据契约类型是数据库的类型。
在WCF中,我们可以定义DataSet和DataTable类型的服务契约。
【OperationContract】
DataTable ×××();
但是我在写程序的时候发现WCF不能传递DataTable类型。
解决方法或许有两种:
1)为DataTable赋一个TableName
2)声明DataSet类型服务契约,将Table添加到DataSet中,然后返回客户端,再引用DataSet中的表。
我使用了第二种方法,测试通过。不过看到网上一位台湾朋友试过第一种方法也是可以的。
BTW:本着SOA的原则和传输效率之类的考虑,不要在WCFServices中使用DataSet或DataTable作为数据传输载体。当然了,如果你的程序不跨平台(.NET--.NET)的话,DataSet之类的类型可以很好的工作,但是这时传输的数据量是比较大的(预设的MaxReceivedMessageSize为65536,視需要將 maxReceivedMessageSize 屬性調大並且將 maxBufferSize 數值與 maxReceivedMessageSize 需一致,預設 Binding 為 wsHttpBinding,若不考慮安全性可改為 basicHttpBinding 或是使用效率最好的 netTcpBinding )。
上述情况还有可能暴露内部的数据结构。同时,将来对数据库样式的修改会影响到客户端。通常情况下,更好的做法是暴露数据的操作而非数据本身。如果需要传递数据本身,最好的方法是使用与数据结构无关的类型,例如数组类型。(摘自《WCF服务编程》)书中还提供了一个DataTableHelper类,以解决这个问题。
所以,我们根据自己要实现的功能,按照数据契约的格式定义自己的数据契约,这样序列化的效率会高一些,而且节省了传输开销。毕竟DataSet和DataTable中包含了很多我们并不需要的信息。
转自:http://hi.baidu.com/kohlniu/blog/item/8daa09fcd455044cd6887da1.html
- DataTable in WCF
- WCF返回表datatable时的解决
- WCF 中DataTable序列化失败
- WCF来传递DataTable的Bug
- wcf返回datatable必须给tablename赋值
- handling faults in WCF
- Globalization Patterns in WCF
- Error handling in WCF
- Impersonation In WCF
- MSMQ In WCF
- Overloading Methods in WCF
- Unhandled exceptions in WCF
- Instancing modes in WCF
- WCF wsHttpBinding in SoapUI
- Understanding the WCF in ‘WCF RIA Services’
- Port Sharing Features in WCF
- Host WCF Service in WAS
- WCF Addressing In Depth Note
- V_AllTable 表信息 数据库 SQL2008
- 关于鼠标事件坐标位置的几个概念
- 一个简单的图片预览
- 怎样把e.printStackTrace()这个异常保存到一个字符串变量中如:String str;
- Excel VBA 编程-1 运算符
- DataTable in WCF
- andorid开发的一些设置2个小细节
- iphoneでsqlite3作業
- JQUERY的ajax跨域访问解决方案
- 哈佛大学图书馆凌晨4点[自励共勉]
- javascript在不同浏览器中的类型测试实验(跨浏览器编程要注意了!!)
- java实现子网掩码转换为网络标识位
- 获取多个圆的圆心
- ubuntu 9.10装中文输入法