适用范围: yes Visual Studio no Visual Studio for Mac no Visual Studio Code

本演练演示如何创建一个托管在 ASP.NET Web 应用程序中的简单 WCF 数据服务,然后从 Windows 窗体应用程序中访问它。

在此演练中,你将:

  • 创建 Web 应用程序来托管 WCF 数据服务。

  • 创建一个表示 Northwind 数据库中 Customers 表的实体数据模型。

  • 创建 WCF 数据服务。

  • 创建一个客户端应用程序,并添加对 WCF 数据服务的引用。

  • 启用对该服务的数据绑定并生成用户界面。

  • 可以选择向应用程序添加筛选功能。

    如果 WCF 工具未随 .NET 工作负载一起安装,请使用 Visual Studio 安装程序修改安装。 在安装程序中,选择“单个组件”下的“Windows Communication Foundation”。 请参阅 修改 Visual Studio

    本演练使用 SQL Server Express LocalDB 和 Northwind 示例数据库。

  • 如果尚未安装 SQL Server Express LocalDB,可以从 SQL Server Express 下载页 或通过 Visual Studio 安装程序安装。 在 Visual Studio 安装程序中,可以将 SQL Server Express LocalDB 作为数据存储和处理工作负载的一部分或作为单个组件进行安装 。

  • 按照以下步骤安装 Northwind 示例数据库:

  • 在 Visual Studio 中,打开“SQL Server 对象资源管理器”窗口。 (在 Visual Studio 安装程序中 SQL Server 对象资源管理器作为数据存储和处理工作负载的一部分安装。)展开 SQL Server 节点 。 右键单击 LocalDB 实例并选择“新建查询”。

    此时将打开查询编辑器窗口。

  • Northwind Transact-SQL 脚本 复制到剪贴板。 此 T-SQL 脚本从头开始创建 Northwind 数据库并用数据填充它。

  • 将 T-SQL 脚本粘贴到查询编辑器中,然后选择“执行”按钮。

    不久后,查询完成运行并且 Northwind 数据库创建完成。

    本文中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。 你可能正在使用其他版本的 Visual Studio 或其他环境设置。 有关详细信息,请参阅 个性化设置 IDE

    创建 Web 项目

  • 在菜单栏上,依次选择“文件”>“新建”>“项目”。

  • 在“新建项目”对话框中,展开“Visual Basic”或展开“Visual C#”和“Web”节点,然后选择“ASP.NET Web 应用程序”模板

  • 在“名称”文本框中,输入“NorthwindWeb”,然后选择“确定”按钮

  • 在“新建 ASP.NET 项目”对话框的“选择模板”列表中,选择“空”,然后选择“确定”按钮

    在下一步中,创建一个表示 Northwind 数据库中 Customers 表的实体数据模型。

    创建实体数据模型

  • 在菜单栏上,依次选择“项目”>“添加新项”。

  • 在“添加新项”对话框中,选择“数据”节点,然后选择“ADO.NET 实体数据模型”项

  • 在“名称”文本框中,输入 NorthwindModel ,然后选择“添加”按钮 。

    此时将显示实体数据模型向导。

  • 在实体数据模型向导的“选择模型内容”页上,选择“数据库的 EF 设计器”项,然后选择“下一步”按钮

  • “选择你的数据连接” 页上执行下列步骤之一:

  • 如果下拉列表中包含到 Northwind 示例数据库的数据连接,请选择该连接。

  • 选择“新建连接”按钮来配置新数据连接 。 有关详细信息,请参阅 添加新连接

  • 如果数据库需要密码,请选择“是,在连接字符串中包含敏感数据”选项按钮,然后选择“下一步”按钮

    如果显示一个对话框,请选择“是”,将该文件保存到项目中

  • 在“选择版本”页上,选择“Entity Framework 5.0”选项按钮,然后选择“下一步”按钮

    为了使用具有 WCF 服务的 Entity Framework 6 的最新版本,需要安装 WCF Data Services Entity Framework Provider NuGet 包。 请参阅 配合使用 WCF Data Services 5.6.0 和实体框架 6+

  • 在“选择数据库对象”页上,展开“表”节点、选中“客户”复选框,然后选择“完成”按钮

    随即显示实体模型关系图,NorthwindModel.edmx 文件也将添加到项目中。

    接下来创建并测试数据服务。

    创建数据服务

  • 在菜单栏上,依次选择“项目”>“添加新项”。

  • 在“添加新项”对话框中,选择“Web”节点,然后选择“WCF Data Service 5.6”项

  • 在“名称”文本框中,输入 NorthwindCustomers ,然后选择“添加”按钮 。

    NorthwindCustomers.svc 文件将显示在代码编辑器中

  • 在“代码编辑器”中,定位到第一个 TODO: 注释并使用以下内容替换该代码

  • 在菜单栏上,选择“调试”>“开始执行(不调试)”以运行服务 。 此时将打开一个浏览窗口,并显示该服务的 XML 架构。

  • 在地址栏中,在 NorthwindCustomers.svc 的 URL 末尾处输入 Customers ,然后按 Enter 。

    Customers 表中的数据将以 XML 表示形式显示。

    某些情况下,Internet Explorer 会将数据错误解释为 RSS 源。 必须确保禁用显示 RSS 源的选项。 有关详细信息,请参阅 服务引用疑难解答

  • 关闭浏览器窗口。

    在后续步骤中,将创建一个 Windows 窗体客户端应用程序以使用该服务。

    创建客户端应用程序

    若要创建客户端应用程序,请添加另一个项目,再添加该项目的服务引用,配置数据源,并创建用户界面以显示服务中的数据。

    在第一个步骤中,将 Windows 窗体项目添加到解决方案中,并将其设置为启动项目。

    创建客户端应用程序

  • 在菜单栏上,依次选择“文件”、“添加”>“新建项目” 。

  • 在“新建项目”对话框中,展开“Visual Basic”或“Visual C#”节点,选择“Windows”节点,然后选择“Windows 窗体应用程序” 。

  • 在“名称”文本框中,输入 NorthwindClient ,然后选择“确定”按钮。

  • 在“解决方案资源管理器”中,选择“NorthwindClient”项目节点

  • 在菜单栏上,选择“项目”和“设为启动项目”

    在下一步中,将添加对 Web 项目中的 WCF 数据服务的服务引用。

    添加服务引用

  • 在菜单栏上,选择“项目”>“添加服务引用” 。

  • 在“添加服务引用”对话框中,选择“发现”按钮

    NorthwindCustomers 服务的 URL 将显示在“地址”字段中

  • 选择“确定”按钮以添加服务引用

    在下一步中,将配置数据源以启用对服务的数据绑定。

    启用对服务的数据绑定

  • 在菜单栏上,选择“视图”>“其他窗口”>“数据源” 。

    “数据源”窗口随即打开

  • 在“数据源”窗口中,选择“添加新数据源”按钮

  • 在“数据源配置”向导的“选择数据源类型”页上,选择“对象”,然后选择“下一步”按钮

  • 在“选择数据对象”页上,展开“NorthwindClient”节点,然后展开“NorthwindClient.ServiceReference1”节点

  • 选中“Customer”复选框,然后选择“完成”按钮

    在下一步中,将创建用于显示服务中的数据的用户界面。

    创建用户界面

  • 在“数据源”窗口中,打开“Customers”节点的快捷菜单,然后选择“复制”

  • 在“Form1.vb”或“Form1.cs”窗体设计器中,打开快捷菜单并选择“粘贴”

    一个 DataGridView 控件、一个 BindingSource 组件以及一个 BindingNavigator 组件将添加到窗体中。

  • 选择“CustomersDataGridView”控件,然后在“属性”窗口将“Dock”属性设为“填充”

  • 在“解决方案资源管理器”中,打开 Form1 节点的快捷菜单,然后选择“查看代码”以打开代码编辑器,并在文件顶部添加以下 Imports Using 语句 :

    private void Form1_Load(object sender, EventArgs e)
    NorthwindEntities proxy = new NorthwindEntities(new Uri("http://localhost:53161/NorthwindCustomers.svc/"));
    this.CustomersBindingSource.DataSource = proxy.Customers;
    
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim proxy As New NorthwindEntities _
    (New Uri("http://localhost:53161/NorthwindCustomers.svc/"))
            Me.CustomersBindingSource.DataSource = proxy.Customers
        End Sub
    
  • 在“解决方案资源管理器”中,打开“NorthwindCustomers.svc”文件的快捷菜单,然后选择“在浏览器中查看”。 此时将打开 Internet Explorer,并显示该服务的 XML 架构。

  • 从 Internet Explorer 地址栏中复制 URL。

  • 在步骤 4 中添加的代码中,选择 http://localhost:53161/NorthwindCustomers.svc/ 并使用刚刚复制的 URL 替换它。

  • 在菜单栏上,选择“调试”>“启动调试”以运行应用程序 。 此时将显示客户信息。

    现在,你有了一个可以使用的应用程序,该应用程序将显示 NorthwindCustomers 服务中的客户的列表。 如果希望通过该服务公开其他数据,则可以修改实体数据模型以包括 Northwind 数据库中的其他表。

    在下一个可选步骤中,将学习如何筛选服务返回的数据。

    添加筛选功能

    在此步骤中,将自定义应用程序以根据客户所在的城市筛选数据。

    添加根据城市进行筛选的功能

  • 在“解决方案资源管理器”中,打开“Form1.vb”或“Form1.cs”节点的快捷菜单,然后选择“打开”

  • 将“工具箱”中的 TextBox 控件和 Button 控件添加到窗体

  • 打开 Button 控件的快捷菜单,选择“查看代码”,然后在 Button1_Click 事件处理程序中添加以下代码:

    private void Button1_Click(object sender, EventArgs e)
    ServiceReference1.northwindModel.northwindEntities proxy = new northwindEntities(new Uri("http://localhost:53161/NorthwindCustomers.svc"));
    string city = TextBox1.Text;
    if (!string.IsNullOrEmpty(city)) {
    this.CustomersBindingSource.DataSource = from c in proxy.Customers where c.City == city;
    
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim proxy As New northwindEntities _
    (New Uri("http://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
        End Sub
    
  • 在以上代码中,使用 http://localhost:53161/NorthwindCustomers.svc 事件处理程序中的 URL 替换 Form1_Load

  • 在菜单栏上,选择“调试”>“启动调试”以运行应用程序 。

  • 在文本框中,输入“London”,然后选择该按钮。 将仅显示来自 London 的客户。

  • Visual Studio 中的 Windows Communication Foundation 服务和 WCF 数据服务
  • 如何:添加、更新或删除 WCF 数据服务引用
  •