1、Viper是什么?

  Viper 是.NET平台下的Anno微服务框架的一个示例项目。入门简单安全稳定高可用全平台可监控。底层通讯可以随意切换thrift grpc 自带服务发现、调用链追踪、Cron 调度、限流、事件总线、CQRS 、DDD、类似MVC的开发体验,插件化开发  

github: https://github.com/duyanming/Viper

文档地址: https://duyanming.github.io/

体验地址: http://140.143.207.244/

如果对Viper不了解可以看:

  1、 net core 微服务 快速开发框架 Viper 初体验

  2、打不死的小强 .net core 微服务 快速开发框架 Viper 限流

3、net core 微服务框架 Viper 调用链路追踪

2、Viper微服务编写一个Hello World

  Anno微服务引擎使用非常简单,Anno只专于与服务治理,对业务代码深度解耦。下面我们来写一个Hello World 服务,以此作为引子 让我们了解Anno服务的创建有多简单。

2.1、新建一个.Net Core 的控制台程序

  让我们新建一个.Net Core 的控制台程序作为服务插件的宿主程序,当然你也可以新建一个Window服务程序、Winform程序作为插件宿主程序。 这里以.Net Core控制台程序为例。

2.2、 添加Anno依赖

  

添加依赖需要两个,一个是 Anno.EngineData ,一个是Anno.Rpc.ServerAnno.Rpc.ServerAnno服务的核心程序包, Anno.EngineData 是一个可选程序包,在这里主要是因为业务插件(例如 Anno.Plugs.ViperService)是一个和通讯解耦的模块, 为了方便服务之间也可以调用 Anno.EngineData 里面声明了服务之间调用的接口约束。Thrift、Grpc 插件里面做实现, 以此来解耦通讯组件和业务插件。

添加Anno Nuget依赖

Install-Package Anno.EngineData -Version 1.0.2.6
Install-Package Anno.Rpc.Server -Version 1.0.2.6

增加一个Anno配置文件

   Anno配置文件的名称为Anno.config,我们直接复制一个过来修改就可以了。主要还是修改下服务的端口名称。 修改完城后我们就可以启动服务了。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!--0,0 第一位是 工作站,第二位数据中心
(所有的 AnnoService 的 两位数不能重复例如不能存在【1,2】【1,2】)
可以存在【1,2】【2,1】
-->
<IdWorker>0,1</IdWorker>
<!--App名称-->
<AppName>HelloWorld</AppName>
<!--监听端口-->
<Port>7012</Port>
<!--权重-->
<Weight>1</Weight>
<!--功能 非Anno.Plugs 加入方式-->
<FuncName></FuncName>
<!--忽略的功能 Trace,Logic-->
<IgnoreFuncName></IgnoreFuncName>
<!--超时时间毫秒-->
<TimeOut>20000</TimeOut>
<!--注册到的目标-->
<Ts Ip="127.0.0.1" Port="7010"/>
<IocDll>
<!-- IOC 仓储-->
<Assembly>Anno.Repository</Assembly>
</IocDll>
<appSettings>
<!-- 没有用到Redis可以留空默认-->
<add key="redisConn" value=""/>
<add key="redisPrefix" value="HW:"/>
<add key="redisExpiryDate" value="20"/>
<add key="redisSwitch" value="false"/>
</appSettings>
</configuration>

到此为止一个HelloWorld服务已经编写完成且成功启动。每个一秒会向注册中心注册。另外我们没有看到提示服务功能Tag这是因为我们还没有编写功能插件。 下一小节我们来编写一个功能插件。

  喜欢Viper的小伙伴们可以在体验地址 通过 “集群总览” 找到两个服务 “HelloWorld-SoEasy”、“HelloWorld”,然后进入 API详情,模拟调用API提前体验一下网关如何调用服务,服务之间如何相互调用。后面也会带着大家编写一到两个简单的功能插件,以此加深对Viper的了解。

 

github: https://github.com/duyanming/Viper

文档地址: https://duyanming.github.io/

体验地址: http://140.143.207.244/

 关于Viper的更多内容,随后更新。敬请关注。开源不易,感谢Star。

