Silverlight使用RESTful Service

            本篇主要文章涉及到几个技术点:

                                      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接口

         image      

         给终结点添加webhttp的行为,需要手动修改Web.config的配置

        image

        在浏览器测试好是否配置正确:

                                           image        注意,因为Google Chrome对Josn的数据进行了处理,所以可以直接呈现Json格式的数据

         image

        之所以数据序列化采用的Json.net ,参考官网对其一个性能比较:     

                      image

        那么对前文已经处理好服务端了,客户端引用后:由于个人习惯MVVM的模式,所以用了Caliburn.Mrico

        image

        通过Nuget安装该组件后,会自动引入框架文件,无须费心,只需要在App.xaml中加入Caliburn.Mirco的AppBootstrapper,Caliburn.Mirco默认使用MEF作为容器.

      image       删除App.xaml.cs中不相关的代码后,就完成了对Caliburn.Mirco配置

       在Viewmodel中实现对服务端的数据获取:

       image

   这里使用Reactive的方式进行异步编程的,传统的方式应该是这样

image 看看View的XAML是如何组织的:

 image

   Caliburn.Mrico提供了一种命名机制,比如Button的Name为Read,它会在相对应的ViewModel中寻找Read().

 

   其实本文还有一个目的,最近随着WinRT的推出,似乎各方对Silverlight的前景都不看好,其实若深入了解本文所涉及的Xaml,Caliburn.Mrico,WCF,Json,Rx,Mef,这些都是我是在

做Silverlight的过程中接触这些的,这些在.NET平台上都是可通用的技术或者框架,甚至转至WinRT的成本更低,万变不离其宗,抱怨的越多,说明越没有底气,从个人平日对国内外技术社区的

了解来看,在国内许多人还在喋喋不休的抱怨技术更新太快时,国外的同行已经在思考如何怎样做一个好产品,好应用,这就是所谓的差距。

 

 

   代码下载:REST

posted @ 2012-07-03 15:47  ringgo  阅读(1823)  评论(4编辑  收藏  举报