Visual Studio 11 中LightSwitch IIS 部署的增强功能
[原文发表地址] LightSwitch IIS Deployment Enhancements in Visual Studio 11
[原文发表时间] 2012-03-29 6:48
注: 此信息只适用于在 Visual Studio 11 测试版中的LightSwitch (LightSwitch V2) 。 关于部署Visual Studio 2010 (LightSwitch V1) 所构建的LightSwitch 应用程序的信息,请参阅:部署指南: 如何配置 Web 服务器来托管 LightSwitch 应用程序
在我的上一篇关于部署的博文中,我指出了一些在Visual Studio 11 测试版中LightSwitch 部署的好处。上星期我深入到 IIS6 和 7 的部署,并发现了Visual Studio 11中的一些好的改进,在这儿我想讨论一些。首先,我想指出这是测试版,所以详细信息可能会更改。不过,我认为在你部署LightSwitch V2 应用程序到 web 服务器中时,指出你所看到的变化是很重要的。由于我们仍在为Azure部署这方面进行改进,所以不打算现在讨论它(也还不能)。这篇文章将只侧重于 IIS 部署。
IIS 设置
尽管添加了几个不错的新功能(下面我将会详述)。但在很大程度上,部署跟之前是一样的。所以你可以完全像以前一样设置你的 web 和 SQL server。关于设置你的 web 服务器的信息,请参阅:
IIS7: 部署指南: 如何配置 Web 服务器来托管LightSwitch应用程序
IIS6: 部署LightSwitch 应用程序到IIS6 & 自动部署包中
真的很不错的地方是你可以部署 LightSwitch V2应用程序 (使用 Visual Studio 11 测试版所构建的) 到任意 web 服务器中,只要是你使用 V1 LightSwitch 2011 Server Runtime前提条件安装的web 服务器。此外,当我们发布 LightSwitch V2 的最终版本(RTM)时,你将不再需要 LightSwitch 服务器的前提条件或任何特定的 LightSwitch 工具。由其他 Visual Studio web 应用程序所使用的同一Web Platform Installer种子也将用于 LightSwitch 应用程序。这将减少设置服务器的步骤,并使部署更具可预测性。继续阅读来看看我们还做了哪些改进。
导入设置
在发布向导中,你会注意到的第一个新功能是一个按钮,它允许你导入一个.PublishSettings 文件来配置部署。在 Visual Studio 中的 Webmatrix 和 Web 应用程序项目也有此功能。为了更容易把.PublishSettings部署到它们的系统上,某些ISPs和hosters会为你提供此文件。关于创建这些文件的详细信息,请查阅: IIS.NET: 生成一个配置XML 文件。
你的选择: 发布数据库架构
另一个新功能是当你做直接部署时,你能够选择是否发布数据库架构,(在发布输出步骤中,你选择"现在就远程发布到服务器")。当你配置你的数据库连接时,现在你将看到一个复选框,它会指示 LightSwitch是否应该尝试更新架构。因此,如果你正在更新你的应用程序,但在数据设计器中没有更改任何架构,然后可以取消选中此框来加快部署。然而,小心 — —如果你不确定的话,请选中此复选框。
此外,如果你在磁盘上生成一个软件包 (在发布输出步骤上,选择"在磁盘上生成一个软件包") 你还可以选择是否生成 SQL 数据库脚本来作为软件包的一部分。
生成和安装部署包
当你选择在磁盘上创建一个部署包,而不是直接部署时,这将会为你创建 一个ZIP 文件包,你可以将其导入到 IIS中。在IIS7 中,你可以使用 IIS Manager来导入该软件包,右击默认网站,然后选择部署 — — > 导入应用程序(请查看部署指南中的详细介绍)。此过程将提示你在安装包和设置数据库时所有必需的参数。然而在 IIS6 中,你需要使用命令行来导入这些,正如我在我的上一篇部署博文 中所展示的.
在LightSwitch V2 中,现在还有这样一组文件,你可以通过命令行使用它们来自动执行导入包和指定参数。这些文件只是起点,如有必要,应该根据你的设置而加以修改。管理员可以使用这些文件来快速获取正确的设置,而不必手动创建这些文件。
如果你打开readme文件,它将详细介绍前提条件以及如何使用这个批处理文件。这与我之前的部署博文中所 (只处理V1 应用程序)详细述说的设置是相似的。这里是.SetParameters.xml中的 V2特定设置(请注意有一个测试版的缺陷,你会看到三个额外的内部参数、"dbFullSql_Path"、"Update web.config connection string "和"LightSwitchApplication_Path",所以如果你看到它们的话,你将需要删除这些行)。
将以下以粗体显示的设置修改为你的特定值:
<?xml version="1.0" encoding="utf-8"?>
<parameters>
<setParameter name="DatabaseAdministratorConnectionString"
value="Data Source=servername\SQLEXPRESS;Initial Catalog=Application1;
User ID=admin;Password=adminPassword" />
<setParameter name="DatabaseServer" value="servername\SQLEXPRESS" />
<setParameter name="DatabaseName" value="Application1" />
<setParameter name="DatabaseUserName" value="dbuser" />
<setParameter name="DatabaseUserPassword" value="dbpassword" />
<setParameter name="Application1_IisWebApplication" value="Default Web Site/Application1" />
</parameters>
请注意 DatabaseAdministratorConnectionString 只用于创建/更新数据库。当LightSwitch V2运行时,DatabaseUserName 和 DatabaseUserPassword 的值被用来在web.config 中构造连接字符串,是 LightSwitch 中间层使用的凭据。
如果你的应用程序使用 Windows 身份验证,你需要指定一个额外参数:
<setParameter name="Application Administrator User Name" value="DOMAIN\UserName" />
如果你的应用程序使用Forms身份验证,则你需要指定三个额外的参数:
<setParameter name="Application Administrator User Name" value="UserName" />
<setParameter name="Application Administrator Full Name" value="Full Name" />
<setParameter name="Application Administrator Password" value="strongPassword" />
一旦你配置了.SetParameters.xml 文件, 复制zip、.cmd 和.xml 文件到 web 服务器中,在那里以管理员身份运行.Deploy.cmd。为了安装包和数据库,请运行:
>Application1.Deploy.cmd /Y
有关更多选项的详细信息,请参阅readme文件。
设置系统管理员用户
在LightSwitch V1 中,当你选择使用Forms或 Windows 身份验证时,无论是最初登陆到数据库中还是到后面完成部署数据库后,部署向导将要求你提供系统管理员的凭据,在这期间它会调用 Microsoft.LightSwitch.SecurityAdmin.exe (该程序是与运行时的前提条件一起安装的)来向数据库插入相应的记录。
现在你在向导中所输入的系统管理员凭据已经标识在web.config 中。所以现在当你首次启动应用程序时,LightSwitch 会查看用户是否存在于数据库中,如果不存在,它将会创建一个。这一策略,即使在没有安装LightSwitch runtime的前提条件下也可以正常运行。所以现在,如果你需要"重置"管理员密码,你可以修改 web.config — — 直接修改或通过重新发布。如果你查看已发布的 web.config ,你将看到这些新的注册表项:
<!-- If no admin user exists, create an admin user with this user name -->
<add key="Microsoft.LightSwitch.Admin.UserName" value="UserName" />
<!-- When creating an admin user with Forms auth, use this as the full name -->
<add key="Microsoft.LightSwitch.Admin.FullName" value="Full Name" />
<!-- When creating an admin user with Forms auth, use this as the pasword -->
<add key="Microsoft.LightSwitch.Admin.Password" value="strongPassword" />
一旦首次运行了应用程序,就添加了系统管理员,你可以删除这些设置来避免无限制地在你的 web.config 中存储密码。
总结
这里讲到的大多数功能是更高级的IIS 部署设置,它们会帮助IT管理员托管/部署 LightSwitch 应用程序。相当不错的是,你可以托管 V2 应用程序,而不用更改你的 V1 服务器。大多数用户不需要知晓这些设置,而是通过以管理员权限安装一个部署包来直接部署,,或在 IIS Manager中使用用户界面来手动导入部署包。但是,如果你希望自动安装软件包,更好地控制你的部署,那么这些新功能应该能帮助你。
希望大家喜欢 !