WCF RIA Services 中文版_第1页
WCF RIA Services 中文版_第2页
WCF RIA Services 中文版_第3页
WCF RIA Services 中文版_第4页
WCF RIA Services 中文版_第5页
已阅读5页,还剩298页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、WCF RIA ServicesWCF RIA Services 简化了针对丰富 Internet 应用程序 (RIA)(例如 Silverlight 应用程序)的 n 层解决方案的部署。开发 n 层 RIA 解决方案的一个常见问题就是在中间层和表示层之间协调应用程序逻辑。为了打造最佳的用户体验,您希望您的RIA Services 客户端知道在服务器上驻留的应用程序逻辑,但不希望在表示层和中间层上都开发和维护该应用程序逻辑。RIA Services 通过提供使服务器上的应用程序逻辑可用于 RIA Services 客户端但无需您手动复制该编程逻辑的框架组件、工具和服务,解决了上述问题

2、。您可以创建一个 RIA Services 客户端,该客户端知道业务规则并且知道在每次重新编译解决方案时都要使用最新的中间层逻辑来自动更新该客户端。下图显示一个简化版的 n 层应用程序。RIA Services 针对表示层和数据访问层 (DAL) 之间的框,以便使用 RIA Services 客户端简化 n 层部署。RIA Services 向 Visual Studio 2010 添加了一些工具,以便能够在单个解决方案中链接客户端和服务器项目,并且从中间层代码为客户端项目生成代码。框架组件支持用于撰写应用程序逻辑的说明性模式,以便可以在表示层上重复使用该应用程序逻辑。提供用于常见方案(例如身

3、份验证和用户设置管理)的服务,以便缩短开发时间。WCF 集成在 RIA Services 中,通过添加域服务将来自服务器项目的数据向客户端项目公开。RIA Services 框架将每个域服务作为 Windows Communication Foundation (WCF) 服务实现。因此,在自定义配置时,您可以将从 WCF 服务得来的概念应用于域服务。有关更多信息,请参见域服务。保证 RIA Services 解决方案的安全为了确保您的应用程序可妥善处理与公开域服务相关的安全问题,您必须仔细考虑如何实现域服务。有关更多信息,请参见 WCF RIA Services 的安全性。工具和文档WCF

4、RIA Services 文档不仅要求正确安装和配置 Visual Studio 2010 和 Silverlight Developer 运行时及 SDK 等若干必备程序,还要求正确安装和配置 WCF RIA Services 和 WCF RIA Services 工具包以便按照演练和操作指南主题进行演练。这些演练还要求安装和配置具有高级服务的 SQL Server 2008 R2 Express 以及安装 AdventureWorks OLTP 和 LT 数据库。有关满足上述各必备程序的详细说明,请参见WCF RIA Services 的必备条件节点内的主题。在继续本演练之前,请按照此处提

5、供的说明执行操作,以确保您在执行本 RIA Services 演练时尽可能少地遇到问题。主题WCF RIA Services 的必备条件 · 演练:安装和配置具有高级服务的 SQL Server 2008 R2 Express · 演练:安装 AdventureWorks OLTP 和 LT 示例数据库 创建 RIA Services 解决方案 · 演练:展示 RIA Services · 演练:创建 RIA Services 解决方案 · 演练:使用“Silverlight 业务应用程序”模板 · 演练:创建 RIA Service

6、s 类库 · 演练:本地化业务应用程序 · 如何创建使用 POCO 定义的实体的域服务 · 如何:添加或移除 RIA Services 链接 · 使用域服务向导 WCF RIA Services 的安全性 部署和本地化 RIA Services 解决方案 · 针对 RIA Services 解决方案的部署的疑难解答 · 针对 RIA Services 解决方案的部署的疑难解答 · 演练:本地化业务应用程序 中间层 · 域服务 · 演练:添加查询方法 · 如何:向域服务添加业务逻辑 ·

7、如何创建使用 POCO 定义的实体的域服务 · 如何:将 HTTPS 用于域服务 · 数据 · 复合层次结构 · 表示模型 · 数据模型中的继承 · 复杂类型 · 共享实体 · 演练:在多个域服务间共享实体 · 如何:添加元数据类 · 如何:验证数据 · 管理数据并发 ·1. 如何启用开放式并发检查 2. 如何:将显式事务添加到域服务 · 共享代码 · 如何:通过源文件共享代码 · 演练:创建 RIA Services 类库 Silverligh

