如何将C# MVC程序发布到Azure

 

当您编写一个 Web 应用程序在 F# 中,它是用于取决于 MVC 应用程序的部分使用的是 c#,因为框架特意支持 C#。 通过使用视图的 razor 引擎,您可以编写控件视图布局的 C# 代码。 razor 引擎与 Web 窗体引擎是可在新的 ASP.NET 两个呈现引擎和此引擎提供更大的灵活性。 此示例演示两种方法集成 F# C# Web 应用程序。 windows azure 云服务包含一个或多个角色。 此示例由 web 角色,提供网页组成 Web 应用程序和辅助角色,没有用户界面,但执行后台进程。 此示例使用 F# 辅助效果和一个 F# 库 C# web 角色的。

WordGrid 示例是用户可以调用在 Internet 上一个基于关闭的纵横填字谜游戏。 应用程序是一个使用 web 角色云服务 (编写在 c# 中) 显示游戏键盘为网页和 F# 库处理游戏逻辑。 F# 辅助角色提供字典查找服务。 使用 windows azure 队列,辅助角色和 web 角色通信,提供轻量消息传递机制在云服务中可以使用通信来改变之间。 web 角色使用 SimpleMembership 数据库管理用户,因此,同一数据库还包含游戏数据。 用户可以启动与其他用户的游戏同时执行多个游戏。 视图页提供游戏键盘布局和 UI 元素,并且,JavaScript 函数定义逻辑来改变期间,包括拖动的 HTML,计分和验证,并且平铺管理。

还将了解如何迁移本地 SQL Server 数据库到 windows azure 承载的数据库。 此迁移通常是获取运行在 windows 云服务的最复杂的部分 azure。

本演练依赖于以下系统必备组件:

WordGrid 示例是编写游戏的一种常见类型的实现。 当游戏调用时,它与下图类似:

WordGrid 示例

下图显示 WordGrid 示例结构。

WordGrid 应用程序体系结构

MVC 应用程序包含管理员、视图和设计,但是,它还包含处理在客户端的浏览器的游戏效果和 CSS 样式表以确定布局的颜色、字体和详细信息的 JavaScript 代码。 应用程序还包括 MVC 基础结构,例如 App_Start 文件夹的内容。 这些文件从 MVC web 角色的 Internet 应用程序模板保持不变。 除非明确提到在本节中,文件从模板保持不变。

是最接近用户界面和 MVC 特定技术该 app 的部分用 c# 编写。 游戏逻辑层,WordGridGame,在 F# 编写和引用,从该 app 的 MVC 部分的库。 另一个 F# 库,FsAzureHelper,对于 windows azure API 提供 F# 友好的包装。

JJ865569.collapse_all(zh-cn,VS.110).gifControllers

控制器处理传入的 HTTP 请求,确定用户提交窗体的页显示和响应的 URL 参数和值。 在 WordGrid app,管理员分为三个文件:AccountController.cs、BoardController.cs 和 HomeController.cs。 管理员在 c# 编写。 将创建一个 web 角色然后选择 Internet 应用程序 模板时,AccountController.cs 和 HomeController.cs 包括在内。 对 WordGrid app 稍自定义。 BoardController.cs 包含发生的所有 WordGrid 特定逻辑和处理请求,而用户设置和玩游戏。

JJ865569.collapse_all(zh-cn,VS.110).gif视图

视图控件网页的格式。 视图包含 HTML 和创建更多 HTML 根据应用程序的逻辑嵌入 C# 代码。 是在 WordGrid 游戏的内存的键盘用于生成 HTML 表。 可以找到在 Play.cshtml 视图的此代码。 在 shared 文件夹中,随处可见对多页共有的格式。 这些包含由更为具体的页填充的一部分。 这样,您可以确保您的页的一个常见标头和导航。

JJ865569.collapse_all(zh-cn,VS.110).gif设计

模型表示是隐藏页的对象。 在 WordGrid 游戏,模型层在 C# 和窗体在 UI 和游戏逻辑之间的层在 F# WordGrid 项目。

JJ865569.collapse_all(zh-cn,VS.110).gif客户端脚本

除了验证和计分效果外,客户端处理客户端行为的 JavaScript,例如平铺管理和位置。

JJ865569.collapse_all(zh-cn,VS.110).gif游戏逻辑

WordGrid 的游戏逻辑。WordGrid 项目,在 WordGrid.fs 代码文件。 此代码使用类型提供程序与数据库进行交互。

JJ865569.collapse_all(zh-cn,VS.110).gif资源和依赖项

当您要下载 WordGrid 示例时,它会在项目的 App_Data 文件夹中的 .mdf 文件使用一个 LocalDB 数据库中 web 角色。 此数据库的连接字符串出现在两 web.config 文件中:一个位于 WordGrid 项目和其他在 web 角色的项目。

默认情况下,因为该示例不包括字典,WordGrid 示例的单词验证代码被禁用。 若要调用 WordGrid 游戏和验证单词是否有效,在单独的行必须挂钩字典,可以是文本文件,并且每个活动的字符串列表。 您可以轻松找到各种此字典联机,与更改的授权限制。 如果已安装 Microsoft Office 安装,可在 Word 还可以配置 WordGrid 使用该拼写检查程序作为字典。 若要设置任何一个字典选项,请参见代码注释的命令文件中 WorkerRole.fs。

生成,测试,并部署在计算模拟器的示例

  1. 在 Visual Studio 中,打开 windows azure 解决方案,然后选择 F5 键。

    或者,可以,在菜单栏上,选择 调试,启动调试。

    解决方案在计算模拟器开始,因此,WordGrid 登录页在您的浏览器。

  2. 选择 注册 链接,然后输入用户名和密码。

    若要测试该示例,您需要创建第二个用户的游戏。

  3. 选择 注销 指向记录第一个用户,然后重复步骤 2 以创建第二个玩家的用户名。

  4. 选择 新游戏 链接,从可能的匹配列表然后选择另一个玩家。

    游戏在屏幕上启动并显示。

  5. 在委员会平铺进行有效的单词,然后选择 提交。 按钮。

    如果您播放两个玩家,选择浏览器中 返回 按钮返回到登录页,然后注销并再次登录,而另一个用户继续效果。

  6. 若要监控您在计算模拟器的本地部署状态,请选择在任务栏的 windows azure 模拟器图标,然后选择 显示计算模拟器 UI。

  7. 在 服务部署下,展开 WordGrid 的节点,然后选择 MvcWebRole1 实例。

    记录在每个实例的实时显示。 有关可在本地计算机的计算模拟器和其他工具的更多信息,请参见 Windows Azure SDK Tools

设置存储帐户

  1. 登录到 windows azure 管理门户网站,然后选择 新建 按钮。

  2. 在出现的菜单中,选择 数据服务,存储,快速创建,然后输入一个名称存储帐户。

    存储帐户的名称必须只包含小写字母数字字符,不用空格或特殊字符。 该帐户的 URL 是 mystorageaccountname.core.windows.net。

  3. 在区域或关联组列表中,选择最符合您的虚拟机或模板,然后选择以 启用 Geo 副本 复选框。

    没有外加开销,此选项在多于一个存储您的数据在同一区域中的冗余物理位置。

  4. 选择 创建存储帐户 链接完成您的设置和创建存储帐户。

    在 Visual Studio,那么,当您将项目部署到 azure 时,该窗口现在可以设置 WordGrid 项目使用新创建的存储帐户。

  5. 在 windows azure 项目中,打开 MvcWebRole1 的快捷菜单,然后选择 属性。

    角色设计器显示。

  6. 选择 设置 页,然后,在 服务配置 列表中,选择 云。

    如果选择云服务配置,可以对存储帐户使用连接字符串,当您部署到 windows azure 时,但仍使用计算模拟器,当您在运行和调试在本地计算机上。

  7. 在数据网格中的 StorageConnectionString 项旁边的下 … 按钮。

    创建存储连接字符串 出现对话框。

  8. 在 连接方式下,选择 我的订阅 选项按钮。

  9. 如果您以前从未下载一个 .publishsettings 文件您的 windows azure 订阅上,选择 下载发布设置 链接,然后登录到管理门户网站。

    .publishsettings 文件下载。 此文件包含您的订阅和存储帐户凭据,应出现在对话框。

  10. 在存储帐户列表中,选择要为 WordGrid 示例使用的虚拟机或模板,然后选择 确定 按钮。

数据库迁移到 windows azure

  1. 如果尚未创建一个数据库,请在 windows azure 管理门户网站选择 新建 按钮,然后,显示的菜单上,选择 数据库服务,SQL 数据库,快速创建。

    数据库中创建,以便您可以连接到数据库服务器。 无法使用数据库,因为您将创建另一个,当您导入 WordGrid 数据。 如果您已具有一个数据库服务器,则可以跳过此步骤

  2. 创建用户名和密码如会进行提示。

    在数据库连接字符串将使用此用户名和密码。

  3. 选择 允许在防火墙规则的连接 链接。

    允许的 IP 地址 页。 在此页上,可以设置防火墙允许与数据库服务器的产生的连接。

  4. 执行以下步骤之一:

    • 如果您的开发计算机使用动态 IP 地址,请查看您的计算机使用地址范围,然后输入这些值在 起始 IP 地址 和 结束 IP 地址 文本框。

      如果您不知道您的 IP 地址范围,请与网络管理员联系。

    • 如果您的开发计算机具有静态 IP 地址,输入在 起始 IP 地址 文本框和 结束 IP 地址 文本框。

  5. 在 允许的服务下,请确保 windows azure 服务 组件设置 是。

  6. 打开 SQL Server 管理工作室

    必须调用该本地数据库。windows azure。 该本地数据库包括作为 .mdf 文件在该 MvcWebRole1 项目的 App_Data 子文件夹。

    连接到 LocalDB 服务器为 Visual Studio 2012 中,(localdb)\v11.0。

  7. 打开本地 WordGrid 数据库。

    其名称以“aspnet-MvcWebRole1 启动”。如果多个数据库具有类似的名称,请确保该数据库以与 WordGrid MvcWebRole1 项目的 .mdf 文件。

  8. 打开本地 WordGrid 数据库节点的快捷菜单上,选择 任务,选择 部署数据库 to SQL azure,然后选择 下一个。

  9. 在 部署设置 页上,选择 连接 按钮。

  10. 在 服务器名称 框中,输入您在第 1. 来创建数据库服务器的地址。

    例如,输入 servername.database.windows.net。

  11. 输入您在第 1. 中创建的用户名和密码。

    说明 说明

    如果创建了其他数据库用户,不要使用这些凭据此处,除非它们具有权限创建在服务器上的数据库。

  12. 在 新数据库名称 文本框中,输入 wordgrid 作为新数据库的名称,然后选择 下一个 按钮。

    摘要建议的数据库部署的页。

  13. 验证所有信息是否正确,然后选择 完成 按钮。

    数据库服务器上创建,当从本地数据库和复制数据的任何架构。

  14. 打开管理门户网站,选择 新建 按钮,然后,在出现的菜单上,选择 数据库服务,SQL 数据库,导入。

  15. 指定 wordgrid 为数据库名称,然后选择或创建服务器。

    数据库中创建并添加到您的订阅可用的资源的列表。

  16. 在资源列表中,选择您创建的数据库。

    该数据库的页。

  17. (可选) windows azure SQL 数据库不支持 windows 身份验证。 因此,您必须使用 SQL Server 用户名和密码。 可以使用您在步骤 1 中创建,但是,用户也可以访问其他数据库的同一服务器的用户名和密码。 如果希望限制访问,则可以创建用户名和密码仅 wordgrid 数据库的。 这些凭据可以使用用户名和密码不同数据库服务器的。 若要创建具有受限制访问权限的凭据,请执行以下步骤:

    1. 选择 管理 按钮,然后输入用户名和密码在第 1. 中创建的数据库服务器的。

    2. 选择 选择数据库 按钮,从数据库列表然后选择 主机。

    3. 选择 新建查询 按钮,然后输入以下 SQL 代码,与新创建的用户名和密码:

       
      CREATE LOGIN loginname WITH PASSWORD='myPassword'
      

      现在可以创建此登录的数据库用户可以授予对 wordgrid 数据库的权限。

    4. 选择显示数据库所连接的按钮 (当前 主机)。

    5. 在出现的选择,选择要导入的 wordgrid 数据库,选择 新建查询 按钮,然后输入以下代码:

       
      CREATE USER username FOR LOGIN loginname
      
    6. 选择 运行 按钮,然后关闭选项卡。

  18. 在 wordgrid 数据库的页上,选择 显示连接字符串 链接,然后复制 ADO.NET 连接字符串到剪贴板。

    粘贴连接字符串到的 MVC 项目的顶级 web.config 文件,下面的代码显示。

     
     
    <connectionStrings>
        <add name="DefaultConnection" connectionString="<Paste here>" providerName="System.Data.SqlClient" />
        </connectionStrings>
    

    在 WordGrid F# 项目中的 web.config 文件中将连接字符串保持不变。 该字符串用于 F# 类型提供程序只能在编译时。

  19. 选择 F5 键生成和调试该应用程序在计算模拟器,现在使用 windows azure SQL 数据库而不是您的 LocalDB 数据库。

    有关 LocalDB 的更多信息,请参见 SQL Server 2012 Express LocalDB 有关 windows azure 数据库的更多信息,请参见 Windows Azure SQL Database

发布应用程序作为云服务

  1. 打开 windows azure 项目的快捷菜单,然后选择 发布。

    发布 windows azure 应用程序出现向导。

  2. 如果尚未运行发布 windows azure 应用程序向导,在并且尚未下载 .publishsettings 文件之前,选择。登录 页的 下载登录凭据 链接,然后输入您的凭据。

    .publishsettings 文件下载。

  3. 选择 导入 按钮填充排序内容。

  4. 在 您选择的订阅 列表中,选择订阅为此部署使用。

    现在可以发布应用程序或修改任何设置为此部署。

  5. 选择“下一步”按钮。

    设置页。

  6. 在 环境 列表中,选择 正在暂存。

  7. 在 生成配置 列表中,选择 调试。

    临时环境是完全可访问 Internet 上部署位置,除此之外,而不是发布到公共 URL 云服务,该服务发布到包含一个计算机生成的字符串的 URL。 此环境进行测试和验证很有用在最终发布之前。 当您在临时环境中若要提升您云服务添加到公共 URL 时,可以交换生产环境的临时环境。

  8. 选择 高级设置 选项,并且,在 存储帐户 列表中,选择您创建的存储帐户。 另外,请确保 启用 IntelliTrace 复选框处于选中状态。

  9. 当您准备好部署应用程序作为云服务时,请选择 下一个,检查设置,然后选择 发布。

    使用 Windows Azure 活动日志 Visual Studio 中的窗口来监视部署的进度。

    有关如何发布云服务的更多信息,请参见 Publishing Cloud Services to Windows Azure from Visual Studio

使用 IntelliTrace 记录调试应用程序

  1. 在 服务器资源管理器,打开 Windows Azure 计算 节点的快捷菜单,然后选择 添加部署环境…。

    添加部署环境 出现对话框。

  2. 在 选择部署环境下,展开您的订阅的节点,展开 WordGrid 云服务的节点,选择 WordGrid -临时 部署环境。 然后选择 确定 按钮。

  3. 在 服务器资源管理器,展开 MvcWebRole1 角色,打开 0 的实例节点的快捷菜单,然后选择 视图 IntelliTrace 记录。

    此操作进度显示 Windows Azure 活动日志 窗口。 在一段时间后,记录在 Visual Studio 中打开。 异常、线程、请求和其他信息列出有关此实例出现。 还可以重新生成线程的状态在 Visual Studio 调试器的。 请注意 IntelliTrace 调试会话相当有限的与调试比较局部,因此,该最优方法是执行尽可能多的计算在模拟器上调试,在部署应用程序。

原文地址:https://www.cnblogs.com/sennly/p/4181669.html