加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET中web.config文件的替代方法

发布时间:2020-12-16 07:22:00 所属栏目:asp.Net 来源:网络整理
导读:根据我的经验,web.config文件受到广泛谴责.特别是,当您有多个支持环境时,我发现它们很难管理,并且由于缺少更新时的验证和 XML的冗长而需要更新. 有哪些替代方案? 解决方法 我个人不介意Web.Config用于小型一次性应用程序,但对于任何实质性的东西,我都避免将
根据我的经验,web.config文件受到广泛谴责.特别是,当您有多个支持环境时,我发现它们很难管理,并且由于缺少更新时的验证和 XML的冗长而需要更新.

有哪些替代方案?

解决方法

我个人不介意Web.Config用于小型一次性应用程序,但对于任何实质性的东西,我都避免将它们用于应用程序配置.

这是我做的……

>我根据复杂性为我的配置定义了一个或多个接口.
>我为每个环境创建不同的实现(dev,stage,prod等)
>我使用抽象基类来定义常见配置.
>然后我使用Ninject进行依赖注入,以便根据我所针对的环境提供适当的实现.
>我总是编码到配置界面并从编译时间检查中受益.

这是一个例子……

// Config Contract
public interface IWebAppConfig
{
     string SmtpHost { get; }
     string RootUrl { get; }
}

// Define Common Config Values (values that don't change per environment) 
public abstract class AbstractWebAppConfig : IWebAppConfig
{
     public string SmtpHost { get { return "smtp.google.com"; } }
     public abstract RootUrl { get; }
}

// Dev Config Settings
public class DevWebAppConfig : AbstractWebAppConfig
{
     public override string RootUrl { get { return "http://localhost:1322"; } }
}

// Stage Config Settings
public class StageWebAppConfig : AbstractWebAppConfig
{
     public override string RootUrl { get { return "http://stage.mysite.com"; } }
}

// Prod Config Settings
public class ProdWebAppConfig : AbstractWebAppConfig
{
     public override string RootUrl { get { return "http://www.mysite.com"; } }
}

这种方法的优点:

>输入安全
>配置表示为对象而不是键值对(用于传递配置值的逻辑分组而不是多个值)
>更容易单元测试依赖于配置值的类
>跨多个应用程序共享配置是微不足道的
>部署包含配置实现的程序集将触发应用程序池的循环,就像重新部署web.config一样.

您仍然可以使用web.config来定义环境,这是我通常通过将以下内容添加到appSettings来执行的操作:

<appSettings>
     <!-- accepts: dev|stage|prod -->
     <add key="Env" value="dev" />
</appSettings>

或者,它可以通过使用Envrionment Variables或其他一些构造来基于机器.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读