• [译]ASP.NET 5: New configuration files and containers


    原文: http://gunnarpeipman.com/2014/11/asp-net-5-new-configuration-files-and-containers/

    ASP.NET vNext提供了一种新的config文件. 能支持多种格式的config文件可以是.json .ini .xml. 另外你还可以写configuration handler用来处理你自定义格式的config文件.

    Configuration文件

    假设我们有3个config文件

    config.json

    {
        "ConnectionStrings": {
            "JsonConnectionString": "json connection string"
        }
    }
    

    config.xml

    <config>
        <ConnectionStrings>
            <XmlConnectionString>xml connection string</XmlConnectionString>
        </ConnectionStrings>
    </config>
    

    config.ini

    [ConnectionStrings]
    IniConnectionString = ini connection string
    

    上面的3个config都是一种结构尽管他们是不同的格式.

    依赖

    在我们加载config文件前我们需要添加一些依赖 打开project.json添加倒数第二行和第三行(Microsoft.Framework.Configuration.XXX):

    {
        // ...
    
        "dependencies": {
            "Kestrel": "1.0.0-alpha4",
            "EntityFramework.SqlServer": "7.0.0-alpha4",
            // ...
            "Microsoft.AspNet.StaticFiles": "1.0.0-alpha4",
            "Microsoft.Framework.ConfigurationModel.Json": "1.0.0-alpha4",
            "Microsoft.Framework.ConfigurationModel.Xml": "1.0.0-alpha4",
            "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-alpha4"
        }
    
        // ...
    }
    

    加载configuration文件

    public class Startup
    {
        public void Configure(IApplicationBuilder app)
        {
            // Setup configuration sources
            var configuration = new Configuration();
            configuration.AddJsonFile(“config.json”);
            configuration.AddIniFile(“config.ini”);
            configuration.AddXmlFile(“config.xml”);
            configuration.AddEnvironmentVariables();
     
            // …
        }
    }
    

    现在configuration文件已经加载进来了,现在让我们使用强大的configuration对象来读取config参数.

    读取configuration参数

    如果你像读取非string类型的参数你可以使用泛型方法Get<T>():

    var size = configuration.Get<int>(“Box:Size”);
    

    为什么我们需要多个configuration文件

    为什么我们需要configuration系统是这个样子的? 通过这样的configuration系统以下的场景得到支持:

    • 我们可以使用多个configurationcontainers
    • 我们可以在web和桌面程序中使用同样的配置文件.

    看看下面的代码.

    // Common configuration
    var configuration = new Configuration();
    configuration.AddJsonFile(“config.json”);
    configuration.AddIniFile(“config.ini”);
    configuration.AddXmlFile(“config.xml”);
    configuration.AddEnvironmentVariables();
     
    // Mailer configuration
    var emailConfiguration = new Configuration();
    emailConfiguration.AddIniFile(“advanced-mailer.ini”);
     
    // SMS configuration
    var smsConfiguration = new Configuration();
    smsConfiguration.AddXmlFile(“sms.config”);
    
  • 相关阅读:
    大型站点技术架构PDF阅读笔记(一):
    【大话QT之十三】系统软件自己主动部署实现方案
    VS编译duilib项目时候的错误解决方法整理
    Missing iOS Distribution signing identity for …, 在打包的时候发现证书过期了。
    Django项目国际化
    Codeforces Round #297 (Div. 2) 525D Arthur and Walls(dfs)
    BZOJ 2209: [Jsoi2011]括号序列 [splay 括号]
    NOIP2016DAY1题解
    清北学堂入学测试P4751 H’s problem(h)
    BZOJ 3173: [Tjoi2013]最长上升子序列 [splay DP]
  • 原文地址:https://www.cnblogs.com/irocker/p/asp-net-5-new-configuration-files-and-containers.html
Copyright © 2020-2023  润新知