专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Web Service

请问精通WCF的技术大牛

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
请教精通WCF的技术大牛。
我现在需要用WCF作一个同步服务,就是把客户端的数据库和文件跟服务器的数据库和
文件相互更新。我们的客户都在条件特别恶劣的地方,也就是说,网络的带宽不仅窄,
而且流量费用巨高,所以需要尽量减少流量。我们公司的技术大牛(Lead Developer)
已经做过类似的同步服务。他的做法如下,不管是数据库的数据,还是文件,他都把它
们转化成byte[]。如果是数据库的数据,他把它们压缩成byte[],如果是文件,就把他
切成一块一块(chunk)传送,我查了一下他的设定,绑定直接用的是wsHttpBinding,里
面用的都是缺省的设置。我想问一下大牛,他的这种做法有没有问题啊?

我这两天一直在琢磨,上网查资料,我总感觉数据库的数据和文件应该分别对待,数据
库的数据可以用wsHttpBinding,但是文件应该用Stream来传输(wsHttpBinding不支持
Stream),现在的问题是basicHttpBinding的Security好像不容易搞定,要知道,上传/
下载文件也需要传递用户名和密码,然后根据服务器里的数据库数据来决定是否授权。

请指点迷津。
------解决思路----------------------
验证其实可以很简单,wcf接口参数里面包含登录名和密码hash就行了。至于压缩也很简单,微软提供了一个Gzip的样例,一般的数据压缩率是10%以下,10M的数据实际传输不到1M。别的你就不用纠结了,二进制肯定是数据量最小的。
------解决思路----------------------
不同的绑定方式传输速度不一样的
------解决思路----------------------
数据库的话,本来一些数据库就有同步的数据的功能,去查询这方面的资料吧

文件的话,用FTP不是挺好的么,如果可以的话,自己写Socket更好了

------解决思路----------------------
做法没什么问题。文件切块是避免太大导致传输中断而重新传输之前传过的内容。
stream本质也是byte[],只是它对调用者隐藏了分批的I/O操作;且WCF记得你用stream类型,客户端引用的时候也是作为byte的,这个你不要纠结这种对你的问题来说无关紧要的部分。
如果你非要改进,可以给数据库加CRC或者其他类型的校验,避免数据因为恶劣的网络环境而出错(其实主要是校验完整性)。其次,可以考虑压缩数据流。一个WCF传输的数据(XML)使用zip压缩后可以缩减到原来的1/10(我的项目中的测试结果)
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: