WCF RIA Services 客户端、服务端的处理方法和例子

Silverlight客户端访问

1. 首先Project Link到服务端项目,Build服务端项目是在客户端项目的Generated_Code和其他一些目录下会生成相关的代码

2. 使用代码或XAML(DomainDataSource )访问服务

xmlns:domain="clr-namespace:RIA.Web.Services"Title="Demo Page" Style="{StaticResource PageStyle}" 

xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" xmlns:riaControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.DomainServices">
    <Grid x:Name="LayoutRoot">
           <Grid.RowDefinitions>
                  <RowDefinition/>
                  <RowDefinition/>
           </Grid.RowDefinitions>
            <riaControls:DomainDataSource Name="DataSource" AutoLoad="True"
                                QueryName="GetCustomers">
                  <riaControls:DomainDataSource.DomainContext>
                        <domain:NorthWindContext/>
                  </riaControls:DomainDataSource.DomainContext>
           </riaControls:DomainDataSource>
<sdk:DataGrid Name="dataGrid1" Grid.Row="0" ItemsSource="{Binding ElementName=DataSource, Path=Data}" />
           <sdk:DataGrid Name="dataGrid2" Grid.Row="1"/>
    </Grid>

                    NorthWindContext context = new NorthWindContext();                     EntityQuery<Customer> query = context.GetCustomersQuery();                    ///Load all                    //context.Load<Customer>(query);                    //this.dataGrid1.ItemsSource = context.Customers;         var  q = from c in query where c.City == "london" orderby c.CustomerID select c;                    context.Load<Customer>(q);                    this.dataGrid2.ItemsSource = context.Customers;

查看HTTP协议可以看到发到服务端的请求如下:

GET /ClientBin/RIA-Web-Services-NorthWindService.svc/binary/GetCustomers

GET /ClientBin/RIA-Web-Services-NorthWindService.svc/binary/GetCustomers?$where=(it.City%253d%253d%2522london%2522)&$orderby=it.CustomerID HTTP/1.1

可以看到整个的方式和WCF Data Service基本一致

注:DomainDataSource包含在 System.Windows.Controls.DomainServices组件中

服务端Domain Service方法

服务端服务类中的方法遵循如下的约定


方法前缀


标注属性


说明


(Any)


[Query()]


A method that returns data without any side effects. The usual approach is to prefix with Get, but any prefix is fine as long as the function returns an instance of an entity T, an IEnumerable<T>, or an IQueryable<T>.


Insert, Add, Create


[Insert()]


An operation that inserts a single entity into the data store. The method takes the entity as a parameter.


Update, Change,

Modify


[Update()]


An operation that updates a single entity in the data store. The method takes the entity as a parameter.


Delete, Remove


[Delete()]


An operation that deletes an entity in the data store. The method takes the entity as a parameter.


(Any)


[Invoke()]


A business method that must be executed without tracking or deferred execution. It may or may not have side effects. Use only when one of the other method types can’t be used.


(Any)


[Update(UsingCustomMethod=true)]


标注UsingCustomMethod=true属性,执行特定更新的操作,如需要手动进行级联更新的情况

参数是实体类,在SubmitChanges调用时,自动调用这个更新实体的函数


-


[Ignore()]


方法尽管符合约定如UpdateEmployee,但不要生成客户端的桩

以上的说明都是在服务端类中可以编写的方法,在这个类中你可以进行业务逻辑的验证和处理,数据的更新等等各种操作.

例子

http://dskit.codeplex.com 上的RIA RIA.Web 项目

运行效果如下图:

包括了数据的列表显示,数据的编辑和Domain Service方法,具体有:

DomainDataSource 的使用:过滤、分页、排序、分组等

DataForm 和DomainDataSource结合实现数据的增删改

手工的调用服务端方法

Sliverlight中,如果对于比较大的应用,为了更清晰的分层,可以考虑使用MVVP模式

特别注意:Sliverlight中调用服务端的代码,很多情况下都是异步的[具体的原因和浏览器有关,详细解释参考MSDN],因此使用方法返回的结果需要注意

时间: 2024-11-25 01:07:43

WCF RIA Services 客户端、服务端的处理方法和例子的相关文章

更强悍的Silverlight: WCF RIA Services