8、t 客户端 · 客户端代码生成 · DomainContext 和操作 · DomainDataSource · 客户端上的错误处理 · 自定义生成的代码 · 如何:在客户端上添加计算的属性 访问非 Silverlight 客户端 · ASP.NET 客户端 · 演练:在 ASP.NET 应用程序中使用域服务 身份验证、角色和配置文件 · 如何:在 RIA Services 中启用身份验证 · 如何:启用 RIA Services 中的角色 · 如何:在 RIA Services 中启

9、用配置文件 · 如何:创建自定义授权属性 · 演练:将身份验证服务用于 Silverlight 业务应用程序 · 演练:将身份验证服务用于 Silverlight 导航应用程序 端到端方案 · 演练:检索并显示域服务中的数据 · 演练:编辑域服务中的数据 · 演练:在 Silverlight 业务应用程序中显示数据 · 演练:在 Silverlight 业务应用程序中显示相关数据 参考 另请参见 其他资源脱机 RIA Services 文档 WCF RIA Services 的必备条件WCF RIA Services 在 W

10、CF RIA Services 文档中提供的演练和其他演示要求事先安装和配置若干必备程序。本节将提供一些详细说明,介绍如何满足这些必备要求,以便确保最终用户在让安装程序执行这些 RIA Services 演练时遇到的问题最少。安装必备程序Visual Studio 2010、Silverlight Developer 运行时、SDK 和 Toolkit 以及 WCF RIA Services 及其工具包必须安装,之后才能使用 RIA Services 演练。下面是这些程序的安装点:· Visual Studio 2010 速成版或者 Visual Studio 2010 的任何零售版

11、本。· 下载 Microsoft Silverlight 4 Tools for Visual Studio 2010 将安装 Silverlight 和 WCF RIA Services 所需的几乎所有组件,只有 RIA Services 工具包除外。此下载包括以下组件(以及在下载页中列出的若干其他组件):1. Silverlight 4 Developer 运行时2. Silverlight 4 SDK3. Silverlight Tools for Visual Studio 2010 4. WCF RIA Services forSilverlight 4 · 应查

12、看 WCF RIA Services 和工具包以便确保您具有 WCF RIA Services for Silverlight 4 的最新安装并且获取 RIA Services 工具包。提示:您还可以通过使用“通过 One Install 开始使用 Silverlight”中的托管安装的 Web 平台安装程序,开始着手进行 Silverlight 4 和 RIA Services 开发。 警告: 使用 Silverlight 4 运行时可以改写 Silverlight 4 开发人员运行时。例如,在使用 Windows Update 时就会发生这种情况。如果发生这种情况,在“先决条件检查”窗口中

13、会出现消息:“缺少以下所需组件:Microsoft Silverlight 4 Developer Runtime”。若要解决此问题,请转到“控制面板”上的“程序和功能”,手动卸载 Microsoft Silverlight。然后通过单击此处重新安装 Silverlight 4 开发人员运行时的最新版本。 警告: RIA Services 1.0 版 RTM 安装程序有个问题,会在您安装 RIA Services 1.0 版 SP1 RTM 后出现。1.0 版 SP1 RTM 安装程序会顺畅更新,但 1.0 版 RTM 安装程序则不然。所以,在安装 1.0 版 SP1 RTM(或 Beta)之

14、后,如果试图返回并重新安装 1.0 版 RTM,就会得到一个两个版本合体的安装,看起来就像是两个版本都安装了一样。要解决此问题,请将这两个版本都卸载,然后重新安装所需的版本。当我们升级到 RIA Services 2.0 版后,此问题就不会发生了,因为安装程序是特定于版本的。 警告:Silverlight 具有两个运行时:一个用于最终用户,一个用于开发人员。安装 Silverlight Developer 运行时是安装 RIA Services 的先决条件。如果安装的是最终用户运行时,将会在 Silverlight 开发过程中导致各种问题。例如,如果系统向您显示一条消息,指出您无法开始调试,因

15、为未安装 Silverlight Developer 运行时,则您所安装的运行时是错误的版本并且需要使用开发人员运行时来替换该版本。 在本节中将针对其他两个先决条件提供更详细的演练:安装和配置具有高级服务的 SQL Server 2008 R2 Express,以及安装 AdventureWorks OLTP 和 LT 数据库。· 演练:安装和配置具有高级服务的 SQL Server 2008 R2 Express · 演练:安装 AdventureWorks OLTP 和 LT 示例数据库 演练:安装和配置具有高级服务的 SQL Server 2008 R2 Expres

