• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Lails.Server: 基于开源产品【ASP.NET WebAPI+TopShelf+NLog】实现的跨平台,自宿主运 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

Lails.Server

开源软件地址:

https://gitee.com/Lails/Lails.Server

开源软件介绍:

《Lails系列产品》


一、介绍

基于开源产品【ASP.NET WebAPI+TopShelf+NLog】实现的跨平台,自宿主运行的服务端框架。主要实现:

  • Windows服务模式运行
  • 开发WebAPI服务
  • 标准日志
  • 多级配置文件

Git:https://gitee.com/xiaosonl/Lails.Server

Nuget:nuget.lails.cc/nuget

二、安装

新建控制台程序项目,用Nuget引用Lails.WebAPI包。

Install-Package Lails.Server

引用后生成的项目文件结构如下:

其中:

  • config.json : 配置文件,默认只有“HttpPort”值,即Http服务监听的端口号
  • DemoAPI.cs:WebAPI的示例文件
  • NlLog.config : NLog配置文件

三、使用说明

1. 编写服务内容

 AppServer.Run(AppConfig.Default, () => {     AppLogger.Info("Server Start."); }, () => {     AppLogger.Info("Server Stop."); });

2. 安装/启动服务

#安装服务{app}.exe install#卸载服务{app}.exe uninstall#启动服务{app}.exe start#停止服务{app}.exe stop

四、示例

1. WebAPI服务

/// <summary>    /// DemoAPI    /// </summary>    [WebApiResult]    public class DemoAPIController : ApiController    {        /// <summary>        /// 获取数据        /// </summary>        /// <returns>数据</returns>        public string GetData()        {            return "Lails.Server";        }        /// <summary>        /// 获取对象        /// </summary>        /// <param name="id">对象ID</param>        /// <returns>DemoModel对象</returns>        public DemoModel GetModel(long id)        {            return new DemoModel() { ID = id, Value = "Value" };        }        /// <summary>        /// 获取对象返回异常结果        /// </summary>        /// <param name="id">对象ID</param>        /// <returns>DemoModel对象</returns>        public DemoModel GetModelOnException(long id)        {            throw new CustomException(-1, "无此ID对象", null);        }    }    /// <summary>    /// DemoModel对象    /// </summary>    public class DemoModel    {        /// <summary>        /// 对象ID        /// </summary>        public long ID { get; set; }        /// <summary>        /// 对象值        /// </summary>        public string Value { get; set; }    }    /// <summary>    /// 自定义异常    /// </summary>    public class CustomException : Exception    {        public CustomException(int code, string message, Exception ex)        : base(message, ex)    {            this.HResult = code;        }    }

创建的API服务支持通过Swagger浏览,默认地址为: http://localhost:7777/Swagger

2. 配置文件

默认的配置文件config.json内容如下:

{  "HttpPort": 7777}

自定义配置可直接修改该文件,如:

{  "HttpPort": 7777  "DB": "mysql"}

在代码中使用该配置时,需要创建新的配置类,如下:

public class Config : AppConfig{    public string DB { get; set; }}.....Config config = AppConfig.Load<Config>();

版本记录

V0.2.0.0

  1. 引用Nuget包时,支持创建配置文件和示例,且默认总是复制到程序目录。

V0.2.2.0

  1. 加入Swagger文档功能,可通过/Swagger地址访问。

V0.2.2.1

  1. 修改NLog配置文件,支持同时输出到文件和控制台。

V0.2.3.0

  1. 支持生成自动服务安装脚本文件

V0.2.3.2

  1. 加入服务异常捕获和记录;

V0.2.3.3

  1. 对主进程进行全局异常处理和记录;

V0.2.3.4

  1. 支持对服务名称加入前缀;

V0.2.4.0

  1. 新增WebApiResultAttribute的自定义ActionFilter,支持返回标准的输出格式:
{  "Code": 0,  "Result": { ID: 1, Name: 'name' },  "Message": ""}

对于API出抛出的异常,也会自动捕获并获取异常Code(取值于Exception中的HResult值)及异常信息输:

{  "Code": -1,  "Result": null,  "Message": "无此ID对象"}

V0.2.5.0

新增Autofac注入

//注入AutofacConfig.Builder.RegisterType(typeof(Logger)).SingleInstance();

V0.4.0.0

新增扩展Controller中header取值

V0.4.1.1

调试模式下给Swagger附加参数

    SwaggerAttachParams.Add("appId","header");

V0.4.1.2

支持接口别名

   [AliasMethod("x.x.x.x")]   public void Get(string value)   {   }    访问方式1:http://127.0.0.1:7777/DemoAPI/Get    访问方式2:http://127.0.0.1:7777/DemoAPI/x.x.x.x

支持上下文OwinContext

   例:string appid = OwinContext.Current.Request.Headers.Get("appId");

V0.4.1.3

支持跨域Credentials

支持新增过滤器

SwaggerAttachParams.Add("appId","header");

全局异常捕获处理

服务异常自动恢复启动


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap