项目相关开源框架
EasyNetQ
EasyNetQ.DI.Microsoft
Sikiro.Nosql.Mongo
log4net
Mapster
EasyNetQ
这个开源框架是针对RabbitMQ.Client的封装,隐藏了很多实现细节,简化使用方式。并提供了多种IOC注入方式
源码地址:https://github.com/EasyNetQ/EasyNetQ
Sikiro.Nosql.Mongo
这个是我自己针对mongo驱动的常用的基础操作的封装库
源码地址:https://github.com/SkyChenSky/Sikiro.Nosql.Mongo
Mapster
实体映射框架,看评测数据比AutoMapper等之类的效率要高,而且易用性也非常高。
https://github.com/MapsterMapper/Mapster
全局异常日志记录
public class GolbalExceptionAttribute : ExceptionFilterAttribute { public override void OnException(ExceptionContext context) { if (!context.ExceptionHandled) { context.Exception.WriteToFile(); } base.OnException(context); } } public void ConfigureServices(IServiceCollection services) { services.AddMvc(option => { option.Filters.Add<GolbalExceptionAttribute>(); }) .SetCompatibilityVersion(CompatibilityVersion.Version_2_1); }
LoggerHelper
上面的WriteToFile是我对Exception的扩展方法,使用了Log4Net日志框架对异常进行记录,如果有需要也可以写到mongodb或者elasticsearch
/// <summary> /// 日志帮助类 /// </summary> public static class LoggerHelper { private static readonly ILoggerRepository Repository = LogManager.CreateRepository("NETCoreRepository"); public static readonly ILog Log = LogManager.GetLogger(Repository.Name, typeof(LoggerHelper)); static LoggerHelper() { XmlConfigurator.Configure(Repository, new FileInfo("log4net.config")); } #region 文本日志 /// <summary> /// 文本日志 /// </summary> /// <param name="message"></param> /// <param name="ex"></param> public static void WriteToFile(this Exception ex, string message = null) { if (string.IsNullOrEmpty(message)) message = ex.Message; Log.Error(message, ex); } #endregion }
工具库的封装
框架与工具库都是以库的形式提供我们使用,而且都是可复用,但是他们区别在于:工具库开箱即用,大多数以静态方法提供调用,只调用少量甚至一个方法则完成使用。
而框架定义,为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品,而他具有约束性、可复用性、规范性。他是一个半成品,可重写。
因此为了简化框架的使用,对常用设置、构建组合进行封装,以一个扩展类或者帮助类的形式提供,简化使用、增加可读性。
Swagger的使用
Http协议的好处是轻量、跨*台,如此良好的灵活性然而需要接口描述对外暴露。Swagger是一个很好的选择,不需要自己手写文档并提供后台管理界面,还可以测试,简化不少工作。
我选择了NSwag.AspNetCore开源组件,他的使用非常简单。只需要两步:
1.配置Swagger:
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseSwaggerUiWithApiExplorer(settings => { settings.GeneratorSettings.DefaultPropertyNameHandling = PropertyNameHandling.CamelCase; settings.PostProcess = document => { document.Info.Version = "v1"; document.Info.Title = "Sikiro.SMS.API"; document.Info.Description = "短信服务API"; document.Info.TermsOfService = "None"; }; }); app.UseMvc(); }
2.设置站点项目
此设置为了把接口、参数注释显示到Swagger页面
NSwag还有多个版本的UI选择:
- UseSwaggerReDoc
- UseSwaggerUi
- UseSwaggerUi3
访问http://localhost:port/swagger就可以见到API文档了
部署
因为我公司还是使用windows server 2008。因此部署前应准备环境安装包:
.NET Core 2.1.3 windows-hosting
安装完成后重启服务器,再把文件发布到服务器,编辑应用程序池为无托管代码。就可以访问了