参照了:https://www.cnblogs.com/xichji/p/11324893.html

Apollo默认有一个“SampleApp”应用,“DEV”环境 和 “timeout” KEY。

环境:VS2015,.net framework 4.5。

1.nuget 下载 :Com.Ctrip.Framework.Apollo.ConfigurationManager   2.3.0。最新的2.6.2 我没安装成功。

2.修改web.config 增加:

<add key="Apollo.AppID" value="SampleApp" />
<add key="Apollo.Env" value="DEV" />
<add key="Apollo.MetaServer" value="http://192.168.192.100:8080" />

3.新建IApolloConfiguration

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace MyCompany.MyProject.Infrastructure
{
/// <summary>
/// 配置抽象接口。
/// </summary>
public interface IApolloConfiguration
{
/// <summary>
/// 配置更改回调事件。
/// </summary>
//event EventHandler<ConfigurationChangeEventArgs> ConfigChanged; /// <summary>
/// 获取配置项。
/// </summary>
/// <param name="key">键</param>
/// <param name="namespaces">命名空间集合</param>
/// <returns></returns>
string GetValue(string key, params string[] namespaces); /// <summary>
/// 获取配置项。
/// </summary>
/// <typeparam name="TValue">值类型</typeparam>
/// <param name="key">键</param>
/// <param name="namespaces">命名空间集合</param>
/// <returns></returns>
TValue GetValue<TValue>(string key, params string[] namespaces); /// <summary>
/// 获取配置项,如果值为 <see cref="null"/> 则取参数 <see cref="defaultValue"/> 值。
/// </summary>
/// <param name="key">键</param>
/// <param name="defaultValue">默认值</param>
/// <param name="namespaces">命名空间集合</param>
/// <returns></returns>
string GetDefaultValue(string key, string defaultValue, params string[] namespaces); /// <summary>
/// 获取配置项,如果值为 <see cref="null"/> 则取参数 <see cref="defaultValue"/> 值。
/// </summary>
/// <typeparam name="TValue">值类型</typeparam>
/// <param name="key">键</param>
/// <param name="defaultValue">默认值</param>
/// <param name="namespaces">命名空间集合</param>
/// <returns></returns>
TValue GetDefaultValue<TValue>(string key, TValue defaultValue, params string[] namespaces);
} }

4.新建ApolloConfiguration

using Com.Ctrip.Framework.Apollo;
using Com.Ctrip.Framework.Apollo.Model;
using System;
using System.Globalization; namespace MyCompany.MyProject.Infrastructure
{
public class ApolloConfiguration : IApolloConfiguration
{
private readonly string _defaultValue = null; //public event EventHandler<ConfigurationChangeEventArgs> ConfigChanged; private IConfig GetConfig(params string[] namespaces)
{
var config = namespaces == null || namespaces.Length == 0 ?
ApolloConfigurationManager.GetAppConfig().GetAwaiter().GetResult() :
ApolloConfigurationManager.GetConfig(namespaces).GetAwaiter().GetResult(); config.ConfigChanged += Config_ConfigChanged; return config;
} private void Config_ConfigChanged(IConfig sender, ConfigChangeEventArgs args)
{
foreach (string key in args.ChangedKeys)
{
ConfigChange change = args.GetChange(key);
// Console.WriteLine("Change - key: {0}, oldValue: {1}, newValue: {2}, changeType: {3}", change.PropertyName, change.OldValue, change.NewValue, change.ChangeType);
}
} public string GetValue(string key, params string[] namespaces)
{
if (string.IsNullOrWhiteSpace(key))
throw new ArgumentNullException(nameof(key)); var config = GetConfig(namespaces);
return config.GetProperty(key, _defaultValue);
} public TValue GetValue<TValue>(string key, params string[] namespaces)
{
var value = GetValue(key, namespaces);
return value == null ?
default(TValue) :
(TValue)Convert.ChangeType(value, typeof(TValue), CultureInfo.InvariantCulture);
} public string GetDefaultValue(string key, string defaultValue, params string[] namespaces)
{
if (string.IsNullOrWhiteSpace(key))
throw new ArgumentNullException(nameof(key)); var config = GetConfig(namespaces);
return config.GetProperty(key, defaultValue);
} public TValue GetDefaultValue<TValue>(string key, TValue defaultValue, params string[] namespaces)
{
var value = GetDefaultValue(key, defaultValue, namespaces);
return value == null ?
default(TValue) :
(TValue)Convert.ChangeType(value, typeof(TValue), CultureInfo.InvariantCulture);
}
}
}

5.使用:

IApolloConfiguration config = new ApolloConfiguration();
string aa = config.GetValue("timeout");

.

.net framework 使用Apollo 配置中心的更多相关文章

  1. Apollo配置中心

    背景: 当前我们项目,所有的配置基本都是通过本地properties 文件进行配置的,比如ip地址.端口.消息中间件和数据库连接的各种参数,当我们需要切换环境或调整参数的时候,我们必须手动的修改这些配 ...

  2. Apollo配置中心转

    尊重原创,本文转自:https://www.cnblogs.com/FlyAway2013/p/8811385.html 前我们项目,所有的配置基本都是通过本地properties 文件进行配置的,比 ...

  3. 携程 Apollo 配置中心传统 .NET 项目集成实践

    官方文档存在的问题 可能由于 Apollo 配置中心的客户端源码一直处于更新中,导致其相关文档有些跟不上节奏,部分文档写的不规范,很容易给做对接的新手朋友造成误导. 比如,我在参考如下两个文档使用传统 ...

  4. Spring Boot 2.0 整合携程Apollo配置中心

    原文:https://www.jianshu.com/p/23d695af7e80 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够 ...

  5. (转)实验文档3:在kubernetes集群里集成Apollo配置中心

    使用ConfigMap管理应用配置 拆分环境 主机名 角色 ip HDSS7-11.host.com zk1.od.com(Test环境) 10.4.7.11 HDSS7-12.host.com zk ...

  6. Spring Cloud 系列之 Apollo 配置中心(一)

    背景 随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关.参数的配置.服务器的地址等等. 对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境.分集群管理配置,完善的权限.审核机 ...

  7. Apollo配置中心的实战

    31.携程 Apollo 配置中心介绍~1.mp4 32.Apollo核心概念~1.mp4 32.Apollo核心概念~1.mp4 每个应用需要有一个唯一的AppID 要在指定的机器上的server. ...

  8. .NET Core 下使用 Apollo 配置中心

    Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理场景.服务 ...

  9. Apollo 配置中心详细教程

    一.简介 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理 ...

  10. Apollo配置中心拉取,通过单独打包解决 Get config services failed from http://阿里云局域网访问IP:8080/services/config?appId=MyAppId&ip=192.168.145.1 Cause Could not complete get operation

    Apollo配置中心拉取,通过单独打包解决 Get config services failed from http://阿里云局域网访问IP:8080/services/config?appId=M ...

随机推荐

  1. 力扣349(java&python)-两个数组的交集(简单)

    题目: 给定两个数组 nums1 和 nums2 ,返回 它们的交集 .输出结果中的每个元素一定是 唯一 的.我们可以 不考虑输出结果的顺序 . 示例 1: 输入:nums1 = [1,2,2,1], ...

  2. 我,PolarDB云原生数据库,5年来实现这些重磅技术创新

    简介: 过去5年,阿里云针对PolarDB进行了诸多创新,通过采用存储计算分离.软硬一体化设计,PolarDB实现成本仅为传统商业数据库的十分之一.所实现的计算.内存与存储资源的"三层解耦& ...

  3. WPF 已知问题 某些设备上的应用在 WindowChromeWorker 抛出 System.OverflowException 异常

    准确来说,这个不算是 WPF 的问题,而是系统等的问题.在某些设备上的使用了 WindowChrome 功能的 WPF 应用,将在运行过程,在 WindowChromeWorker 类里面抛出 Sys ...

  4. 还需要学习JDBC吗?如果需要该了解到怎么样的程度?

    前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 不知道大家在工作中还有没有写过JDBC,我在大三 ...

  5. 网站访问速度优化实战:CDN源/Nginx压缩/全站CDN加速

    前言 接触到CDN的起因: 我自己搭建的网站https://price.monitor4all.cn/网页打开的速度一直比较慢,经查证是我的网站有很多静态js大文件,通过浏览器读取这些js比较耗时间. ...

  6. Linux 备忘

    ls 通配符 匹配 ? 一个字符 * >=0个任意字符 [ai] a 或者 i [a-i] a/b/c/d...i [!a] 除了a cat cat -n test #加上行号 cat -b t ...

  7. 【简说Python WEB】Flask应用的单元测试

    [简说Python WEB]Flask应用的单元测试 tests/test_basics.py import unittest from flask import current_app from a ...

  8. CSS 样式表引入的3种方式

    CSS 全称为层叠样式表(Cascading Style Sheet),用来定义 HTML 文件最终显示的外观.HTML 文件里引入 CSS 样式有3种方式: 外部样式表.内部样式表.行内样式. 外部 ...

  9. 超级详细的PostgreSQL创建数据库操作并附带图文

    首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485195&idx=1 ...

  10. 推荐几款火爆的Python在线编辑器

    在当今数字化时代,编程已成为一项不可或缺的技能.Python作为一种简单易学且功能强大的编程语言,受到了广大编程爱好者和专业开发人员的青睐.为了方便大家随时随地编写和运行Python代码,市面上涌现了 ...