16、sWCF RIA Services 演练假定您已安装 SQL Server 2008 和 AdventureWorks 数据库。具有高级服务的 SQL Server 2008 R2 Express 是安装和使用的所需 AdventureWorks 数据库的最低必需版本。普通 SQL Server 2008 R2 Express 版本不具有所需服务。本演练概括了创建具有高级服务的 SQL Server 2008 R2 Express 的实例所需的步骤。演练:安装 AdventureWorks OLTP 和 LT 示例数据库主题中概述了安装 AdventureWorks 数据库的过程。警告: 若要

17、使用 RIA Services 演练,还必须安装 Visual Studio 2010、Silverlight 运行时和 SDK 以及 WCF RIA Services 和 WCF RIA Services 工具包。WCF RIA Services 的必备条件主题中提供了这些程序的安装点。 警告: AdventureWorks 数据库安装程序仅对使用具有高级服务的 SQL Server 2008 R2 Express 或任何零售版本的 SQL Server 2008 R2 创建的新 SQL Server 实例起作用。它对于已升级的实例不起作用。 安装和配置具有高级服务的 SQL Server

18、2008 R2 Express 提示:建议为这些演练安装一个具有高级服务的 SQL Server 2008 R2 Express 的全新实例。 安装新的 SQL Server 2008 R2 Express 实例1. 为您的操作系统体系结构(x86 或 x64)下载正确版本的具有高级服务的 SQL Server 2008 R2 Express。2. 下载完成时,请单击“运行”。在安装程序提取所需文件后,将出现“SQL Server 安装中心”。3. 在左侧面板中,选择“安装”,然后单击“全新安装或向现有安装添加功能”。这将显示“SQL Server 2008 R2 安装程序”对话框,初始化安装

19、文件,然后运行规则检查。4. 在“安装类型”屏幕上,选择“全新安装或者添加共享功能”,然后单击“下一步”。5. 选中“我接受许可条款”,然后单击“下一步”。注意:如果受影响的文件具有挂起的操作,则可能需要重新启动。 6. 单击“全选”,然后单击“下一步”。7. 如果这是在本机上第一次安装 SQL Server,则可以选择“默认实例”,否则请选择“命名实例”。键入一个实例名称(您能记住该名称),然后单击“下一步”。提示:SQL Server 实例名称通常表示为一个全部大写的单词。 8. 保留“服务器配置”的默认设置,然后单击“下一步”。9. 在“帐户设置”选项卡上,选择(默认)“Windows

20、身份验证模式”,然后单击“添加当前用户”。10. 在“FILESTREAM”选项卡上,选中“针对 Transact-SQL 访问启用 FILESTREAM”,再选中“针对文件 I/O 流访问启用 FILESTREAMEnable”,然后单击“下一步”。11. 保留“Reporting Services 配置”的默认设置,然后单击“下一步”。12. 保留“错误报告”的默认设置,然后单击“下一步”。13. 安装完成后,单击“下一步”,然后单击“关闭”。此时已完成新实例的安装,需要对其进行配置。这些配置设置将启用访问 SQL Server 实例所需的连接。为 AdventureWorks 数据库安装

21、配置新的 SQL Server 实例1. 单击“开始”菜单,依次选择“所有程序”、“Microsoft SQL Server 2008 R2”和“配置工具”,然后单击“SQL Server 配置管理器”。这将打开“SQL Server 配置管理器”窗口。2. 在左侧面板中,选择“SQL Server 服务”,再右击“SQL Server (<实例名称>)”实例。在弹出菜单中,选择“属性”。注意: “<实例名称>”是一个占位符,需要将其替换为正使用的实例的实际名称。 3. 此时将打开“SQL Server (<实例名称>)属性”对话框。4. 在“FILESTR

22、EAM”选项卡上,确保同时选中“针对 Transact-SQL 访问启用 FILESTREAM”和“针对文件 I/O 流访问启用 FILESTREAMEnable”。5. 单击“确定”。6. 返回到“SQL Server 配置管理器”,确保正在运行“SQL 全文筛选器后台程序启动器(<实例名称>)”。如果它未运行,请右击它并选择“启动”。7. 在“SQL Server 配置管理器”的左窗格中,展开“SQL Server 网络配置”,然后单击“<实例名称> 的协议”。8. 双击“命名管道”,在出现的“命名管道属性”对话框中,在“已启用”旁边的下拉菜单中选择“是”。单击“确

