明辉手游网中心:是一个免费提供流行视频软件教程、在线学习分享的学习平台!

WCF 的使用与经验总结

[摘要]在项目设计之初没有考虑到网络安全因素,因为在广达都是基于内网开发所以不用考虑网络安全,但现在我们的服务器都放在公网上,数据库和网站是在不同的server上,而且数据库只能由网站一台server能够访问,这样我写的一些客户端程序就不能使用了(客户端是直连数据库的),为了适应这种变化不得不改写之前的程...

在项目设计之初没有考虑到网络安全因素,因为在广达都是基于内网开发所以不用考虑网络安全,但现在我们的服务器都放在公网上,数据库和网站是在不同的server,而且数据库只能由网站一台server能够访问,这样我写的一些客户端程序就不能使用了(客户端是直连数据库的),为了适应这种变化不得不改写之前的程式,值得庆幸的是我的程序时采用三层架构,所以只需要再写一个server 端专门来处理数据得读写就可以了,也就是把数据层拿出来作为服务器端。

开始有想过用web service,但是发现web service 效率太低,现在微软大力推荐用WCF,我测试了一下发现效率确实很高,正好也可以学习一下,服务器端就采用wcf通信,试用window service 来提供服务,作为宿主,当然你也可以选择其它的宿主。在设计的时候遇到很多问题,现做一个简单的总结,希望能给你们带来点帮助。

 

1.       在服务器与客户端进行数据交换,我个人喜欢用DataTable,发现在传送的发现不能使用,提示不能序列化,在网上找好多才发现,一定要给DataTable赋一个名字。

2.       DataTable数据量比较大的时候发现会报错,提示timeout,查找资料发现可以修改客户端配置文件来修改接收的数据大小

maxReceivedMessageSize="6553600"  <serviceThrottling maxConcurrentCalls="1000" maxConcurrentInstances="1000" maxConcurrentSessions="1000" />

3.  我采用的是TCP通信,所以如果防火墙开启就会阻止其通信,可以在防火墙中添加例外,或是添加端口例外。

4.  WCF可以传送对象,这一点非常好,但不是所有的对象都能传输,只有能够序列化的对象才能够传输,至于怎么序列化可以参照我上次发的文档,里面有详细的介绍。

5. 在客户端引用该服务的时候尽量不要去改服务的IP,可以在配置文件里修改,开始引用的是什么就什么可以现在本地测试好,就可以直接部署到服务器上,如果不够熟练的话会发生许多奇怪的问题。

 

 

 

 


常见的网络操作系统有UNIX、Netware、Windows NT、Linux等,网络软件的漏洞及缺陷被利用,使网络遭到入侵和破坏。