ID:175299

逆水行舟

c#/.netcore 高级开发工程师

  • 公司信息:
  • 纳龙科技有限公司
  • 工作经验:
  • 7年
  • 兼职日薪:
  • 500元/8小时
  • 兼职时间:
  • 下班后
  • 周六
  • 周日
  • 所在区域:
  • 南京
  • 全区

技术能力

精通C#、asp.net、.net core、SqlServer、pgsql,mysql,Oracle、rabbitmq、mongodb、redis。
熟练使用elasticsearch、apollo、skywalking、consul、docker、nginx、EF、Sqlsugar、ibatis、log4net、swagger、Autofac,npoi、serilog、nlog
善于使用微服务相关工具,深度解析过.netcore底层框架

项目经验

在纳龙所做的项目概述:
●采用纵向分布式服务开发,包含多个微服务,每个服务聚焦自己的功能。
项目功能:
● 分布式服务包含如下:基础设施服务、配置中心服务、打印服务、同步数据服务、院前服务、鉴权服务、事件总线服务、网关服务、接口服务、AI分析服务。
开发准备及环境搭建
● 环境:windowserver2008及以上
● 开发工具:Visual Studio2019、MySql、fiddler、postman、navicat等
● 框架:.net core 2.2/3.1
● 组件:efcore、quartz3.x、dotnetty、nginx、cefsharp、fastreport、redis
● 个人职责:
1. 底层通讯框架封装集成(websocket/socket/httpclient)
2. winform框架中集成cefsharp内嵌浏览器,实现医院叫号大屏播报语音功能(语音组件使用科大讯飞离线语音)
3. 搭建打印服务,遵循工厂及建造者模式设计绘图对象,产生相应的数据流信息,传入到fastreport组件对应的函数中,生成pdf文件供用户打印。
4. 设计开发接收服务,也可叫做定时windows服务,负责监听TCP协议和文件目录,通过quartz作业触发器去进行服务启动、健康检查以及垃圾回收,服务内部使用dotnetty启动tcp监听数据,通过发布订阅及定时轮循的方式监控文件目录,将获取到的文件统一推送给解析程序解析,解析完成后,将产生的信息通过调用接口的方式推送到服务终端。
5.对接公司内部云平台接口代码迁移,集中管控;云平台数据报告,院内进行同步备份,通过rabbitmq实现消息的推拉模式,定义死信队列,将拒绝不可达及超期的消息丢入该队列,定时任务异步消费。
6. 由于公司的DTO层映射较频繁,本人底层参考automapper简易封装了一套mapper层组件,使用表达式目录树结合特性、反射、特性、泛型缓存开发了一套组件



在享佳健康所做的项目
1.项目背景
公司主要从事健康管理行业,有大量的客户;而这些客户会分配给公司内部的坐席,坐席会把本公司的产品向客户进行销售,这个过程需要安全、稳定、健壮的系统去维护。
2.项目功能
系统采用横向集群,纵向多服务职责划分的方式进行系统开发;划分如下多个服务:客资服务、联络服务、订单服务、物流服务、鉴权服务、售后服务、商品管理服务、基础用户服务等。
3.开发准备和环境搭建
使用环境:winserver2016、centos。
使用工具:Visual Studio2019、sqlserver、Redis、rabbitmq。
使用框架:在.net core2.2框架下进行开发。
4.个人职责
1) 坐席和用户每天通话记录较大,联络记录保存接口操作非常频繁,单台服务器负载压力跟不上,因此使用网关对程序进行负载均衡,多服务器分摊压力,引入了consul,在三台服务器中使用服务注册和发现。也保证了程序的高可用性。
2) 公司坐席的基础信息、后台的配置信息,以及每个客服每天及每月的电话拨打次数等其他相关信息会保存到redis中,底层框架使用的是ServiceStack破解版,本人对该组件做了进一步封装,集成到各个服务中,并配置了主从哨兵的集群方式。
3) 公司会定期开展特定健康产品秒杀活动,因此会出现常见的超卖问题,由于公司系统是集群搭建的,使用常用的lock锁肯定是行不通的,所以采用了redis的分布式锁进行超卖处理。
4) 数据库做了读写分离,存在两个读取sql数据的从库,代码中通过轮询的方式进行访问。
5) 因为项目是全程依赖注入,本人在项目中引用了autofac,替换了.netcore中自带的依赖注入,并引入了aop功能。
6) 坐席需要对未接听的客户进行电话回访,因此会将未接听的电话丢入到rabbitmq的待处理消息中,第二天上班的时候,会将该消息通过定时拉取出来,通过websocket推送到用户界面,对其进行提示。
7)电话小结保存:保存过程中使用任务集合承载多个数据操作,等待多个线程处理结果完成,返回状态码。
8) 由于变更客户手机号,经常会出现不合法的手机号,因此统一配置了ActionFilter类进行拦截处理。
9) 增加审计日志记录每个请求的出入参。
10)个别功能的sql会比较复杂,因此开发过程中会直接编写纯sql,但是efcore不支持纯sql执行,因此在项目中引入Dapper编写原生的SQL。

案例展示

  • 苏州智慧315和解平台

    苏州智慧315和解平台

    本人是项目组长 主要负责服务端开发和技术人员任务把控 1.开发背景 智慧315平台主要用于处理消费者和经营者之间的利益纠纷,通过协调、和解、上报等手段进行处理。 2.项目功能 登录注册、找回密码、安全性认证、业务受理、数据中心、企业中心、自行和解、系统设置、流程流转、处理

  • 南京造价管理系统

    南京造价管理系统

    1.本人是主要角色是: 软件开发、数据库设计、接口定义 2.案例部分处理流程: 平台为南京市建设工程造价监督站信息管理系统;招标人通过“招标控制价备查”填报相关信息,提交后打印相关材料,到指定公司领取加密锁。通过加密锁登录到系统,对信息进行登记申报,由相关部门进行审核办

查看案例列表(含更多 0 个案例)

信用行为

  • 接单
    0
  • 评价
    0
  • 收藏
    0
微信扫码,建群沟通

发布任务

企业点击发布任务,工程师会在任务下报名,招聘专员也会在1小时内与您联系,1小时内精准确定人才

微信接收人才推送

关注猿急送微信平台,接收实时人才推送

接收人才推送
联系聘用方端客服
联系聘用方端客服