23、定”。9. 对“TCP/IP”协议重复上个步骤以启用它。接受“保持活动状态”和“全部侦听”属性的默认值。10. 在“SQL Server 配置管理器”的左侧面板中,再次选择“SQL Server 服务”,右击右侧窗格中的“SQL Server (<实例名称>)”,然后选择“重新启动”。提示:这是在修改 SQL Server 实例的配置以重新启动实例的最佳做法,以便所做的更改可用。 现已完成具有高级服务的 SQL Server 2008 R2 Express 的安装和配置。此时已准备好安装 AdventureWorks OLTP 和 LT 示例数据库。演练:安装 AdventureW

24、orks OLTP 和 LT 示例数据库主题中提供了安装此数据库的步骤。演练:安装 AdventureWorks OLTP 和 LT 示例数据库WCF RIA Services 演练假定您安装了 AdventureWorks OLTP 和 LT 数据库。此演练概要介绍了创建 AdventureWorks OLTP 和 LT 数据库的实例所需的步骤。注意: 请确保您安装有兼容的具有高级服务的 SQL Server 2008 R2 Express 或任何零售版本。演练:安装和配置具有高级服务的 SQL Server 2008 R2 Express主题对安装具有高级服务的 SQL Server 20

25、08 R2 Express 的过程进行了介绍。 警告: 若要使用 RIA Services 演练,还必须安装 Visual Studio 2010、Silverlight 4 Developer Runtime 和 SDK 以及 WCF RIA Services 及其工具包。WCF RIA Services 的必备条件主题中提供了这些程序的安装点。 必备条件 安装 Adventure Works OLTP 和 LT 数据库 安装 Adventure Works 示例数据库1. 下载 AdventureWorks 示例数据库安装程序。注意: 默认情况下,Windows Server 2008 安

26、全性配置为禁止下载这些安装程序。建议不要在生产服务器上更改此安全配置。有关如何更改这些设置的信息,请参见 Windows Server 文档。 2. 运行 AdventureWorks2008R2_SR1.exe3. 单击“我同意许可条款”复选框,然后单击“下一步”按钮。4. 在“文件下载”窗口中选择“运行”,然后在“用户帐户控制”窗口出现时在其中选择“是”。5. 当下拉选择器“安装实例”出现时,使用它选择实例,将在这个实例中安装“数据库选择”窗口中的数据库。6. 尽管可以更改脚本和数据文件的安装目录,但建议使用默认目录。注意: 如果更改该目录,请确保运行 SQL Server 服务的帐户对该

27、目录具有读访问权限。 7. 请确保安装“AdventureWorks OLTP 2008R2”、“AdventureWorks LT 2008R2”、“AdventureWorks OLTP”、“AdventureWorks LT”数据库的框全都被选中。对于所有其他数据库则保留其默认值。单击“安装”按钮。8. 安装完成时,单击“完成”按钮。创建 RIA Services 解决方案WCF RIA Services 使您能够在创建业务应用程序时创建满足多种方案的解决方案。这些方案的范围很广,包括十分基本的方案和非常复杂的方案。例如,一个基本的方案可由单个 Silverlight 应用程序构成,该应

28、用程序仅访问中间层中的几个域服务。复杂些的方案可以包含多个 Silverlight 应用程序,这些应用程序全都链接到公开大量域服务的公共中间层。本主题旨在解决在创建和管理 RIA Services 解决方案时出现的问题。它解决如下问题:· 构建 RIA Services 解决方案有哪几种方式?· 哪种结构最适合于特定方案?· 如何解决与解决方案有关的问题?· 如何部署解决方案?本主题还为本节中包含的演练和其他主题提供了一些指导,这些演练和主题会引导您完成与许多 RIA Services 相关典型方案相关联的任务。本节包含以下五个演练:1. 演练:展示 R

29、IA Services 2. 演练:创建 RIA Services 解决方案 3. 演练:使用“Silverlight 业务应用程序”模板 4. 演练:创建 RIA Services 类库 5. 演练:本地化业务应用程序 本节还包含以下三个主题:1. 如何:添加或移除 RIA Services 链接,介绍如何管理 RIA Services 链接。2. 使用域服务向导,介绍对话框中的 UI 元素。3. Debugging a RIA Services Solution,针对创建 RIA Services 解决方案时遇到的问题,提供一些解决问题的指导。在 RIA Services 文档的这一节中提

