任务 3:创建持久性服务客户端
在本任务中,您将创建一个对持久性服务调用操作的简单客户端。测试工具 WcfTestClient.exe 供 WCF 服务库模板使用。
创建客户端
在 SimpleDurableService 解决方案中,右击**“解决方案资源管理器”**窗格中的解决方案节点。
导航到**“添加”,选择“新建项目”**。
在**“新建项目”对话框中的“Windows”下,选择“控制台应用程序”**。
将项目命名为 DurableServiceTestClient,然后单击**“确定”**。
右击 DurableServiceTestClient 项目节点,然后选择**“添加引用”**。
在**“添加引用”对话框中的“.NET”选项卡下,选择 System.ServiceModel 程序集,然后单击“确定”**。
在 C# 源文件中添加下面的 using 语句:
如果您创建的是 Visual Basic 解决方案,请右击 DurableServiceTestClient 项目节点,然后选择**“属性”。选择“引用”选项卡,然后在“导入的命名空间”下选中“System.ServiceModel”**。
- 使用 SvcUtil.exe 生成持久性服务的代理代码和配置文件。
使用 SvcUtil.exe
若要使用 SvcUtil.exe,请参见 ServiceModel Metadata Utility Tool。
生成代理代码和配置文件之后,通过以下操作将这些文件添加到 DurableServiceTestClient 项目:- 导航到**“解决方案资源管理器”**窗格。
- 右击 DurableServiceTestClient 项目节点。
- 突出显示**“添加”并选择“现有项”**。
- 导航到 SvcUtil.exe 生成配置文件和代理代码文件的文件夹。
- 选择这些文件,然后单击**“确定”**。
- 将您的配置文件重命名为 App.config(如果它尚未使用此名称)。
- 将以下代码添加到 Main 方法实现:
创建持久性服务客户端与创建常规 WCF 服务客户端的方法相同。根据服务的代理代码创建该客户端的一个新实例。接下来,先调用 Open,再调用服务操作。最后,调用 Close 以关闭客户端。
若要在 SimpleDurableService 解决方案中配合使用客户端与持久性服务,必须从 SimpleDurableService 项目属性中删除命令行参数。为此,请执行下列步骤:
- 右击 SimpleDurableService 项目节点,然后选择**“属性”**。
- 选择**“调试”选项卡,然后在详细信息窗格中的“启动选项”**下,移除文本框中的 /client:"WfcTestClient.exe"。
右击 SimpleDurableService 解决方案节点,然后选择**“属性”**。
在“属性页”对话框中,选择**“多启动项目”**。
如果 SimpleDurableService 未作为顶级项列在列表中,请使用列表框侧面的箭头将它设为顶级项。您需要执行此操作,以便该服务在客户端应用程序尝试对它调用任何操作之前开始运行。
对于列表中的每个项目,将操作从**“无”更改为“启动”**。
单击**“应用”,然后单击“确定”**。
生成服务和客户端项目。您可以在 IIS、Windows 应用程序或任何其他宿主进程中承载持久性服务,但对于本教程,您将在 WfcSvcHost.exe 中承载持久性服务。WcfSvcHost.exe 是一种承载服务的开发人员工具,以供测试使用。
从客户端的命令行接口,您将看到以下输出:The current value is 3 The current value is -1 The current value is -5 Press <ENTER> to shut down the client.
查看每个操作后发生的持久性(EndPersistence 除外)的一种方法是,从 https://www.microsoft.com/downloads 安装 Microsoft SQL Server Management Studio Express 并通过客户端应用程序设置调试点。达到那些调试点后,在 NetFx35Samples_DurableServiceStore 数据库中查看 InstanceData 表。您会看到一个新项添加到了表中,在完成 EndPersistence 调用之前,每次操作后该项都进行更新。完成 EndPersistence 调用后,将移除该表项。
查看持久性服务的值的另一种方法是:从客户端对服务进行第一次操作调用,并在 Visual Studio 中设置操作调用的断点。在执行第三次操作调用之前,关闭并重新启动服务。立即执行操作调用。服务状态现在从持久性数据库中还原,您将能看到服务返回当前值所需的答复。
另请参见
任务
任务 1:定义和实现持久性服务协定
任务 2:为持久性服务启用持久性
其他资源
版权所有 (C) 2007 Microsoft Corporation。保留所有权利。