Windows Azure 网站:应用程序字符串和连接字符串的工作原理

编辑人员注释:本文章由 Windows Azure 网站团队的首席项目经理 Stefan Schackow 撰写。

Windows Azure 网站上有一个方便的功能,即开发人员可将 Azure 中的键值字符串对存储在与网站相关的配置信息中。在运行时,Windows Azure 网站会自动检索这些值,使这些值可供网站中运行的代码使用。开发人员可以存储普通键值对,以及将用作连接字符串的键值对。

由于键值对存储在 Windows Azure 网站配置存储的后台,因此不需要存储在 Web 应用程序的文件内容中。从安全角度而言,这是一个附带好处,因为包含密码的 SQL 连接字符串等敏感信息永远不会以明文形式显示在 web.config 或 php.ini 文件中。

可以在 Azure 门户的“Configure”选项卡中输入网站的键值对。以下快照显示了此选项卡上可输入密钥和关联值的两个位置:

您可以将键值对输入为“应用程序设置”或“连接字符串”。唯一的区别在于连接字符串包括一些额外元数据,告知 Windows Azure 网站该字符串值是数据库连接字符串。对于在网站中运行的下游代码及特殊情况下连接字符串的一些行为,此方法十分有用。

将键值对作为环境变量进行检索

开发人员输入其网站的键值对后,网站内运行的代码可以在运行时检索该数据。

Windows Azure 网站通常通过环境变量向正在运行的网站提供这些值。例如,使用之前快照中显示的数据。以下是 ASP.NET 中一个输出环境变量中的数据的代码段:

以下是通过前面的代码段查看的示例页面输出:

[注释:本文章中 SQL 连接字符串的敏感部分故意留空并标上了星号。但是请放心,在运行时您可获取完整的连接字符串,包括服务器名称、数据库名称、用户名和密码。]

由于“应用程序设置”和“连接字符串”键值对存储在环境变量中,因此开发人员可以轻松地从 Windows Azure 网站中支持的任何 Web 应用程序框架检索这些值。例如,以下代码段显示了如何使用 php 检索这些设置:

 

 

通过前面的示例,您会注意到用于引用各个密钥的命名模式。对于“应用程序设置”,相应环境变量的名称会在前面加上“APPSETTING_”。

“连接字符串”有一个命名约定,可根据您在数据库下拉列表中选择的数据库类型,给环境变量加上前缀。示例代码使用的是“SQLAZURECONNSTR_”,因为已配置的连接字符串已在下拉列表中选择“Sql Databases”。

数据库连接字符串类型和用于命名环境变量的前置字符串的完整列表如下所示:

如果选择“Sql Databases”,前置字符串为“SQLAZURECONNSTR_”

如果选择“SQL Server”,前置字符串为“SQLCONNSTR_”

如果选择“MySQL”,前置字符串为“MYSQLCONNSTR_”

如果选择“Custom”,前置字符串为“CUSTOMCONNSTR_”

在 ASP.NET 中检索键值对

到目前为止,我们已经展示了在门户中输入的键值对如何通过环境变量流向 Web 应用程序。ASP.NET Web 应用程序还可以使用一些出人意料的运行时魔术。.NET 开发人员会觉得不同键值类型的名称似乎看起来很熟悉。“应用程序设置”将整齐地映射到 .NET Framework 的 appSettings 配置。同样,“连接字符串”对应于 .NET Framework 的 connectionStrings 集合。

以下是另一个显示如何使用 System.Configuration 类型引用应用程序设置的 ASP.NET 代码段:

请注意之前输入到门户中的值如何自动成为 AppSettings 集合的一部分。如果应用程序设置恰巧已存在于 web.config 文件中,Windows Azure 网站将在运行时使用与网站相关的值自动覆盖这些应用程序设置。

连接字符串的工作方式与此类似,但有一个额外的小要求。记得前文有一个名为“example-config_db”的连接字符串与网站相关联。如果网站的 web.config 文件在 <connectionStrings /> 配置部分中引用该连接字符串,则 Windows Azure 网站会在运行时使用门户中显示的值自动更新该连接字符串。

但是,如果 Windows Azure 网站未能从 web.config 中找到名称相匹配的连接字符串,则在门户中输入的连接字符串将只能作为环境变量使用(如之前所示)。

举例来说,假定 web.config 条目如下所示:

网站可以使用以下代码段以与环境无关的方式引用该连接字符串:

在开发人员的本地计算机上运行此代码时,返回的值将是从 web.config 文件中获取的值。但是,在 Windows Azure 网站中运行此代码时,返回的值会被在门户中输入的值覆盖:

这的确是一个非常有用的功能,因为它巧妙地解决了由来已久的开发问题,确保应用程序能够使用正确的连接字符串信息,无论应用程序的部署位置如何。

从命令行配置键值对

作为维护门户中应用程序设置和连接字符串的替代方法,开发人员也可以使用 PowerShell cmdlet 或跨平台命令行工具来检索和修改这两种类型的键值对。

例如,以下 PowerShell 命令定义了多个应用程序设置的哈希表,然后使用 Set-AzureWebsite cmdlet 将其存储在 Azure 中,并将其与名为“example-config”的网站相关联。

在 ASP.NET 中运行以下代码段之后,将显示初始应用程序设置的值(“some-key-here”)已经更新,第二个键值对(“some-other-key”)也已经添加。

示例 HTML 输出显示生效了的更改:

some-other-key <-->a-different-value
some-key-here<--> changed-this-value

更新连接字符串的工作方式与此类似,虽然语法稍有不同,这是因为内部的 PowerShell cmdlet 将连接字符串处理成 ConnStringInfo 对象的 List<T>(确切地说,是 Microsoft.WindowsAzure.Management.Utilities.Websites.Services.WebEntities.ConnStringInfo)。

以下 PowerShell 命令显示了如何定义新的连接字符串,如何将其添加到与网站相关联的连接字符串列表,然后将所有连接字符串再次存储在 Azure 中。

请注意,对于属性 $cs.Type,可以使用以下任一字符串来定义类型:“Custom”、“SQLAzure”、“SQLServer”和“MySql”。

在 ASP.NET 中运行以下代码段将列出网站的所有连接字符串。

请记住,虽然 Windows Azure 网站可覆盖连接字符串,并在 .NET Framework 的连接字符串配置集合中将其具体化,但该连接字符串必须已在 web.config 中定义。在该示例网站中,web.config 已经更新,如下所示:

现在,当运行 ASP.NET 页面时,它将显示已使用通过 PowerShell 存储的值覆盖这两个连接字符串值(第一个连接字符串的敏感部分故意使用星号留空):

总结

本文章介绍了如何轻松地将配置数据的简单键值对与您的网站相关联,并在运行时将其作为环境变量进行检索。通过此功能,Web 开发人员可以安全地存储配置数据,而无需担心此数据在网站配置文件中会以明文形式显示。如果您碰巧在使用 ASP.NET,还有一点出人意料的配置“魔术”,可以将这些值自动加入.NET AppSettingsConnectionStrings 配置集合中。

祝您使用愉快!

 

本文翻译自:

http://blogs.msdn.com/b/windowsazure/archive/2013/07/17/windows-azure-web-sites-how-application-strings-and-connection-strings-work.aspx

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值