30、供的演练除了 WCF RIA Services 和 WCF RIA Services 工具包外,还要求正确安装和配置几个必备程序,如 Visual Studio 2010 以及 Silverlight Runtime 和 SDK。它们还要求安装和配置具有高级服务的 SQL Server 2008 R2 Express 以及安装 AdventureWorks OLTP 和 LT 数据库。WCF RIA Services 的必备条件节点中的主题提供有关如何满足这些前提条件的详细说明。请按照那里提供的说明操作,以确保在执行本节中的 RIA Services 演练时尽可能少地遇到问题。RIA Serv

31、ices 链接在所有的 RIA Services 解决方案中,在 Silverlight 项目及其关联的中间层项目之间都存在一个链接(通称为 RIA Services 链接)。RIA Services 链接是一种特殊形式的项目到项目引用,可简化从中间层中的代码生成表示层代码的过程。通过在创建新的 Silverlight 项目时选中“启用 WCF RIA Services”复选框,可以创建 RIA Services 链接。还可以在项目属性中为现有项目创建 RIA Services 链接。在某些情况下,您会在应用程序项目之间创建 RIA Services 链接,而在其他情况下,会在类库项目之间创建

32、链接,以下各节将介绍这两种链接。在项目之间存在链接时,Silverlight 项目接收代理类,这些代理类使该项目能够访问中间层代码。无法指定只将中间层的某些部分应用于 Silverlight 项目。下面的规则适用于对 RIA Services 链接的使用:· 在 Silverlight 客户端项目中定义链接。· 该链接始终从 Silverlight 客户端项目指向 .NET 服务器项目或类库。· 每个 Silverlight 客户端项目只能有一个链接。· 该链接不能指向其他 Silverlight 客户端项目。· 多个 Silverlight

33、客户端项目可以指向同一个服务器项目或类库。· Silverlight 应用程序不能直接链接到类库项目。有关管理 RIA Services 链接的更多信息,请参见本节中的如何:添加或移除 RIA Services 链接。默认解决方案结构在默认的解决方案结构中,RIA Services 创建单个客户端项目和(单个)服务器项目。在使用“Silverlight 应用程序”模板创建一个新项目时,如果选中“启用 WCF RIA Services”框,将创建具有此默认结构的解决方案。然后,在这两个项目之间已存在一个 RIA Services 链接。在您生成解决方案时,将为域服务和共享代码生成客户端

34、代码。下图显示了默认的解决方案结构。该默认解决方案结构可为您带来很大方便,因为在生成该解决方案后,添加到服务器项目的所有域服务类型和共享代码都可自动为 Silverlight 客户端项目所用。此外,您添加到服务器项目的共享代码在客户端项目中是可见的。当您的服务器项目中没有太多域服务并且无需在许多不同的 Silverlight 应用程序之间重复使用业务逻辑时,十分适合使用此结构。在具有默认结构的解决方案中,您可以添加多个具有指向服务器项目的 RIA Services 链接的 Silverlight 应用程序。但是,默认结构存在一些限制。为每个 Silverlight 客户端生成的代码可从服务器项

35、目访问所有中间层代码。例如,如果您有三个链接到一个服务器项目的 Silverlight 应用程序,并且想添加将只由其中一个 Silverlight 应用程序使用的域服务,但所有这三个客户端应用程序都将具有为该域服务生成的域上下文并且将能够访问该域服务。有关在 Visual Studio 2010 中创建 RIA Services 解决方案的更多信息,请参见演练:创建 RIA Services 解决方案。有关为客户端项目生成的代码的更多信息,请参见客户端代码生成。Silverlight 业务应用程序模板RIA Services 还提供“Silverlight 业务应用程序”模板。您能够以该模板为

