背景
最近工作中写了N多个命令行程序跑数据.每新建一个项目就要引用各种包,各种配置.所以有了这个整合包.其实不能算是框架吧,没写什么代码,几乎就是引用一些包.
代码
GitHub: https://github.com/lun3322/Luna.Service
NuGet1: Install-Package Luna.Service
NuGet2: Install-Package Luna.Service.Nlog
- Luna.Service 代码几乎都在这个包里.Starter在程序启动的时候加载.主要功能是扫描程序集注册相关类型进IOC
- Luna.Service.Nlog 这里包含了我常用的nlog配置,和一个启动器
关于使用
- 如果你也使用nlog写日志的话可以直接引用 Luna.Service.Nlog 包.关于日志的一个配置会自动加载到项目中
- 设置NLog.config文件编译时复制到输出目录
在Main方法中新增代码
```
using (var starter = Starter.Create())
{
starter.Container.AddFacility(f => f.LogUsing().WithConfig("NLog.config"));
}starter.Run();
```增加你的service像下面这样
public class DemoService : LunaServiceBase, IDemoService
```
public interface IDemoService : ILunaService
{
string GetMessage();
}
{
public string GetMessage()
{
Logger.Info("GetMessage");
return "测试";
}
}
```
注意接口实现ILunaService才能被自动注册进IOC修改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 <- 实体层