上一篇主要介绍了配置数据库生成工具,这一篇就让我们参照着微软提供的实现配置服务指南一步一步来学习如何实现一个简单的自定义配置服务系统。在这个示例指南中,我们将构建一个功能齐全(配置服务框架基类提供)的Windows宿主应用程序用于托管我们的服务;以及一个来连接此服务的托管在IIS中的一个客户端应用程序。并且都实现了配置服务。所有的客户端和宿主应用程序不管是基于IIS的、基于Windows的、基于控制台的或者基于Windows服务的都可以实现配置服务。
第一步:使用配置数据库生成工具
我们将使用配置数据库生成工具来生成一个新的配置服务数据库。步骤如下:
1.打开配置数据库生成工具。
2.选中生成配置数据库Tab。
3.输入一下的字段信息(注意区分大小写,同C#语法)。
· Host Name Identifier: Tutorial Service Host
· Cluster Name: Tutorial Service Cluster
·Configuration Service NameSpace: Tutorial. HostConfigurationImplementation
· Settings Class NameSpace: Tutorial.Settings
· Host Environment: Windows Application
· Service Host Class NameSpace: Tutorial.Host
· Event Log Source: Tutorial Service Event Log
· Node Svc Virtual Path: tutorial/node
· Node Svc Http Port: 8001
· Config Svc Virtual Path: tutorial/config
· Config Svc Http Port: 8001
· Database Server: [你的SQL Server 2005数据库服务器名称],或者.\SQLEXPRESS本地安装的SQL Server 2005速成版
· SQL Login Mode: SQL Authentication
· Admin Login ID: sa
· Password: [SQL Server 2005/SQLExpress的sa帐号密码]
· Name for New Configuration Database: TutorialServiceRepository
4.在点击生成按钮之前检查字段如下输入。
5.点击生成按钮。
6.初始配置数据库就生成,以及一个初始登录帐号"config"和密码"yyy",这个帐号用于你的宿主应用程序连接字符串中并且包含在生成的代码配置文件中"generatedcode/app.config"中。当然你也可以使用SQL Management Studio修改帐号的密码(提醒:如果修改的话不要忘记同时也要修改在app.config中的信息)。
7.此外,其它的一些代码文件也已经生成在和配置数据库生成工具同目录下的"/generatedcode"子目录中,你可以使用这些代码文件完成接下来的示例指南。
第二步:创建你的Visual Studio宿主项目
在这个步骤中我们将使用第一步中配置数据生成工具生成的代码文件完成我们的宿主实现。你甚至不需要输入任何代码;比较麻烦的只是需要为你的项目在使用生成的代码文件中的Using语句添加正确的引用。你可能会注意到并不是所有的代码都是生成的,大部分的功能都是通过配置服务框架提供的基类提供的,你可以自由的修改生成的任何代码,生成代码的意图只是想让你快速的开始自己的项目。
1.打开Visual Studio 2005或者Visual Studio 2008,选择新建一个C# Windows 项目,命名为"TutorialHost"。
2.删除项目中的Form1.cs和Program.cs文件。
3.打开TutorialHost项目的属性窗口。
4.在项目中把程序集名称改为"Tutorial.Host"。
5.修改命名空间为"Tutorial.Host",这里的命名空间的定义需要和刚才用配置数据库生成工具中指定的宿主应用程序命名空间匹配。
6.点击Signing Tab,为生成的程序集指定强命名。输入的key文件名为"tutorialhost.snk"。
7.关闭属性窗口,右键单击项目选择添加已存在项目。
8.浏览\[stocktrader installdir]\Builds\RepositoryCreate\generatedcode目录,选择生成的文件Program.cs、WinHostConsole.cs和App.Config添加到项目中。
· 为项目添加System.Runtime.Serialization.dll和System.ServiceModel.dll的引用。
· 为项目添加配置服务共享类库引用,在目录[stocktrader setup dir]\SharedLibraries\Configuration中,你需要选择如下程序集的引用:
ConfigService.CacheDataContract
ConfigService.DALSQLHelper
ConfigService.IConfigActions
ConfigService.RuntimeHostData
ConfigService.ServiceConfiguration.DALFactory
ConfigService.ServiceConfiguration.DALSQLServer
ConfigService.ServiceConfiguration.IDAL
ConfigService.ServiceConfigurationBase
ConfigService.ServiceConfigurationContract
ConfigService.ServiceHostConsoleBase
ConfigService.ServiceNodeCommunicationContract
ConfigService.ServiceNodeCommunicationImplementation
注意,在完成接下来的两个步骤前,你现在项目还不能通过编译。
第三步:创建你的Visual Studio宿主配置实现项目
在这个步骤中我们继续利用工具生成的代码文件在Visual Studio中创建Tutorial HostConfigurationImplementation项目。
1.在项目中新加一个C#类库项目,命名为TutorialHostConfigurationImplementation。
2.删除Class1.cs文件。
3.打开TutorialHostConfigurationImplementation项目的属性窗口。
4.把程序集名称改为Tutorial.HostConfigurationImplementation。
5.修改默认的命名空间为Tutorial.HostConfigurationImplementation,命名空间需要与刚才用工具生成时输入的命名空间匹配。
6.使用刚才生成的tutorialhost.snk文件为程序集提供一个强命名签名。
7.浏览\[stocktrader installdir]\Builds\RepositoryCreate\generatedcode目录,选择生成的文件ConfigurationAction.cs和ConfigurationService.cs添加到项目中。
8.为项目添加System.Runtime.Serialization.dll和System.ServiceModel.dll的引用。
9.为项目添加配置服务共享类库引用,在目录[stocktrader setup dir]\SharedLibraries\Configuration中,你需要选择如下程序集的引用:
ConfigService.IConfigActions
ConfigService.RuntimeHostData
ConfigService.ServiceConfiguration.DALFactory
ConfigService.ServiceConfiguration.DataContract
ConfigService.ServiceConfiguration.IDAL
ConfigService.ServiceConfigurationBase
ConfigService.ServiceConfigurationContract
ConfigService.ServiceConfigurationHelper
ConfigService.ServiceConfigurationUtility
ConfigService.ServiceNodeCommunication.DataContract
注意,在完成接下来的这个步骤前,你现在项目还不能通过编译。
第四步:创建你的Visual Studio Settings项目
接下来我们将创建一个Settings项目。在项目中的Settings类将包含多个静态字段,在你的应用程序中,这些字段将映射到与你程序特殊设置相关的已存储在配置存储库中的键值。工具生成的类继承自配置服务框架提供的设置基类,这个基类提供了所有类型应用程序实现配置服务所需要的宿主范围内的设置。示例指南的接下来将为我们演示如何使用这个类来创建应用程序特殊设置。值得注意到是,除非这些内容需要通过配置服务数据库集中加载管理(并且通过ConfigWeb动态维持修改状态),否则还是考虑将它们存储在配置文件的<appSettings>配置节中统一加载管理。
1.在项目中新加一个C#类库项目,命名为TutorialSettings。
2.删除Class1.cs文件。
3.打开TutorialSettings项目的属性窗口。
4.把程序集名称改为Tutorial.Settings。
5.修改默认的命名空间为Tutorial.Settings,命名空间需要与刚才用工具生成时输入的命名空间匹配。
6.使用刚才生成的tutorialhost.snk文件为程序集提供一个强命名签名。
7.浏览\[stocktrader installdir]\Builds\RepositoryCreate\generatedcode目录,选择生成的文件Settings.cs添加到项目中。
8.为项目添加配置服务共享类库引用,在目录[stocktrader setup dir]\SharedLibraries\Configuration中,你需要选择如下程序集的引用:
ConfigService.ServiceConfigurationBase
9.接下来我们需要把Settings项目的引用添加到第2步和第3步实现的项目中。
10.把Tutorial.HostConfigurationImplementation和TutorialSettings项目的引用添加到TutorialHost项目中。
11.把TutorialSettings项目的引用添加到TutorialHostConfigurationImplementation项目中。
12.编译整个解决方案确保现在能够编译通过。
13.这样的你就有了一个可执行的文件(Tutorial.Host.exe),你可以通过F5来运行它了。
14.现在你就可以使用ConfigWeb(在http://localhost/configweb)来登录配置服务了。在ConfigWeb的登录页面终结点地址处输入http://localhost:8001/tutorial/config。登录的用户名是localadmin,密码是yyy。
15.你可以使用Windows宿主的Config Users tab或者ConfigWeb来修改localadmin帐号的密码。
通过以上几个步骤我们完成了一个实现了配置服务的宿主示例应用程序的过程。通过微软提供的配置服务框架和配置数据库生成工具,达到目的真的就是如此的简单。下面的几个部分我将与大家学习如何修改服务配置、如何添加自定义设置、如何使用主业务逻辑服务、如何创建一个实现了配置服务的客户端程序以及如何生成客户端代码并在Web页面中使用等。最后将谈谈如何在配置服务体系中使用配置框架提供的分布式缓存功能。