Silverlight WCF RIA服务 (二)解决方案结构

news/2024/7/3 8:38:54
上节大概介绍了一下 WCF RIA 服务, 这次介绍下整个解决方案的结构。 当创建应用程序时,WCF RIA服务可以帮你建立满足各种各样情况的解决方案。例如只是在中间层访问很少domain services的Silverlight应用程序。更复杂的例子可能是几个Silverlight程序都连接到一个提供
  

上节大概介绍了一下 WCF RIA 服务, 这次介绍下整个解决方案的结构。

当创建应用程序时,WCF RIA服务可以帮你建立满足各种各样情况的解决方案。例如只是在中间层访问很少domain services的Silverlight应用程序。更复杂的例子可能是几个Silverlight程序都连接到一个提供许多domain services的通用中间层。本节就介绍几种构建RIA服务解决方案的方式。

RIA 服务连接

在所有的RIA Services方案中,一个连接(就是RIA服务连接)存在于中间层项目和表示层项目之间。一个RIA Services连接是一个项目对项目引用的特殊模式,它更便于从中间层的代码来生成表现层的代码。在创建解决方案时选择 Enable WCF RIA Services 选项,就可以建立RIA Services 连接了。你也可以在已有项目的属性中建立RIA Services link。有的时候建立的连接是在应用项目之间的,而有些时候是建立在类库项目之间的。

当在项目中存在link时,表示层将会收到中间层的所有代码。不能指定只有一部分的代码应用到表示层。下面的规则用于RIA Services Link:
 

  • 在Silverlight的客户端项目中定义link。
  • link总是由Silverlight客户端指向.NET 服务端或类库。
  • 一个Silverlight客户端只能有一个link。
  • 这个link不能指向其他Sliverlight客户端。
  • 多个Silverlight客户端可以指向同一个服务端或类库。
  • 一个Silverlight应用程序不能连接到一个类库项目。

默认的解决方案结构

在默认的解决方案结构中,RIA Services创建一个单一的客户端项目和一个服务端项目。当使用Silverlight Application模板并勾选 Enable WCF RIA Services来创建项目时,就建立了一个默认的结构。一个RIA Services Link就已经在两个项目中存在了。当你生成解决方案时,将生成相对Domain Services和共享代码的客户端代码。下面的图展示了默认结构:

这个默认的结构是很方便的,因为所有的domain services类型和共享代码都在生成解决方案后自动添加到服务端和客户端。而且添加在服务端的共享代码,在客户端也是可见的。当你没有很多的domain services在服务端并且你也不必在很多不同的SL应用程序中重用商业逻辑时,默认的结构就已经可以很好的工作了。

在默认的解决方案结构中,你可以给服务端项目添加更多的具有RIA Services Link的SL应用程序。然而,默认的结构也存在局限性。对每一个SL客户端生成的代码包含所有来自服务端的中间层代码。例如,如果你有3个连接到一个服务端的SL应用程序,并且你想添加一个只能被其中一个SL应用程序使用的domain service,那么这3个客户端应用程序都将拥有为这个domain service生成的domain上下文并且可以访问这个domain service.

Silverlight Business Application template

RIA Services还提供了一个 Silverlight Business Application 模板。这个模板对建立一个SL商业应用程序提供了一个方便的出发点。这个模板建立在SL导航应用程序上,并用RIA Services来支持身份认证和用户注册。当用SL商业应用程序模板创建项目时,RIA Services建立默认的结构,并自动添加下面的特性:

 

  • 登录窗口
  • 注册窗口
  • SL导航

支持N层类库组件(Class Library Components)

 

RIA Services提供WCF RIA Services Class Library 项目类型来支持库中共享代码。通过类库,你把商业逻辑打包在N层类库组件里。下图展示使用RIA Services类库的解决方案结构:





 

在上图中,注意RIA Services Links并没存在于应用程序之中。相反,存在于类库项目中。你可以在你的应用程序中使用任意多的类库,并可以在任意的应用程序中重用这些类库。


 

使用RIA Services 类库有如下好处:

    • 服务端和一个单一数据域的客户端可以被作为一个单一的组件来开发和打包。这个组件可以在多个应用程序用重用。

    • 客户端的代理代码生成和源码共享都发生在一个位置。这个位置在每个组件的层中而不在每个SL应用程序中。

  • 在一个单一的Web应用程序中的多个SL应用可以指向它们所需的那个类库。每个SL应用程序不用再不得不看到中间层所公开的商业逻辑。

用RIA Services 类库,你可以仅提供应用程序所需的组件来建立灵活的解决方案结构。下图展示了一个应用多个RIA Services类库的方案结构:


http://www.niftyadmin.cn/n/4617753.html

相关文章

区块链(肖臻笔记)

区块链的技术与应用 比特币 密码学基础 比特币的数据结构 共识协议和系统实现 挖矿算法和难度调整 比特币的脚本 软分叉和硬分叉 匿名和隐私保护 以太坊 概述:基于账户的分布式账本 数据结构:状态树、交易树、收据树 ghost协议 挖矿&#x…

[case3]聊聊系统设计中的trade-off

为什么80%的码农都做不了架构师?>>> 序 本文主要小结一下系统设计当中的trade-off trade-off trade-off翻译过来大致是折中的意思,也就是说系统设计通常牵扯的点比较多,有的设计方案这个方面比较好,但是又有其他缺点&…

智能合约调取智能合约-ganache-cli测试被调取的一些说明

创建一个solidity文件(包含两个智能合约) 众筹项目的智能合约 contract Funding{//众筹faqirenbool flagfalse;address public manager;string public projectName;uint public supportMoney;uint public endTime;uint public goalMoney;address[] public players;mapping(ad…

Integer和String 相等判断

Integer和String 相等判断 Integer Integer 有一个缓存,范围为-128~127,Integer i1 10,在字节码中实质是调用了Integer.valueOf,在此范围内返回的就是IntergerCache中的Integer对象,否则会返回新的Integer对象 举例…

.ascx和网页.aspx之间的交互方式

1.aspx文件:public void SetLabel(string str) { this.Label1.Text str; ; } ascx文件;protected void Button1_Click(object sender, EventArgs e) { System.Web.UI.Page p this.Page; Type pageType p.GetType(); MethodInfo mi pa…

Python爬虫实战之爬取链家广州房价_04链家的模拟登录(记录)

问题引入 开始链家爬虫的时候,了解到需要实现模拟登录,不登录不能爬取三个月之内的数据,目前暂未验证这个说法是否正确,这一小节记录一下利用浏览器(IE11)的开发者工具去分析模拟登录网站(链家)的内部逻辑过程,花了一个…

JVM 中篇(1):Class 文件结构

文章目录查看二进制字节码的三种方法:Class 字节码文件结构Class 文件数据类型Magic Number(魔数)文件版本号常量池集合常量池计数器:constant_pool_count常量池表: constant_pool [] (常量池)字面量和符号引用补充说明&#xff1…

qs库

源代码:github.com/hapiman/qs Golang中querystring的处理 将结构体转化成categoryc1&categoryc2&page2&page_size50&searchmysearch的形式 -------------- ---------------->| query string ------------------ | ------------…