前言:前面准备了那么久的准备工作,现在终于可以开始构建我们自己的服务了。这篇博客就让我们一起构建自己的第一个服务---审计日志。

  首先我们先创建两个项目,一个控制台的服务启动项目,一个业务的实现项目。(注:控制台项目可以引用业务项目,也可以不引用业务项目。因为surging支持热部署)

在服务启动项目中引用我们所需要的surging组件

服务配置:

当然,我们之前所描述的rabbitmq的配置:

  ok,接下来就是对我们的服务进行代码编写了,,接口注意,服务的命名后面必须是以“Service”结束,服务接口必须继承IServiceKey

  服务实现:,ModuleName(""),因为一个接口可能有多个实现,,所以这里的ModuleName就是为了调用的时候区分我们要用到哪个实现,如果只有一个实现,可以不用这个属性,另外,实现只要继承ProxyServiceBase跟自己定义的服务接口就可以了。

需要注意的是:surging的接口不支持泛型,编码采用json方式传递数据,客户端调用的时候需要用到方法的参数名称。

客户端:首先客户端在nuget中添加我们所需要的surging组件

客户端的配置:,当然不能少了rabbitmq的配置

,在客户端只需要配置rabbitmq的连接地址就可以了。

测试代码:,获取代理实例,客户端服务调用测试代码:

设置审计日志跟客户端为启动项目:

测试结果:,完美,调用成功。

surging微服务框架:官方推荐使用UseMessagePackCodec的编码方式,万次调用效率在1200ms左右(调用需要引用接口(获取代理实例ServiceLocator.GetService<IServiceProxyFactory>()))。

在这篇博客中我采用json的编码方式,surging测试万次调用在3600ms左右。

采用json的编码方式,服务之间的调用await proxy.Invoke<object>(model, "api/userManager/singleByEmailAndPassword", "User");都是通过这句代码来实现的。

(三)surging 微服务框架使用系列之我的第一个服务(审计日志)的更多相关文章

  1. 转载 (三)surging 微服务框架使用系列之我的第一个服务(审计日志)

    (三)surging 微服务框架使用系列之我的第一个服务(审计日志)   前言:前面准备了那么久的准备工作,现在终于可以开始构建我们自己的服务了.这篇博客就让我们一起构建自己的第一个服务---审计日志 ...

  2. 一)surging 微服务框架使用系列之surging 的准备工作rabbitmq安装(转载 https://www.cnblogs.com/alangur/p/8339905.html)

    (一)surging 微服务框架使用系列之surging 的准备工作rabbitmq安装   (1)下载erlang: http://www.erlang.org/download/otp_win64 ...

  3. (二)surging 微服务框架使用系列之surging 的准备工作consul安装

    suging 的注册中心支持consul跟zookeeper.因为consul跟zookeeper的配置都差不多,所以只是consul的配置 consul下载地址:https://www.consul ...

  4. YoyoGo微服务框架入门系列-基本概念

    前言 Github开源:github.com/yoyofx/yoyogo 还请多多Star 之前简单介绍了YoyoGo微服务框架的基本内容,接下来了解下框架中的基本概念. 从一个简单Web服务Demo ...

  5. YoyoGo微服务框架入门系列-快速编写WEB API

    前言 YoyoGo是一个使用Golang编写的一个简单.轻量.快速.基于依赖注入的微服务框架,目前依然在研发阶段,欢迎Star以及一起参与到框架的研发 GitHub地址:https://github. ...

  6. (四)surging 微服务框架使用系列之网关

    一.什么是API网关 API网关是一个服务器,是系统对外的唯一入口.API网关封装了系统内部架构,为每个客户端提供一个定制的API.API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入 ...

  7. (四)surging 微服务框架使用系列之网关 转载

    一.什么是API网关 API网关是一个服务器,是系统对外的唯一入口.API网关封装了系统内部架构,为每个客户端提供一个定制的API.API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入 ...

  8. (一)surging 微服务框架使用系列之surging 的准备工作rabbitmq安装

    (1)下载erlang: http://www.erlang.org/download/otp_win64_17.3.exe 并安装 (2)下载RabbitMQ: http://www.rabbitm ...

  9. (五)surging 微服务框架使用系列之缓存-reids

    1.服务跟客户端初始化的时候需要添加缓存配置 var host = new ServiceHostBuilder() .RegisterServices(builder => { builder ...

随机推荐

  1. 【三十一】thinkphp之安装、配置、模块化及URL模式

    一:安装与配置 1.获取ThinkPHP 下载地址:http://www.thinkphp.cn/down.html 2.入口文件 ThinkPHP采用单一入口模式对项目进行部署和访问,所以我们需要通 ...

  2. Java中组合 设计技巧 实例

    关于组合 和 集成 先放两篇文章:这两篇文章写的太好了. http://blog.csdn.net/u013905744/article/details/51752044    Java的组合(持有对 ...

  3. vue.js之数据传递和数据分发slot

    一.组件间的数据传递 1.父组件获取子组件的数据 *子组件把自己的数据,发送到父级 *vm.$emit(事件名,数据); *v-on: @ 示例用法:当点击send按钮的时候,"111&qu ...

  4. 【机器学习学习】SKlearn + XGBoost 预测 Titanic 乘客幸存

    Titanic 数据集是从 kaggle下载的,下载地址:https://www.kaggle.com/c/titanic/data 数据一共又3个文件,分别是:train.csv,test.csv, ...

  5. 列表(List) 的增删改查及其他方法 和元组(tuple)的查

    一.列表 1.列表简介: 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:li ...

  6. 【JavaScript_DOM 百度搜索框】

    今天给大家带来的事一个简单的百度的历史搜索框,大家在搜索东西的时候,百度会自动给你显示你最近搜索过的一些东西,那这个拿js怎么做呢? 我们一起来学习吧 这是一个HTML页面: <!DOCTYPE ...

  7. Error : Invalid Allocation Size :·····Bytes 以及 abort() has been called

    把这两个Error放在一起,主要是因为在写代码的时候发现,他们有公共的错误. (一)Invalid Allocation Size 主要是因为new分配内存出了问题,从直观翻译来看,应该是内存分配长度 ...

  8. 基于Windows下处理Java错误:编码GBK的不可映射字符的解决方案

    基于Windows下处理Java错误:编码GBK的不可映射字符的解决方案 最近在研究Java,涉及命令行编译,使用notepad++编辑器,然后使用javac编译: 之前的几个文件没有中文的内容,都没 ...

  9. hihoCoder #1082 : 然而沼跃鱼早就看穿了一切(字符串处理)

    #1082 : 然而沼跃鱼早就看穿了一切 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 fjxmlhx每天都在被沼跃鱼刷屏,因此他急切的找到了你希望你写一个程序屏蔽所有句 ...

  10. hdu_1036(取整和格式控制)

    题意很简单,求平均时间 复习一下如何取整 (int) fl 是直接向下取整  ==  floor(fl) 向上取整 (int)(fl+1)  == ceil(fl) 四舍五入 (int)(fl+0.5 ...