Watch Star Fork

易联联 / Lails.ServerC#

加入码云
与超过 300 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
基于开源产品【ASP.NET WebAPI+TopShelf+NLog】实现的跨平台,自宿主运行的服务端框架。
Loading...
README.MD 5.04 KB

《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");

全局异常捕获处理

服务异常自动恢复启动

项目点评 ( 7 )

你可以在登录后,发表评论

搜索帮助