使用ClownFish开发独立应用程序
虽然可以 使用 Nebula 开发独立应用程序,但是 使用ClownFish开发独立应用程序 会有以下优点:
- 发布目录更干净,因为ClownFish的第三方依赖更少
- 可定制性更强
ClownFish和Nebula的设计理念不一样:
- Nebula:All in One,大而全,开箱即用。
- ClownFish:模块化,小积木,自行组装。
ClownFish 有以下几个 Nuget 包,可根据需求自行引用:
- ClownFish.net:最基本单元,包含开发单个应用程序的所有最基本功能。
- ClownFish.Web:基于ClownFish.net,支持 Asp.net Core
- ClownFish.Redis:基于ClownFish.net的Redis工具类库
- ClownFish.Rabbit:基于ClownFish.net的RabbitMQ工具类库
- ClownFish.ImClients:基于ClownFish.net的IM客户端工具类库,支持:企业微信,钉钉,飞书
- ClownFish.Email:基于ClownFish.net的Email简单封装工具类库
- ClownFish.Office:对个别典型场景的Office文档操作做了一点简单的封装
1,创建新项目
打开 Visual Studio (最新版本) 创建一个 你需要的 应用程序…………
2,添加包引用
例如:
<ItemGroup>
<PackageReference Include="MySqlConnector" Version="2.2.7" />
<PackageReference Include="ClownFish.Web" Version="9.24.1121.1" />
</ItemGroup>
说明:
- ClownFish.Web:它包含了 ClownFish.net
- MySqlConnector:因为程序需要访问 MySQL 数据库,如果还需要访问其它类别数据库,请自行引用
3,修改 Program.cs
一个典型的WebApi项目的启动代码可参考:
public class Program
{
public static void Main(string[] args)
{
AspnetCoreStarter.Run(new MyStartup());
}
}
// 这个类用于定制启动过程
public class MyStartup : WebApplicationStartup
{
public override bool AutoInitDAL => true; // 初始化数据访问层
public override bool AutoInitTracing => true; // 开启日志与监控
public override bool AutoInitAuth => true; // 初始化身份认证模块
public override void AppInit()
{
// 你的初始化代码写在这里…………
}
public override void ConfigureServices(IServiceCollection services)
{
// 加载所有 Controller
services.AddControllers(this.RegisterInnerMvcFilters);
base.ConfigureServices(services);
}
public override void ConfigureWeb(WebApplication app)
{
app.MapControllers();
app.MapGet("/", ClownFish.Web.Utils.HttpContextUtils.ShowHomePage);
}
}
后台任务示例
如果你要开发的是一个后台服务(不需要ASP.NET),那就更简单:
以下是包引用的示例代码:
<ItemGroup>
<PackageReference Include="MySqlConnector" Version="2.2.7" />
<PackageReference Include="ClownFish.net" Version="9.24.1121.1" />
</ItemGroup>
启动代码如下:
public class Program
{
public static void Main(string[] args)
{
ClownFishInit.InitBase();
ClownFishInit.InitDAL();
ClownFishInit.InitLogAsDefault();
// 你的初始化代码,你可以开启后台任务,订阅消息队列,等等……
YourAppInitCode();
Console2.WriteLine("Application started. Press Ctrl+C to shut down.");
using( ConsoleEndWaiter waiter = new ConsoleEndWaiter() ) {
waiter.Wait();
}
}
}