hello world .net core 微服务框架 Viper的更多相关文章

  1. net core 微服务框架 Viper 调用链路追踪

    1.Viper是什么? Viper 是.NET平台下的Anno微服务框架的一个示例项目.入门简单.安全.稳定.高可用.全平台可监控.底层通讯可以随意切换thrift grpc. 自带服务发现.调用链追 ...

  2. 基于.NET CORE微服务框架 -surging的介绍和简单示例 (开源)

    一.前言 至今为止编程开发已经11个年头,从 VB6.0,ASP时代到ASP.NET再到MVC, 从中见证了.NET技术发展,从无畏无知的懵懂少年,到现在的中年大叔,从中的酸甜苦辣也只有本人自知.随着 ...

  3. 基于.NET CORE微服务框架 -谈谈surging API网关

    1.前言 对于最近surging更新的API 网关大家也有所关注,也收到了不少反馈提出是否能介绍下Api网关,那么我们将在此篇文章中剥析下surging的Api 网关 开源地址:https://git ...

  4. 基于.NET CORE微服务框架 -浅析如何使用surging

    1.前言 surging受到大家这么强烈的关注,我感到非常意外,比如有同僚在公司的分享会上分享surging, 还有在博客拿其它的RPC框架,微服务做对比等等,这些举动都让我感觉压力很大,毕竟作为个人 ...

  5. 基于.NET CORE微服务框架 -谈谈surging的服务容错降级

    一.前言 对于不久开源的surging受到不少.net同学的青睐,也受到.net core学习小组的关注,邀请加入.NET China Foundation以方便国内.net core开源项目的推广, ...

  6. .net Core 微服务框架 surging 使用

    surging 是一个分布式微服务框架,提供高性能RPC远程服务调用,采用Zookeeper.Consul作为surging服务的注册中心, 集成了哈希,随机,轮询作为负载均衡的算法,RPC集成采用的 ...

  7. 基于.NET CORE微服务框架 -谈谈Cache中间件和缓存降级

    1.前言 surging受到不少.net同学的青睐,也提了不少问题,提的最多的是什么时候集成API 网关,在这里回答大家最近已经开始着手研发,应该在1,2个月内会有个初版API网关,其它像Token身 ...

  8. 基于.NET CORE微服务框架 -Api网关服务管理

    1.前言 经过10多天的努力,surging 网关已经有了大致的雏形,后面还会持续更新完善,请大家持续关注研发的动态 最近也更新了surging新的版本 更新内容: 1. 扩展Zookeeper封装2 ...

  9. 基于.NET CORE微服务框架 -surging 基于messagepack、protobuffer、json.net 性能对比

    1.前言 surging内部使用的是高性能RPC远程服务调用,如果用json.net序列化肯定性能上达不到最优,所以后面扩展了protobuf,messagepack序列化组件,以支持RPC二进制传输 ...

随机推荐

  1. 使用Azure Function玩转Serverless

    Serverless&Azure Functions 通过无服务器计算,开发者无需管理基础结构,从而可以更快构建应用程序.通过无服务器应用程序,将由云服务提供商自动预配.缩放和管理运行代码所需 ...

  2. Python-迭代协议-__iter__ __next__ iter next yield

    iter 本质是for循环调用的实质,for循环通过调用这个函数返回可迭代对象生成器形式,开始迭代取值捕获StopIteration错误退出循环 for循环首先找__iter__方法,然后再找 __g ...

  3. python3的基础数据类型

    看了很多文档,想自己整理一下关于python的数据类型.说干就干,下面接上. 首先,了解 常量与变量. 常量是什么?常量是指在整个程序操作过程中其值保持不变的数据: 变量是什么?变量即在程序运行过程中 ...

  4. windows10开机后恢复关机前打开的chrome网页

    开始-设置-账户-登录选项-隐私,下面一个"更新或重启后--"即第二个开关打开. 这时,无论是重启.更新重启或关机后开机,均可恢复原关机时的网页(和应用). 注:题主安装的wind ...

  5. Java知识系统回顾整理01基础01第一个程序06Eclipse使用技巧

    一.批量修改 ALT+SHIFT+R 二.快速输入主方法 1. 敲入main 2. alt+/ 三.快速输入System.out.println 1. 敲入syso 2. alt+/ 四.快速输入fo ...

  6. 程序员你是如何使用Nacos作为配置中心的?

    假如你使用的是spring-cloud-alibaba微服务技术栈 单个服务独有配置文件 即去除应用程序的状态,配置统一外部化管理,方便进行水平的伸缩. 集成步骤: 假如我有一个应用app-desig ...

  7. 【MySQL Errors】Table 'xxx' is marked as crashed and should be repaired 的解决方案

    现象描述 访问 Zabbix Web,出现如下错误提示: • Error in query [SELECT * FROM history_uint h WHERE h.itemid='25067' O ...

  8. golang不想http自动处理重定向的解决方案

    目录 前言 解决方案 结论 前言     有时候发送http请求不想让库自动帮忙处理重定向,库里面默认的是会把所有重定向都完成一遍,结果就是最后一个没有重定向的请求的结果.因此需要一种方案直接获取首次 ...

  9. MeteoInfoLab脚本示例:计算水平螺旋度

    尝试了用MeteoInfoLab编写计算水平螺旋度的脚本,结果未经验证.脚本程序: print 'Open data files...' f_uwnd = addfile('D:/Temp/nc/uw ...

  10. MeteoInfo脚本示例:读取FY3A AOD HDF文件

    FY3A卫星有AOD产品数据,HDF格式,这里示例用MeteoInfo脚本程序读取和显示该类数据. 脚本程序如下: #----------------------------------------- ...