首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

RIA Service、WCF有什么区别和联系

2012-07-31 
RIA Service、WCF有什么差别和联系RIA Service、WCF有什么差别和联系???它们各有什么优缺点???[解决办法]说

RIA Service、WCF有什么差别和联系
RIA Service、WCF有什么差别和联系???

它们各有什么优缺点???

[解决办法]
说一点差别不知正确否,RIA Servive可以直接访问数据库,而WCF只能异步访问数据库。
[解决办法]
RIA Service是WCF服务的一种,是为Silverlight提供的访问数据层的服务。Silverlight是运行在部分.net framework类库基础上,作为客户端技术,无法与服务器端共享链接类库,为访问数据层造成不便。为了解决该问题,微软为Silverlight量身定做了RIA Service,使其较多中间层代码自动生成,并且完成客户端与服务器端对象类库共享。特别是在设计n层应用框架时,RIA Service功能非常强大。

WCF服务是较为传统的数据服务,也是最早微软提出的数据访问服务。使用方法也很简单,但是如果用于多层应用框架设计时,开发人员需要手动创建较多的中间层代码。


Silverlight使用WCF访问数据库:http://silverlightchina.net/html/tips/2009/1229/503.html

Silverlight RIA专题:http://silverlightchina.net/html/zhuantixilie/getstart/2010/0815/1761.html
http://silverlightchina.net/html/zhuantixilie/getstart/2010/0617/1282.html
[解决办法]

探讨
那么如果现在“asp.net项目”是“DAL,BLL,UI”,三层架构。现在要在其中使用SL插件,而且要实现和数据库的交互,使用“RIA Service”,那么应该怎样修改项目的结构呢?


[解决办法]
这并不是同步异步的区别。silverlight访问任何服务都是异步的。

针对你的问题,假设你只想让各种客户端调用你的BLL层接口(你不一定只有一个silverlight程序吧?你完全可以有多款silverlight程序,还有javascript程序,还有其它客户端的程序,它们都可以共享你的asp.net的那个后台服务),那么你就采取WCF,或者更好地是精简地Http Post(例如使用ashx来提供服务,而数据的输入输出使用json格式的表示方式就足够了)。
[解决办法]
不扔掉三层,就扔掉RIA Service呗。
[解决办法]
顺便我也捎带凭一下时下时髦的什么REST方式,某些人在搞讲座时说过去式RPC方式,而REST则是创举。我认为这个“创举”太业余了,已经将面向企业服务重新降低档次回到面向数据库记录上去了,所以这对服务器系统平台架构师来说可能是一种错误的选择、可能你一时少动一点脑子但是等前端胡乱修改你的基础数据时“哭都来不及了”。
[解决办法]
确实不要再讲什么“三层”了,那是大仙们说的话,道理太深奥,容易把菜鸟搞迷糊。还是用修改实体代码说话吧,
为了修改“我的实体1”,在服务端的代码是
[OperationContract]public 我的实体1 update_我的实体1(我的实体1 to_be_updated_我的实体1)
{
我的linqtosql_datacontext dc=new 我的linqtosql_datacontext();
try
{
dc.我的实体1.Attach(to_be_updated_我的实体1, true);
dc.SubmitChanges();
return to_be_updated_我的实体1;
}catch(exception ex){}
return null;
}
在客户端要写4条,
// 1 定义 _wcf
private ServiceReference.ServiceClient _wcf = new ServiceReference.ServiceClient();

// 2 定义响应事件
_wcf.update_我的实体1Completed +=new _wcf_update_我的实体1Completed(update_我的实体1Completed);

// 3 修改 我的实体1
_wcf.update_我的实体1Async(to_be_updated_我的实体1);

// 4 事件响应程序
private void update_我的实体1Completed(object update_我的实体1CompletedCompletedEventArgs e) 
{
// 
if (e.result!=null) messagebos.show("修改成功。","提示",OK);
}

那么用RIA Service怎么实现,那位高手给补上,因为我还没有使用RIA Service写项目,RIA Service代码不熟。

[解决办法]
有了RIA Service代码,差别就出来了。
[解决办法]
探讨
顺便我也捎带凭一下时下时髦的什么REST方式,某些人在搞讲座时说过去式RPC方式,而REST则是创举。我认为这个“创举”太业余了,已经将面向企业服务重新降低档次回到面向数据库记录上去了,所以这对服务器系统平台架构师来说可能是一种错误的选择、可能你一时少动一点脑子但是等前端胡乱修改你的基础数据时“哭都来不及了”。

[解决办法]
我个人也不喜欢用RIA Service,也没有好好用过,只是做一些使用练习.觉得不合适本人使用,倒是觉得像Sq1234所说的,给服务架构带来问题.

可能是个人问题,我在设计服务器端时,总是考虑任何客户端(包括跨平台的客户端)都可能与服务器通迅,并且与所有的交换格式都是基本格式(任何平台都可以接收的格式).

而RIA Service生成的客户端一大堆代码,这也使SL文件非得大,使用下载时间长.
我使用SL访问Web Service时也没有服务引用,就写一个共公服务调用类,无论多少个Web服务和方法都是一个类来完成,当然这与服务器设计也有关系(所有的Web服务参数均为string,所有的返回值也均是string,数据格式均为Json或xml,两种都支持),同时也给客户端瘦身和移值.

热点排行