演练:在 Visual Studio 中创建和访问 WCF 数据服务
本演练演示如何创建一个承载于 ASP.NET Web 应用程序中的简单 WCF 数据服务,然后从 Windows 窗体应用程序中访问它。
在此演练中,将:
创建 Web 应用程序以承载 WCF 数据服务。
创建一个表示 Northwind 数据库中 Customers 表的 实体数据模型。
创建 WCF 数据服务。
创建一个客户端应用程序,并添加对 WCF 数据服务的引用。
启用对该服务的数据绑定并生成用户界面。
可以选择向应用程序添加筛选功能。
系统必备
您需要以下组件来完成本演练:
Northwind 示例数据库。
如果没有在开发计算机中安装此数据库,可以从 Microsoft 下载中心进行下载。 有关说明,请参见下载示例数据库 (LINQ to SQL)。
创建服务
若要创建 WCF 数据服务,您将添加一个 Web 项目,创建一个实体数据模型,然后通过此模型创建服务。
首先,将添加一个 Web 项目以承载服务。
提示
对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您所使用的 Visual Studio 版本和您所使用的设置。有关更多信息,请参见 Visual Studio 设置。
创建 Web 项目
在 Visual Studio 的**“文件”菜单上单击“新建项目”**。
在**“新建项目”对话框中,展开“Visual Basic”或“Visual C#”节点,接着单击“Web”,然后选择“ASP.NET Web 应用程序”**。
在**“名称”字段中,键入“NorthwindWeb”,然后单击“确定”**创建项目。
在此步骤中,您将创建一个表示 Northwind 数据库中 Customers 表的 实体数据模型。
创建实体数据模型
在**“项目”菜单上,单击“添加新项”**。
在**“添加新项”对话框中,选择“ADO.NET 实体数据模型”**。
在**“名称”字段中,键入 NorthwindModel,然后单击“添加”**。
将显示实体数据模型向导。
在实体数据模型向导中,选择**“从数据库生成”,然后单击“下一步”**。
在**“选择您的数据连接”**页上执行下列步骤之一:
如果下拉列表中包含与 Northwind 示例数据库的数据连接,请单击该连接。
- 或 -
单击**“新建连接”**来配置新的数据连接。 有关更多信息,请参见How to: Create Connections to SQL Server Databases。
如果数据库需要密码,请选择该选项以包括敏感数据,再单击**“下一步”**。
提示
如果出现一个对话框,请单击“是”将该文件保存到您的项目中。
在**“选择数据库对象”页中,展开“表”节点,选中“Customers”旁边的复选框,然后单击“完成”**。
随即显示实体模型关系图,NorthwindModel.edmx 文件也将添加到项目中。
在此步骤中,您将创建并测试数据服务。
创建数据服务
在**“项目”菜单上,单击“添加新项”**。
在**“添加新项”对话框中,选择“WCF 数据服务”**。
在**“名称”字段中,键入 NorthwindCustomers,然后单击“添加”**。
NorthwindCustomers.svc 文件将显示在**“代码编辑器”**中。
在**“代码编辑器”**中,定位到第一个 TODO: 注释并使用以下内容替换该代码:
Inherits DataService(Of northwindEntities)
public class NorthwindCustomers : DataService<northwindEntities>
提示
根据所使用的 Northwind 数据库的版本,您可能需要将“NORTHWIND”更改为“NORTHWND”。 还可以使用 IntelliSense 来发现正确的名称。
使用下面的代码替换 InitializeService 事件处理程序中的注释:
config.SetEntitySetAccessRule("*", EntitySetRights.All)
config.SetEntitySetAccessRule("*", EntitySetRights.All);
按“Ctrl+F5”运行此服务。 将打开一个浏览窗口,并显示该服务的 XML 架构。
在**“地址”**栏中,在 NorthwindCustomers.svc 的 URL 末尾处键入 Customers,然后按 Enter。
Customers 表中的数据将以 XML 表示形式显示。
提示
某些情况下,Internet Explorer 会将数据错误解释为 RSS 源。 必须确保禁用显示 RSS 源的选项。 有关更多信息,请参见服务引用疑难解答。
关闭浏览器窗口。
在接下来的步骤中,将创建一个 Windows 窗体客户端应用程序以使用该服务。
创建客户端应用程序
若要创建客户端应用程序,您将另外添加一个项目,添加对该项目的服务引用,配置数据源,并创建一个用户界面以显示服务中的数据。
在第一个步骤中,您将 Windows 窗体项目添加到解决方案中,并将其设置为启动项目。
创建客户端应用程序
在 Visual Studio**“文件”菜单上单击“添加”,然后单击“新建项目”**。
在**“新建项目”对话框中,展开“Visual Basic”或“Visual C#”节点,接着单击“Windows”,然后选择“Windows 窗体应用程序”**。
在**“名称”字段中,键入 NorthwindClient,然后单击“确定”**打开项目。
在**“解决方案资源管理器”**中,选择 NorthwindClient 项目。
在**“项目”菜单上单击“设为启动项目”**。
在此步骤中,将添加对 Web 项目中的 WCF 数据服务的服务引用。
添加服务引用
在**“项目”菜单上单击“添加服务引用”**。
在**“添加服务引用”对话框中,单击“发现”**。
NorthwindCustomers 服务的 URL 将显示在**“地址”**字段中。
单击**“确定”**以添加此服务引用。
在此步骤中,将配置数据源以启用对服务的数据绑定。
启用对服务的数据绑定
在**“数据”菜单上,单击“显示数据源”**。
在**“数据源”窗口中,单击“添加新数据源”**。
在**“数据源配置向导”的“选择数据源类型”页上,单击“对象”,然后单击“下一步”**。
在**“选择希望绑定到的对象”页上,展开“NorthwindClient”节点,然后展开“NorthwindClient.ServiceReference1”**节点。
选择**“Customers”,然后单击“完成”**。
在此步骤中,您将创建用于显示服务中的数据的用户界面。
创建用户界面
将**“Customers”节点从“数据源”**窗口拖动到窗体中。
一个 DataGridView 控件、一个 BindingSource 组件以及一个 BindingNavigator 组件将添加到窗体中。
双击窗体以打开代码编辑器,然后向 Form1_Load 事件处理程序添加以下代码:
Dim proxy As New ServiceReference1.northwindModel.northwindEntities _ (New Uri("https://localhost:53161/NorthwindCustomers.svc/")) Me.CustomersBindingSource.DataSource = proxy.Customers
ServiceReference1.northwindModel.northwindEntities proxy = new ServiceReference1.northwindModel.northwindEntities(new Uri("https://localhost:53397/NorthwindCustomers.svc/")); this.customersBindingSource.DataSource = proxy.Customers;
提示
根据所使用的 Northwind 数据库的版本,您可能需要将“NORTHWIND”更改为“NORTHWND”。 还可以使用 IntelliSense 来发现正确的名称。
在**“解决方案资源管理器”中,右击 NorthwindCustomers.svc 文件,然后单击“在浏览器中查看”**。 Internet Explorer 随即打开,并显示该服务的 XML 架构。
从 Internet Explorer 地址栏中复制 URL。
在步骤 2 中添加的代码中,选择 https://localhost:14735/NorthwindCustomers.svc 并使用刚刚复制的 URL 替换它。
按 F5 运行该应用程序。 即会显示客户信息。
现在,您有了一个可以使用的应用程序,该应用程序将显示 NorthwindCustomers 服务中的客户的列表。 如果希望通过该服务公开其他数据,则可以修改实体数据模型以包括 Northwind 数据库中的其他表。
在下一个可选步骤中,将学习如何筛选服务返回的数据。
添加筛选功能
在此步骤中,将自定义应用程序以根据客户的城市筛选数据。
添加根据城市进行筛选的功能
在**“解决方案资源管理器”**中,双击“Form1.vb”或“Form1.cs”以显示 Windows 窗体设计器。
双击 Button 控件,然后在 Button1_Click 事件处理程序中添加以下代码:
Dim proxy As New ServiceReference1.northwindModel.northwindEntities _ (New Uri("https://localhost:53161/NorthwindCustomers.svc")) Dim city As String = TextBox1.Text If city <> "" Then Me.CustomersBindingSource.DataSource = From c In _ proxy.Customers Where c.City = city End If
ServiceReference1.northwindModel.northwindEntities proxy = new ServiceReference1.northwindModel.northwindEntities(new Uri("https://localhost:53397/NorthwindCustomers.svc/")); string city = textBox1.Text; if (city != "") { this.customersBindingSource.DataSource = from c in proxy.Customers where c.City == city select c;
在以上代码中,使用 Form1_Load 事件处理程序中的 URL 替换 https://localhost:14735/NorthwindCustomers.svc。
按 F5 运行该应用程序。
在文本框中,键入 London,然后单击相应的按钮。 将仅显示来自 London 的客户。