使用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();
        }
    }
}