36、起点,很方便地为客户端生成使用 Silverlight 的业务应用程序。该模板在 Silverlight 导航应用程序的基础上构建并且使用 RIA Services 来支持身份验证和用户注册。在您使用“Silverlight 业务应用程序”模板创建项目时,RIA Services 将创建具有默认结构的解决方案。“Silverlight 业务应用程序”模板会自动添加以下功能:· 登录窗口· 注册窗口· Silverlight 导航业务应用程序的默认身份验证模式是窗体身份验证。若要使用 Windows 身份验证,只需在 Web.config 文件中更改身份验证元素(例

37、如 <authentication mode="Windows"/>)的值,并且更改生成的 WebContext 类的 Authentication 属性值。业务应用程序模板会自动包含代码,以支持窗体身份验证或 Windows 身份验证。有关更多信息,请参见演练:使用“Silverlight 业务应用程序”模板主题。该服务器项目的 Services 文件夹包含公开用户注册和用户身份验证的域服务。用户注册服务使用 ASP.NET 成员资格提供程序来创建新用户。在服务器项目中,一个名为 Models 的文件夹将包含用于为用户数据和注册数据定义属性的类。您可以向这些类

38、添加属性,以便为您的应用程序自定义用户数据。在客户端项目中,业务应用程序包含用于简化表示层开发的代码。Libs 文件夹和 Controls 文件夹包含在该模板中使用的程序集和控件。Login 文件夹(位于 Views 文件夹中)包含身份验证和用户注册控件。在项目中将自动启用这些控件。Resources 文件夹(位于 Assets 文件夹中)包含项目中文本的资源字符串。在您向应用程序添加文本时,可以将它们添加到应用程序字符串文件中。有关更多信息,请参见演练:使用“Silverlight 业务应用程序”模板。支持 N 层类库组件RIA Services 提供了“WCF RIA Services 类

39、库”项目类型以便支持通过库共享代码。通过使用类库,您可以将业务逻辑包装为可重用的 N 层类库组件。下图显示了使用 RIA Services 类库的一种解决方案结构。在该图中,请注意应用程序项目之间不存在 RIA Services 链接。而在类库项目之间存在该链接。您可以在您的应用程序中使用任何数目的类库,并且可以在任何数目的应用程序中重复使用这些类库。使用 RIA Services 类库提供了以下好处:· 可以开发单个数据域的服务器和客户端部分,并将其包装为单个组件。此组件可以在多个应用程序中重复使用。· 客户端代理代码生成和源代码共享只在一个位置发生。此位置位于组件的各层

40、之间,而不是在每个 Silverlight 应用程序中。· 单个 Web 应用程序项目中的多个 Silverlight 应用程序可以仅引用它们需要的类库。因此,Silverlight 客户端不必看到中间层公开的所有业务逻辑。对于 RIA Services 类库,您可以生成一个灵活的解决方案结构,该结构仅提供应用程序所需的组件。下图显示了一个使用多个 RIA Services 类库的解决方案结构。注意: 如果向“Silverlight 业务应用程序”项目添加一个类库项目,则不能在该类库中向该服务器项目添加身份验证服务。“Silverlight 业务应用程序”模板中的用户对象对于该类库而

41、言是不可访问的。 有关更多信息,请参见演练:创建 RIA Services 类库。演练:展示 RIA Services本演练概述了 WCF RIA Services 中的许多功能。在本演练中,您将创建一个 RIA Services 应用程序,该应用程序会检索 AdventureWorks OLTP 示例数据库中的表包含的数据。首先,通过指定 LoadOperation 来检索数据。然后,使用 DomainDataSource 控件检索该数据。您可为数据呈现控件指定排序、筛选和分页,并添加一个 DataForm 控件以呈现数据的详细视图。将验证规则应用于字段,并使用户能够编辑数据值。仅允许经身份

42、验证的用户访问域操作。最后,您可定义两个相关表之间的关联,并显示相关数据。提示:有关通过创建更为基本的 RIA Services 解决方案进行入门的更简短演练,请参阅演练:创建 RIA Services 解决方案或演练:使用“Silverlight 业务应用程序”模板。 必备条件 除 WCF RIA Services 和 WCF RIA Services 工具包之外,本演练和 WCF RIA Services 文档中提供的其他演练还要求正确安装和配置 Visual Studio 2010 和 Silverlight Developer 运行时及 SDK 等几个必备程序。它们还要求安装和配置具有

43、高级服务的 SQL Server 2008 R2 Express,并安装 AdventureWorks OLTP 和 LT 数据库。WCF RIA Services 的必备条件节点中的主题提供有关如何满足这些前提条件的详细说明。在继续本演练之前,请按照此处提供的说明执行操作,以确保您在执行本 RIA Services 演练时尽可能少地遇到问题。创建并设置解决方案 在本节中,您将创建并设置解决方案。创建新的 WCF RIA Services 应用程序1. 在 Visual Studio 2010 中,通过依次选择“文件”、“新建”和“项目”来创建新的 RIA Services 项目。此时将出现“

