微软StockTrader 2.03 学习笔记(4)--配置数据库生成工具介绍
StockTrader 2.03版本的发布为我们这些想要在自己的分布式系统中快速搭建属于自己的配置管理功能的Fans们带来了不少的惊喜!微软大牛们良好的设计更为我们提供了简化的实现方案以及强大的可扩展能力。其中的附带的配置数据数据生成工具更为我们快速实现自定义配置服务提供了捷径。这篇文中我就先来简单介绍一下如何使用这个配置数据库生成工具。
这个工具是随着StockTrader一起安装的, 你可以在StockTrader的程序安装组的Configuration Service Tab下找到它。应用程序名叫Repository Creation Tool,配置存储库生成工具。这个工具的官方的定义是为你的应用程序或服务生成初始配置数据库的。同时它还能为你自动生成自定义配置服务的部分初始功能的源代码文件。也可以生成从客户端调用目标服务的服务代理类源代码文件,目标服务可以是实现了配置的,没有实现配置以及基于不同平台的java服务等。用工具生成的客户端代理类的最大好处是为调用远程服务集成了自动负载均衡和故障转移的能力,不管远程目标服务是否实现了配置服务。更值得注意到是任何其他类型的服务客户端(Java,.net,php等)也能实现对你的服务基于节点的访问。
配置存储库是使用SQL Server 2005创建的,要使用生成工具你必须先安装好SQL Server 2005,并让数据库实例配置能混合模式登录和允许远程登录。同时你还需要有一个对此数据库的有效SQL Server验证管理员登录帐号和密码,如sa帐号。在SQL Server中你使用的登录账户必须具有创建数据库和修改Master数据的管理员权限。
需要特别注意的是一但配置数据库生成完毕我们当初设置的值就不能再通过工具来轻松的改变了,除非去手动修改配置数据库信息了。或者重新生成一个新的数据库来替换现在的数据库,所以输入设置的时候要特别小心,考虑仔细了再点提交。
创建配置数据库和配置服务底层功能代码文件:
宿主名称标识(Host Name Identifier),为你的服务容器或跨多个虚拟运行节点的主宿主程序指定一个名称,可以是小于200个字符的任意名称,例如"Simple Service Host"。
配置服务命名空间(Configuration Service Namespace),需要输入区分大小写的,全限定命名空间名称,此命名空间将用于实现配置服务的程序集中。例如服务名称"SimpleService",命名空间名称为"Sample.SimpleServiceConfigurationImplementation",以后你创建配置服务实现项目时必须准确的使用这个命名空间。
设置类命名空间(Settings Class Namespace),为你的设置类指定命名空间,例如"Sample.Settings",生成的设置类继承于共享配置类库提供的基设置类,稍候你可以扩展它,以实现自己应用程序中的特殊设置。(包括任何东西,这些东西之前你可能是通过配置文件或直接在代码中管理的,现在想通过配置数据库统一的,动态的来管理。)
宿主环境(Host Environment),很强大的一个功能,在这里你可以选择一种准备托管服务的宿主程序。注意你可以创建托管不同类型服务的多个宿主程序,然后把它们运行在同一台机器上;当然你也可以在一个具有相同配置的服务主宿主程序中托管多个服务,包括各种WCF服务宿主或者工作流服务宿主。当你选择托管在IIS中,工具将会我们生成一个用来在ASP.NET工作进程中运行的ASP.NET Web应用程序做为宿主程序。这个的ASP.NET应用程序不仅可以托管你的服务,也可以包含任何数量的Web页面和其他内容。当你选择托管在Windows应用程序中,工具将会为你生成使用Windows服务宿主基类的代码。当然之后你也可以使用你喜欢的任何自定义的程序。总之生成的结果在于你的选择。
服务宿主类命名空间(Service Host Class Namespace),区别于IIS托管模式,当你选择了自托管宿主的模式时才可以使用此输入。输入区分大小写的,全限定命名空间名称以用于你的宿主程序。例如"Sample.Host"。
事件日志来源(Event Log Source),输入Windows事件日志来源的名称。这个非常重要,因为配置服务会把整个过程中的操作、警告和错误的详细信息都记录到这个来源名称下。默认情况下,有关信息的数据也会记录在这里,当部署在生成环境时,你可以关闭有关具体信息的日志功能,而仅包含警告和错误信息。需要注意到是,群集环境下为了统一管理事件来源,可以通过提供的命令行操作工具(\stocktrader\Setup\Util\installnewevent.cmd),在每个新增的应用程序或服务宿主节点上同时登记这个事件源。例如"Simple Service Event Log Source"。
节点间通讯服务虚拟路径(Node Svc Virtual Path),当使用IIS托管服务时,必须使用在IIS中你服务或Web应用程序的虚拟目录名作为前置。通常情况下,你需要的服务文件名是Node.svc,文件要用工具来生成。因此,如果你的服务或程序在IIS中托管虚拟目录名为SimpleVDir,你就需要输入"SimpleVDir/node.svc"。而服务的访问入口也就是"http://localhost/SimpleVDir/node.svc"。当不使用IIS托管服务时(Windows, Console or Windows Service),你就可以输入任何有效的路径,不需要node.svc,例如"SimpleService/Node"。
节点间通讯服务端口(Node Svc Port),通常情况下,在IIS中托管服务将会使用IIS的默认端口80,除非需要使用SSL,那将使用443端口。在非IIS托管服务中,你可以选择任何一个不与其他程序冲突的端口,一般选择在5000-65534。注意:节点间通讯服务端口和配置服务端口如果使用相同的协议也可以使用相同的端口。端口可以不唯一,但服务虚拟路径必须是唯一的。
配置服务虚拟路径(Config Svc Virtual Path), 当使用IIS托管服务时,必须使用在IIS中你服务或Web应用程序的虚拟目录名作为前置。通常情况下,你需要的服务文件名是config.svc,文件要用工具来生成。因此,如果你的服务或程序在IIS中托管虚拟目录名为SimpleVDir,你就需要输入"SimpleVDir/config.svc"。而服 务的访问入口也就是"http://localhost/SimpleVDir/config.svc"。当不使用IIS托管服务时(Windows, Console or Windows Service),你就可以输入任何有效的路径,不需要config.svc,例如"SimpleService/config"。
配置服务端口(Config Svc Port),通常情况下,在IIS中托管服务将会使用IIS的默认端口80,除非需要使用SSL,那将使用443端口。在非IIS托管服务中,你可以选择任何一个不与 其他程序冲突的端口,一般选择在5000-65534。注意:节点间通讯服务端口和配置服务端口如果使用相同的协议也可以使用相同的端口。端口可以不唯 一,但服务虚拟路径必须是唯一的。
数据库服务器(Database Server),输入托管你SQL Server 2005数据库实例的Ip地址或dns名称。
数据库登录模式(SQL Login Mode),你必须使用SQL验证,例如,使用sa账号或者其他具有管理Master数据库权限的账号。
管理员登录ID(Admin Login ID),输入具有SQL Server 2005完全管理权限的有效登录帐号,如sa帐号。
管理员登录密码(Admin Password),输入登录帐号的密码。
配置数据库名称(Name for Configuration Database),输入你期望的配置存储数据库名称。
以上信息全部选择输入完成后,点击最下面的生成按钮,工具就开始帮你生成匹配以上初始化设置的配置数据库以及一些代码和配置文件,这些文件包含在同生成工具同一目录的/generatedcode子目录下。生成数据库的同时也为你生成了一个初始登录帐号,用户名为Config密码为yyy。这个帐号一般是用在你宿主应用程序中的连接字符串中的登录帐号,主要包含在生成的"generatedcode/app.config"文件中。当然你也可以使用SQL管理工具来修改此密码,需要注意的是不要忘记在app.config中连接字符串的修改和重建你的宿主应用程序。生成的这些代码文件和配置文件是帮你来完成配置服务实现的,使用的命名空间就是你之前在工具中设置的,当然之后你也可以通过任何方式自由的修改成你所期望的。