请问精通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(我的项目中的测试结果)
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
这是一种动态图形人机界面(HMI)
传统的HMI人机界面一般是采用很多ActiveX控件堆放在一个画面上,每个ActiveX控件执行一个功能(例如曲...
-
数据库存了图片路径,获取时出了问题
我有两张页面,我的图片保存在sshh文件夹中,当主页要用到图片时候,路径是对的:web1/sshh/ss.jpg
但...
-
web Service 验证方式,该如何选择?
公司要开放WEB SERVICE,看了许多发现验证方式有:使用SoapHeader传递和验证用户、使用验证票(Autho...
-
Web Service 参数问题
我有三个工程,一个是类库A,一个WebService B,一个是应用程序 C
假设A中有一个类a,B中有两个ASMX b1,b...
-
打包WebService程序
我希望能把我的WebService程序制作成安装包,安装时能够自动建立网站运行,什么打包工具可以用,谢谢了!
------解...
-
Web Service 要增加附件 怎么做?
Web Service 通信时如果要增加图片或是声音文件 要怎么做?
最后附上代码
------解决方案--------...
-
wcf开发restful的服务
那位高手知道有wcf开发restful的服务的资料、源码、视频,请告知一下,不胜感激
------解决方案-------------...
-
ws在IIS上面发布之后,运行报错
我的代码如图,我就是写了一个简单的方法测试而已
在IIS上面发布之后如图
然后我右键预览,就出这个...
-
为什么ajax的webservice的后台文件必须放在App_Code目录下?
如题。放到其他地方就会报错。
------解决方案--------------------
...
-
刚接触WEBSERVICE,有问题特来请教前辈(关于发布)
最近公司要求使用WEBSERVICE,以方便以后的扩展,因此来学习下这个,但是现在看了蛮多例...