44、新建项目”对话框。2. 在“已安装的模板”窗格中,展开“Visual Basic”或“Visual C#”节点,并选择“Silverlight”类别。3. 选择“Silverlight 业务应用程序”模板,并将应用程序命名为 HRApp。4. 单击“确定”。请注意创建的解决方案的结构:· 该解决方案包含两个项目:一个名为 HRApp 的 Silverlight 客户端项目和一个名为 HRApp.Web 的 ASP.NET Web 应用程序服务器项目。· 默认解决方案包含多个自动实现的功能,其中包括导航、用户登录和注销以及新用户注册。5. 生成并运行 (F5) 应用程序,并探

45、索默认实现。6. 关闭 Web 浏览器。设置应用程序1. 在“解决方案资源管理器”中的客户端项目中打开 MainPage.xaml。2. 在 XAML 视图中,找到名为 ApplicationNameTextBlock 的 TextBlock。如以下标记所示,请注意应用程序名称是从资源中检索的。<TextBlock x:Name="ApplicationNameTextBlock" Style="StaticResource ApplicationNameStyle" Text="Binding Strings.ApplicationNa

46、me, Source=StaticResource ApplicationResources"/> 在“解决方案资源管理器”中,展开 Assets 文件夹,然后展开 Resources 文件夹。3. 打开 ApplicationStrings.resx 文件。4. 将 ApplicationName 资源更改为 HR Application。5. 保存并关闭 ApplicationStrings.resx 文件。6. 在“解决方案资源管理器”中,右击 Views 文件夹,单击“添加”,然后单击“新建项”。显示“添加新项”对话框。7. 从“已安装的模板”的“Silverlight

47、”类别中选择“Silverlight 页”模板,并将其命名为 EmployeeList.xaml。8. 单击“添加”。9. 如果 EmployeeList.xaml 未自动打开,请将其打开。10. 在 <Grid> 标记之间添加以下 XAML。<ScrollViewer x:Name="PageScrollViewer" Style="StaticResource PageScrollViewerStyle" > <StackPanel x:Name="ContentStackPanel" Style=&

48、quot;StaticResource ContentStackPanelStyle"> <TextBlock Text="Employee List" Style="StaticResource HeaderTextStyle"/> </StackPanel> </ScrollViewer>11. 保存 EmployeeList.xaml 文件。12. 打开 MainPage.xaml。13. 通过在两个现有超链接按钮之间添加以下 XAML,向页面顶部添加一个新的超链接按钮。<Hyperlink

49、Button x:Name="Link3" Style="StaticResource LinkStyle" NavigateUri="/EmployeeList" TargetName="ContentFrame" Content="员工列表"/> <Rectangle x:Name="Divider2" Style="StaticResource DividerStyle"/>14. 运行应用程序,并注意“主页”和“关于”链接之间页面

50、右上角的新“员工列表”链接。单击该链接以在页面的正文中显示“员工列表”。显示数据 在本节中,您将在 AdventureWorks 示例数据库中为表创建一个 ADO.NET 实体数据模型。然后,创建一个将公开实体并显示客户端项目中的数据的域服务。添加数据源1. 在“解决方案资源管理器”中,右击“HRApp.Web”项目,单击“添加”,再单击“新建项”。显示“添加新项”对话框。2. 在“数据”类别中,选择“ADO.NET 实体数据模型”模板。3. 将名称更改为 AdventureWorks.edmx,然后单击“添加”。“实体数据模型向导”将打开。4. 在“选择模型内容”页上,单击“从数据库生成”,

51、然后单击“下一步”。5. 在“选择您的数据连接”页上,创建到 AdventureWorks 数据库的连接。6. 将实体连接设置命名为 AdventureWorks_DataEntities,然后单击“下一步”。7. 在“选择数据库对象”页上,展开“表”节点。8. 在“Employee”、“PurchaseOrderDetail”和“PurchaseOrderHeader”表的旁边添加复选标记。9. 将该模型命名空间命名为 AdventureWorks_DataModel,然后单击“完成”。实体数据模型将出现在设计器中。10. 生成解决方案。添加域服务对象并查询数据1. 在“解决方案资源管理器”

