65.9K
CodeProject 正在变化。 阅读更多。
Home

WCF RIA 服务:ASP.NET 客户端 Web 应用程序

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.84/5 (13投票s)

2010年6月1日

CPOL

4分钟阅读

viewsIcon

73562

downloadIcon

1185

使用 WCF RIA 服务快速进行 ASP.NET 开发

目录

  1. 引言
  2. 背景
  3. 必备组件
  4. 分步实现
  5. 结论

引言

我们都迫不及待地想看到 VS2010 的强大功能。最近,Microsoft Tech-Ed 已经做了很多工作来展示其卓越的产品,涵盖了从 SQL Server 2008 R2 到 VS2010 的所有内容。Windows Azure 和 WCF RIA 服务的强大功能是本次展会的亮点。我的目标是展示 VS2010 的一些很酷的功能,并帮助开发人员充分利用 VS2010 附带的这些出色功能。微软曾说,生活靠代码运行,但这里有一个例子,开发人员几乎不需要编写代码,一切都是自动化的,可以帮助你创建一个具有删除、添加、编辑、排序和分页功能的网站。这些功能无需开发人员编写任何代码,只需进行几次拖放操作即可创建一个精美的 RIA 网站。

背景

在 VS2010 .NET 4.0 中,您可以获得大量的网站模板和 Silverlight 模板网站作为起点。您可以根据自己的需要自定义这些模板。我的目的是帮助您使用此功能,在该功能中,您可以在几分钟内创建常规的添加、编辑、排序、分页和删除功能,并将其集成到 Grid view 中。您将获得现成的代码来完成此操作。这只能通过 WCF RIA 服务来实现。

必备组件

VS2010 的“Ultimate”版本几乎包含了所有功能的起点。

VS2010 有四个版本

  • Ultimate
  • Premium
  • 测试
  • Professional

支持的操作系统

  • Windows XP Sp3
  • Windows Vista SP2
  • Windows 7
  • Windows Server 2003 SP 2
  • Windows Server 2003 R2
  • Windows Server 2008 SP 2
  • Windows Server 2008 R2

WCF RIA Service RC 教程

安装 Silverlight 4 SDK

分步实现

下面是使用 WCF RIA 服务创建 Web 应用程序的步骤。

注意:在完成每个指定的步骤后,需要生成(CTRL+Shift+B)应用程序。

1. 创建空网站

添加三个 WCF RIA 服务的引用

  • Microsoft.Web.DomainServices.WebControls
  • System.ServiceModel.DomainServices.Hosting
  • System.ServiceModel.DomainServices.Server

2. 创建数据模型

转到“Data”选项卡,然后选择其中的“ADOEntity Data Model”。选择数据库和表。在给出的示例中,我创建了一个名为 customer 的示例表,其中包含两个字段:CustomerIDCustomerName

生成解决方案 (CTRL+Shift+B)。

3. 创建 Domain Service

现在我们需要创建 Domain services(DomainService.cs)。在“web”菜单下,选择“Domain Service Class”。Domain services 是一个与数据访问层有契约的类。在此示例中,我们有 Customer 作为域类,并且我们有与 Customer 相关的服务,例如 AddCustomerEditCustomerDeleteCustomer

生成解决方案 (CTRL+Shift+B)。

4. 将 DomainService 绑定到数据模型

选择 tblCustomer 实体,然后单击 checkbox 以启用“Editing”功能。单击 OK 继续。

生成解决方案 (CTRL+F5)。这将引发运行时错误。由于我们启用了分页,因此需要更新几行代码。

5. 拖放 Domain DataSource

一旦有了数据模型和域服务,就需要将其引入视图层。为此,我们需要拖放 DomainDataSource。我们需要彻底理解这种层次结构。DomainDataSource 帮助与 Domain service 进行通信,而 Domain service 进而与 Data entity model 进行通信。如果您在工具箱中找不到 DomainDataSource 控件,请通过 DLL 在工具箱中引用它。

在空网站的 web.config 文件中添加以下标记,然后再继续将此 DomainDataSource 绑定到 Gridview 控件。以下标记必须在 <System.web> 下添加。

<pages>
    <controls>
	<add tagPrefix="asp" namespace="Microsoft.Web.UI.WebControls" 
		assembly="Microsoft.Web.DomainServices.WebControls" />
    </controls>
</pages>

生成解决方案 (CTRL+F5)。

6. 将 DomainDataSource 绑定到 DomainService

一旦我们在设计视图中有了 DomainDataSource,就需要将此域控件绑定到 Domain Service Class。如下面的图所示,配置 Datasource。

选择域服务类,然后将其绑定到 DomainDataSource 控件。这启用了插入、删除和更新功能。

7. 拖放 GridView 并分配 DomainDataSource

Gridview 拖放到空网站中,并将 Gridview DatasourceDomainDataSource 控件进行配置。选择排序、分页、编辑和删除等所有功能。这将使这些功能在 gridview 中自动化,而无需您编写任何代码。

现在运行应用程序 (CTRl+F5)。这将引发一个运行时错误。这是因为我们启用了分页,为此需要对 DomainService1.cs 文件进行一些更改。需要转到 GetTblCustomer 并注释掉这部分代码

return this.ObjectContext.tblCustomers;

然后添加这个

return this.ObjectContext.tblCustomers.OrderBy(p => p.CustomerID); 

这将根据 CusotmerID 获取 recordset 并将页计数保存在内部。下面的代码是自动生成的,您可以根据需要进行自定义。

 public class DomainService1 : LinqToEntitiesDomainService <AdventureEntities>
    {
       public IQueryable <tblCustomer > GetTblCustomers()
        {
            //return this.ObjectContext.tblCustomers;
            return this.ObjectContext.tblCustomers.OrderBy(p => p.CustomerID);
        }

        public void InsertTblCustomer(tblCustomer tblCustomer)
        {
            if ((tblCustomer.EntityState != EntityState.Detached))
            {
                this.ObjectContext.ObjectStateManager.ChangeObjectState
				(tblCustomer, EntityState.Added);
            }
            else
            {
                this.ObjectContext.tblCustomers.AddObject(tblCustomer);
            }
        }

运行网站,现在您可以使用 WCF RIA Service 功能来更新、删除、排序和导航 recordset

结论

本次演示是 VS2010 WCF RIA 的入门级介绍,还有许多功能可以帮助开发人员创造奇迹。任何建议或更正都非常欢迎。

© . All rights reserved.