如果你安装了 VS 2010 的 Silverlight 4 开发工具,会发现一项重量级的安装项目,WCF RIA Services,用于Silverlight数据访问服务,比WCF和ADO.NET Data Service和Web服务都要简单. 在一个三层架构的应用程序中,中间层介于表示层和数据层之间,你所写的业务逻辑和数据验证都将在中间层出现.创建拥有良好用户体验的RIA应用,你需要客户端和服务端有着相同的业务规则,因此在客户端和服务端保证同步的中间层变得至关重要.WCF RIA Servi

[原创图解]Win2003证书服务配置/客户端(服务端)证书申请/IIS站点SSL设置

[原创图解]Win2003证书服务配置/客户端(服务端)证书申请/IIS站点SSL设置 --欢迎转载,但转载请注明来自"菩提树下的杨过" 一.CA证书服务器安装   1.安装证书服务之前要先安装IIS服务并且保证"WEB服务扩展"中的"Active Server Pages"为允许状态      2.在"控制面板"中运行"添加或删除程序",切换到"添加/删除Windows组件"页   

Consuming Hidden WCF RIA Services

 原文 http://codeseekah.com/2013/07/05/consuming-hidden-wcf-ria-services/ A Silverlight application made it to my desk yesterday, an application that consumed a remote WCF RIA service running on a Microsoft IIS. The service did not provide a public API

activex-VC++环境 ActiveX winSock 怎么写客户端 服务端

问题描述 VC++环境 ActiveX winSock 怎么写客户端 服务端 请问在VC++环境下 用AtiveX 怎么写服务端 客户端控件 解决方案 新建一个atl activex项目 然后参考如下代码:http://blog.csdn.net/yue7603835/article/details/6948233 解决方案二: http://www.jb51.net/article/47637.htm 解决方案三: Activex主要用在IE浏览器.

javascript不使用图片验证与服务端检测验证码方法

网页特效不使用图片验证与服务端检测验证码方法 很多源码都是通过请求服务器来匹配验证码 突然想到,如果在浏览器通过salt+md5混合加密后,与密文(在页面上)匹配,即可在本地 知道验证码是否正确 var seccode_hash = 'xxxxxx'; // 32位加密后的验证码 var seccode_salt = 'xxsxxx'; // 随机字符 var seccode_count = 255; // 加密次数 当用户提交时,将验证码加密,与密文匹配: // 长度为8位的英文(大小写忽略)

WCF Data Services客户端访问

上一篇http://www.cnblogs.com/2018/archive/2010/10/17/1853384.html  讲述了查询的相关语法和例子,如果在程序中如何使用这些发布的服务呢?下面对在代码中访问这些服务的方法进行一下汇总 客户端访问 查询 这些查询中可以结合上文的查询语法等使用 Ø 浏览器地址:输入地址,GET请求直接进行 Ø JavaScipt库:如ExtJS.DOJO.MS AJAX等支持JSON处理的JS库 Ø Service Reference引用 常用的形式,IDE直

js跨域访问示例(客户端/服务端)_javascript技巧

复制代码 代码如下: <div id="oid"></div> <script type="text/javascript"> //获取货号 $.ajax({ url: "http://192.168.1.191/H.ashx", type: "GET", dataType: 'jsonp', //jsonp的值自定义,如果使用jsoncallback,那么服务器端,要返回一个jsoncal

[100分]求ms ajax中关于js 调用服务端代码的方法

问题描述 以前用AjaxPro好像很容易,但换成MsAjax后不知该怎么做.要能实现异步回传的,就是在页面中使用了UpdatePanel控件.我提问一般都是给100分的.知道的快来吧. 解决方案 解决方案二:没用过.解决方案三:该回复于2008-04-10 08:33:57被版主删除解决方案四:没用过.解决方案五:该回复于2008-04-10 08:33:55被版主删除解决方案六:我现在正在学一本书叫asp.netajax程序设计第II卷microsoftajaxlibrary异步通信层是陈黎夫

OPENSSL编程中获取服务端证书的方法

问题描述 我在客户端与服务端进行SSL握手之后用SSL_get_peer_certificate这个函数为什么得不到服务端的证书啊,它的返回值始终是NULL,有没有其他的方法获取服务端的证书呢求解答,谢谢 解决方案 解决方案二:这个要看你前面ssl_accept是怎么呼叫,因为这个函数不见得呼叫一次就能返回成功,要必须确定返回成功后(重复呼叫直到成功为止),才能得到服务器的certificate