52、中,右击“HRApp.Web”项目,单击“添加”,再单击“新建项”。显示“添加新项”对话框。2. 在“Web”类别中,选择“域服务类”模板。3. 将新项命名为 OrganizationService。4. 单击“添加”。5. 在“添加新的域服务类”对话框中,从“实体”列表中选择“Employee”、“PurchaseOrderDetail”和“PurchaseOrderHeader”,然后为每个实体选择“启用编辑”。6. 确保已选中“启用客户端访问”和“为元数据生成关联类”复选框。7. 单击“确定”。将 OrganizationService.cs 和 OrganizationService.

53、metadata.cs 文件添加到项目。8. 打开 OrganizationService.cs 文件。请注意,已为每个实体创建查询、插入、更新和删除方法。始终只为一个实体创建一个查询方法。由于已选中“启用编辑”,因此添加了插入、更新和删除方法。9. 自定义 GetEmployees() 查询方法,以通过将生成的代码替换为以下代码来返回按 EmployeeID 排序的员工。public IQueryable<Employee> GetEmployees() return this.ObjectContext.Employees.OrderBy(e => e.EmployeeI

54、D);10. 生成解决方案。生成将在客户端项目中生成域上下文和实体的解决方案。11. 打开 EmployeeList.xaml。12. 从工具箱中,将 DataGrid 控件拖动到设计视图中的 TextBlock 控件后。若将 DataGrid 拖动到设计视图,则会添加对 System.Windows.Controls.Data 程序集的引用,并会向 Page 元素添加 sdk 前缀。13. 可通过以下方式来更改 DataGrid 控件的默认值:移除“高度”和“宽度”属性,使其只读,并将其设置为自动生成列,然后设置其最小高度。<sdk:DataGrid AutoGenerateColum

55、ns="True" IsReadOnly="True" Name="dataGrid1" MinHeight="100" />14. 保存 EmployeeList.xaml。15. 打开 EmployeeList.xaml.cs/vb。16. 添加以下 using 或 Imports 语句。using HRApp.Web;using System.ServiceModel.DomainServices.Client;17. 通过向 EmployeeList.xaml.cs 中添加以下代码,可初始化 Orga

56、nizationContext 类并加载员工数据。将基于服务器项目中的 OrganizationService 类在客户端项目中自动生成 OrganizationContext 类。OrganizationContext _OrganizationContext = new OrganizationContext(); public EmployeeList() InitializeComponent(); this.dataGrid1.ItemsSource = _OrganizationContext.Employees; _OrganizationContext.Load(_Organi

57、zationContext.GetEmployeesQuery(); / 当用户导航到此页面时执行。 protected override void OnNavigatedTo(NavigationEventArgs e) 复制18. 运行该应用程序。19. 单击“员工列表”链接以查看 DataGrid。添加自定义查询1. 在 HRApp.Web 项目中,打开 OrganizationService.cs。2. 通过向类的主体中添加以下代码,可添加一个名为 GetSalariedEmployees 的新方法。public IQueryable<Employee> GetSalari

58、edEmployees() return this.ObjectContext.Employees.Where(e => e.SalariedFlag = true).OrderBy(e => e.EmployeeID); 3. 生成解决方案。4. 在客户端项目中,打开 EmployeeList.xaml.cs。5. 在构造函数中,将对 GetEmployeesQuery() 的调用替换为对 GetSalariedEmployeesQuery() 的调用。复制 _OrganizationContext.Load(_OrganizationContext.GetSalariedEmp

59、loyeesQuery();6. 运行应用程序并单击“员工列表”链接。请注意,已检查所有显示的员工的 SalariedFlag 值。列表中将不再显示 EmployeeID 为 1、2 和 4 的员工,因为这些员工未领工资。添加域数据源1. 打开 EmployeeList.xaml。2. 从“工具箱”中,将 DomainDataSource 控件拖动到设计视图中的 DataGrid 的前面。DomainDataSource 可能会在控件列表的底部出现。提示:如果 DomainDataSource 控件未在“工具箱”中,则右击“工具箱”并单击“选择项”。在“Silverlight 组件”选项卡下,选中“DomainDataSource”并单击“确定”。 3. 当您将 DomainDataSource 控件拖动到设计视图时,将在 Page 元素中为 System.Windows.Controls 命名空间创建一个包含前缀 riaControls 的引用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论