查看文章 |
在Silverlight 2中有三种网络通信机制:WCF、通过WebClient和HttpWebRequest的直接Http通信、使用Sockets的相对原生态的通信。在Silverlight 3中增加了本地通信模型。
使用WCF最基本的必须了解ABC(Address,Binging,Contract),在Windows7下自动生成的web.config与其他OS略有不同。
WebClient可方便的用来下载zip资源等,利用GET操作可下载String或Stream,通过UploadStringAsync方法可以支持POST操作。
如果想利用HTTP完成更复杂的操作或请求,比如涉及权限,cookies,安全等,则需要使用HttpWebRequest。HttpWebRequest是WebRequest的子类,支持HTTP和HTTPS协议,并受益于浏览器的能力。
HTTP协议也有一些不足,它是建立在TCP之上相对较为高级别的标准,因此不可能比raw connection性能更高。HTTP多用于从服务端获取数据,而服务端想从客户端得到反馈则相对较难,因此不太适合需要实时通信的应用程序。这时就需要Sockets出马,Sockets所需的跨域策略文件略有不同,在Silverlight中也有诸多限制,比如端口号等。
本地通信:通过本地消息传递,可以在单个计算机上运行的多个Silverlight应用程序之间通信。应用场景比如同在一个页面上的多个Silverlight应用程序交互,创建具有跨越侧栏广告的动画效果的基于 Silverlight 的横幅广告,并且使用本地消息传递来协调过渡。该特性尤其适用OOB(浏览器外)应用程序。和Sockets不同的是,本地连接消息是单向的,fire-and-forget式的,消息发送者不知道消息是否被接收,除非是消息接收者发回确认信息。
在ASP.NET网站中构建Web Service有以下几种方式:generic handler(后缀.ashx),ASP.NET Web Service(后缀.asmx),启用了Silverlight功能的WCF服务等。
Web Service返回的数据常有以下几种格式:XML、JSON、RSS/Atom、SOAP消息。处理这些不同的数据可能用到的相关技术有LINQ、正则表达式、序列化等。
此外,还需要注意的就是跨域问题,另外篇章再总结。 |