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






4.84/5 (13投票s)
使用 WCF RIA 服务快速进行 ASP.NET 开发
目录
引言
我们都迫不及待地想看到 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 服务创建 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
的示例表,其中包含两个字段:CustomerID
和 CustomerName
。
生成解决方案 (CTRL+Shift+B)。
3. 创建 Domain Service
现在我们需要创建 Domain services(DomainService.cs)。在“web”菜单下,选择“Domain Service Class”。Domain services 是一个与数据访问层有契约的类。在此示例中,我们有 Customer
作为域类,并且我们有与 Customer
相关的服务,例如 AddCustomer
、EditCustomer
和 DeleteCustomer
。
生成解决方案 (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 Datasource
与 DomainDataSource
控件进行配置。选择排序、分页、编辑和删除等所有功能。这将使这些功能在 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 的入门级介绍,还有许多功能可以帮助开发人员创造奇迹。任何建议或更正都非常欢迎。