本篇主要文章涉及到几个技术点:
1.RESTful Service
2.Caliburn.Micro
3.Reactive Extension
4.MEF
5.Json.net
限于篇幅,本文不会对每个框架的来龙去脉讲的很清楚,也无法对每一个技术点详细介绍,文章末尾有源码供参考。
Silverlight与WCF可以通过多种协议方式进行交互,比如basichttp,net.tcp,在某些情形下,我们可能对数据的要求不需像SOAP格式,所以采用RESTFul Service的考量在于数据传输非常的干净.
下面2步解释如何创建一个RESTFul Service:
建立一个Silverlight-enabled WCF Servcie文件,这里命名为BookService,这里只写了一个Get接口
给终结点添加webhttp的行为,需要手动修改Web.config的配置
在浏览器测试好是否配置正确:
注意,因为Google Chrome对Josn的数据进行了处理,所以可以直接呈现Json格式的数据
之所以数据序列化采用的Json.net ,参考官网对其一个性能比较:
那么对前文已经处理好服务端了,客户端引用后:由于个人习惯MVVM的模式,所以用了Caliburn.Mrico
通过Nuget安装该组件后,会自动引入框架文件,无须费心,只需要在App.xaml中加入Caliburn.Mirco的AppBootstrapper,Caliburn.Mirco默认使用MEF作为容器.
删除App.xaml.cs中不相关的代码后,就完成了对Caliburn.Mirco配置
在Viewmodel中实现对服务端的数据获取:
这里使用Reactive的方式进行异步编程的,传统的方式应该是这样
Caliburn.Mrico提供了一种命名机制,比如Button的Name为Read,它会在相对应的ViewModel中寻找Read().
其实本文还有一个目的,最近随着WinRT的推出,似乎各方对Silverlight的前景都不看好,其实若深入了解本文所涉及的Xaml,Caliburn.Mrico,WCF,Json,Rx,Mef,这些都是我是在
做Silverlight的过程中接触这些的,这些在.NET平台上都是可通用的技术或者框架,甚至转至WinRT的成本更低,万变不离其宗,抱怨的越多,说明越没有底气,从个人平日对国内外技术社区的
了解来看,在国内许多人还在喋喋不休的抱怨技术更新太快时,国外的同行已经在思考如何怎样做一个好产品,好应用,这就是所谓的差距。
代码下载:REST