问:首先,我最关心的是会话状态,我想迁移到 Azure,除了更改 web.config 之外不做任何更改,这可能吗?
如果您关心的问题之一是代码重构,那么您应该选择的模型是基础架构即服务。在此模型中,无需更改代码,因为 Azure 上的基础架构可以类似于您在其中配置虚拟机以运行 Windows Server、SQL Server 和 IIS 的本地。软件版本由您选择,没有限制。只要在购买新软件许可证时,该软件版本在 Microsoft 产品生命周期中仍受支持。
如果您希望对 Web 应用程序进行现代化改造,Azure 应用服务可能是一个不错的选择。 Azure 应用服务可以运行针对 .NET 4.0 框架编译的代码。 InProc 会话 状态在 Azure 应用服务中得不到保证,因此如果使用 Azure 应用服务,您需要寻找替代方案,例如 Azure Redis Cache。
问:其次,我们使用 MS SQL SERVER 2012 作为数据库,在 azure 上我们必须使用 Azure SQL 数据库,我认为这与 MS SQL SERVER 不同,我可以使用 Azure SQL 数据库还是我应该仍然使用 MS SQL SERVER,因为我在其上运行应用程序并迁移到 Azure 数据库可能会产生问题?
如果没有影响分析以及您的数据模型有多复杂,很难说 Azure SQL 数据库是否与您的数据库兼容。幸运的是,Microsoft 提供了一个名为 Data Migration Assistant (DAM) 的工具,可帮助您对 Azure SQL 数据库执行数据库兼容性分析。此链接为您提供有关 DAM (https://docs.microsoft.com/en-us/azure/sql-database/sql-database-cloud-migrate) 的更多详细信息。从 SQL Server 迁移到 Azure SQL 数据库将在高可用性、灾难恢复和可扩展性方面获得更多好处。服务器管理和操作系统补丁的管理工作显着减少。使用 Azure VM 中的 SQL Server,迁移成本要低得多,因为您只需迁移和提升(配置 VM、执行数据库分离/附加或其他备份/恢复方法)。
问:第三,假设我选择web+Mobile--> App Service Standard Package(最多附带10个实例)这些实例是什么?单个会话是否总是连接到同一个实例?
不,会话不会在保证模式下保持。当您选择 Azure 应用服务时,您的 Web 应用程序将在运行 Windows Server 和 IIS 的虚拟化服务器上运行。术语“实例”是服务器实例。 Azure 应用服务通过跨多个实例分配计算资源来帮助你处理扩展,以确保你的应用程序不会因内存和资源不足而崩溃。首次配置 Web 应用时的默认值为 1,但实例数是可配置的。
问:第四:我有大约 20 个数据库,其中一个大约 6GB,其他数据库大约 200MB-700MB,如果我使用 Azure SQL 数据库,我应该为数据库使用哪个服务
单一数据库还是弹性数据库?
我可以在弹性模式下创建多个数据库吗?
假设我选择“100 个 eDTU:每个池包含 10 GB 存储,每个池 200 个 DB,0.20 美元/小时”,我将有 10 GB 空间用于弹性池中的所有数据库,每个池是什么,我将有多少个池进入这个选项。
或虚拟机上的 MS SQL SERVER 是更好的选择,因为我可以运行基于 SQL Server 的会话
选择单一数据库还是弹性数据库取决于数据库的性能和峰值负载。单一数据库用于独立数据库,当您可以指定 DTU(数据事务单元)以获得可预测的性能时。而弹性池最适合管理池中的一组数据库。弹性池是不可预测的性能和使用情况的选择。
在您的情况下,我建议使用弹性池来挽救性能。弹性池允许您为池设置 eDTU,无论池中的特定数据库需要多少 DTU。 Elastic Pool 监控并深入执行性能分析,让您深入了解每个数据库的性能。
当谈到池时,您不必担心为每个数据库分配了多少存储空间。您也不必担心可以存储在池中的数据库数量。假设您总共有 20 个数据库,那么您只需要一个池。
您需要的 eDTU 可以通过本网站http://dtucalculator.azurewebsites.net/ 计算。只需在您的 SQL Server(您的本地数据库正在运行的地方)上运行网站中的给定脚本之一以捕获性能指标,然后将 Excel 文件上传到网站。它会给你一个号码。例如,结果表明总共 20 个数据库总共需要 100 个 eDTU。然后,您只需创建一个弹性池并为该池调整 100 eDTU。但是,如果使用 Elastic Pool Basic,每个池仅给您 10 GB,这对于 120 GB (20 * 6 GB) 是不够的,那么您需要 Elastic Pool Standard for 100 eDTU 才能达到最大 750 GB。请注意,您可以选择 1,200 eDTU 的基本计划以实现最大 156 GB。但是,从不推荐这种方式,因为存储空间比 eDTU 便宜得多。
简而言之,根据您上面的草稿信息,我建议选择具有 100 eDTU 的弹性池标准计划。如果不能满足总共 20 个数据库的性能,可以增加 eDTU 的数量。调整 eDTU 编号时无需数据库停机。
仅创建 1 个池并不是我的建议。这取决于您的数据库工作负载。例如,在 20 个数据库中,有 5 个数据库对于 ERP 或关键业务系统来说是繁重的工作量,而其余的只是普通数据库。在这种情况下,您需要两个弹性池。设置了一个具有大量 eDTU 的池,而另一个池具有低数量的 eDTU。
问:第五:磁盘空间,假设我选择应用服务“S2:2 核,3.5 GB RAM,50 GB 存储,0.200 美元”,是 50 GB 磁盘空间,包括操作系统或分配给的空间我们上传的文件?
对于 Azure 应用服务,不计入操作系统。50 GB 存储空间直接分配给您的应用程序空间(用于存储图像、编译的 DLL、视频、库..)
问:第六:我们的一些应用程序用于向 iOS 和 Android 设备发送推送通知,我不确定它们是否可以在 Azure 环境中工作,因为它们需要打开某些端口以及某种证书安装在服务器上。
Azure 通知中心可以帮助您实现推送通知。 Azure Notification Hub 允许您使用各种平台的证书(例如 iOS 来管理设备。如果您熟悉 iOS,这是一个示例参考https://docs.microsoft.com/en-us/azure/notification-hubs/notification-hubs-ios-apple-push-notification-apns-get-started。如果您需要,Azure Notification Hub 还支持基于令牌的 APNS。
对于每个案例,请提供更多详细信息(例如您的移动场景),并尽可能提供具体问题,以便我和这里的人可以详细说明。