• 整合了一个命令行程序的框架


    背景

    最近工作中写了N多个命令行程序跑数据.每新建一个项目就要引用各种包,各种配置.所以有了这个整合包.其实不能算是框架吧,没写什么代码,几乎就是引用一些包.

    代码

    GitHub: https://github.com/lun3322/Luna.Service

    NuGet1: Install-Package Luna.Service

    NuGet2: Install-Package Luna.Service.Nlog

    1. Luna.Service 代码几乎都在这个包里.Starter在程序启动的时候加载.主要功能是扫描程序集注册相关类型进IOC
    2. Luna.Service.Nlog 这里包含了我常用的nlog配置,和一个启动器

    关于使用

    1. 如果你也使用nlog写日志的话可以直接引用 Luna.Service.Nlog 包.关于日志的一个配置会自动加载到项目中
    2. 设置NLog.config文件编译时复制到输出目录
    3. 在Main方法中新增代码
      using (var starter = Starter.Create<Runner>())
      {
      	starter.Container.AddFacility<LoggingFacility>(f => f.LogUsing<NLogFactory>().WithConfig("NLog.config"));
      
      	starter.Run();
      }
      
    4. 增加你的service像下面这样
      public interface IDemoService : ILunaService
      {
      	string GetMessage();
      }
      
      public class DemoService : LunaServiceBase, IDemoService
      {
      	public string GetMessage()
      	{
      		Logger.Info("GetMessage");
      		return "测试";
      	}
      }
      
      注意接口实现ILunaService才能被自动注册进IOC
    5. 修改Runner类的run方法
      public class Runner : LunaRunnerBase
      {
      	private readonly IDemoService _demoService;
      
      	public Runner(IDemoService demoService)
      	{
      		_demoService = demoService;
      	}
      
      	public override void Run()
      	{
      		var message = _demoService.GetMessage();
      		Logger.Info(message);
      		Logger.Info("ok");
      	}
      }
      

    如果不喜欢用nlog的话,可以查看Castle.Windsor文档修改第3步中AddFacility方法

    项目约定: 你的程序命名必须遵循aaa.bb.c的方式

    Demo.App <- 应用程序入口

    Demo.Service <- 服务层

    Demo.Entity <- 实体层

  • 相关阅读:
    英语发音-自然拼读法
    最小二乘法
    BZOJ 1650 [Usaco2006 Dec]River Hopscotch 跳石子
    洛谷 1803 凌乱的yyy
    【模板】矩阵加速(数列)
    【模板】矩阵快速幂
    洛谷 4246 BZOJ 1018 [SHOI2008]堵塞的交通
    洛谷 1276 校门外的树(增强版)
    BZOJ 1468 Tree 【模板】树上点分治
    洛谷 1501 [国家集训队]Tree II BZOJ 2631 Tree
  • 原文地址:https://www.cnblogs.com/huaface/p/8567904.html
Copyright © 2020-2023  润新知