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

    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