C# 将.netframework NserviceBus端点服务迁移到.net core 3.0

C# 将.netframework NserviceBus端点服务迁移到.net core 3.0,c#,asp.net-core,.net-core,nservicebus,topshelf,C#,Asp.net Core,.net Core,Nservicebus,Topshelf,我有.net framework 4.6.1 nServiceBus端点作为服务运行。我还使用顶部的架子作为windows服务托管控制台应用程序。我知道它是这样设置的: class Program { static void Main(string[] args) { ConfigureEndpoint.Configure(); } } internal static class ConfigureEndpoint { internal sta

我有.net framework 4.6.1 nServiceBus端点作为服务运行。我还使用顶部的架子作为windows服务托管控制台应用程序。我知道它是这样设置的:

 class Program
{
    static void Main(string[] args)
    {
        ConfigureEndpoint.Configure();
    }
}

internal static class ConfigureEndpoint
{
    internal static void Configure()
    {
        HostFactory.Run(configure =>
        {
            configure.Service<EndpointSetup>(service =>
              {
                  service.ConstructUsing(s => new EndpointSetup());
                  service.WhenStarted(s => s.OnStart("connectionString"));
                  service.WhenStopped(s => s.OnStop());
                  service.WhenShutdown(s => s.OnStop());
              });
            //Setup Account that window service use to run.  
            configure.RunAsLocalSystem();
            configure.EnableShutdown();
            configure.SetServiceName("endpointName");
            configure.SetDisplayName("endpointName");
            configure.SetDescription("endpointName");
            configure.EnableServiceRecovery(recoveryOption =>
            {
                recoveryOption.RestartService(5);
            });
            configure.OnException(e =>
            {
                var logger = LogConfiguration.GetLoggerConfiguration();
                logger.Error(e, "Unhandled Exception Exiting");
                Environment.Exit(1);
            });
        });
    }

public class EndpointSetup
{
    private static IEndpointInstance _endpointInstance;

    public void OnStart(string connectionString)
    {
        AsyncOnStart(connectionString).GetAwaiter().GetResult();
    }

    private async Task AsyncOnStart(string connectionString)
    {
        var endPtConfig= new EndpointConfiguration("endpointname");
        endPtConfig.EnableInstallers();
        InitialSetup(endPtConfig, connectionString); //<- basic setups
        CustomizeMessages(endPtConfig); //<- conventions and routings for nservice bus 
        CustomizeContainer(endPtConfig); //<-- register business related services

        _endpointInstance = await Endpoint
            .Start(endPtConfig)
            .ConfigureAwait(false);
    }

    public void OnStop()
    {
        _endpointInstance?.Stop().GetAwaiter().GetResult();
        _servicePublisher?.Stop().GetAwaiter().GetResult();
    }
类程序
{
静态void Main(字符串[]参数)
{
ConfigureEndpoint.Configure();
}
}
内部静态类ConfigureEndpoint
{
内部静态void Configure()
{
HostFactory.Run(配置=>
{
configure.Service(Service=>
{
ConstructUsing(s=>newendpointsetup());
服务启动时(s=>s.OnStart(“连接字符串”);
停止时(s=>s.OnStop());
service.WhenShutdown(s=>s.OnStop());
});
//Windows服务用于运行的安装程序帐户。
configure.RunAsLocalSystem();
configure.EnableShutdown();
configure.SetServiceName(“endpointName”);
configure.SetDisplayName(“endpointName”);
configure.SetDescription(“endpointName”);
configure.EnableServiceRecovery(recoveryOption=>
{
recoveryOption.RestartService(5);
});
configure.OnException(e=>
{
var logger=LogConfiguration.GetLoggerConfiguration();
logger.Error(e,“未处理的异常退出”);
环境。出口(1);
});
});
}
公共类终结点设置
{
私有静态IEndpointInstance_endpointInstance;
public void OnStart(字符串连接字符串)
{
AsyncOnStart(connectionString.GetAwaiter().GetResult();
}
专用异步任务AsyncOnStart(字符串连接字符串)
{
var endPtConfig=newendpointconfiguration(“endpointname”);
endPtConfig.EnableInstallers();

InitialSetup(endPtConfig,connectionString);//在线查看时,我还发现自从引入“工作者服务”概念以来,.net core 3.0中可能不需要TopShelf。在本文中可以看到:仍然感到困惑……在线查看时,我还发现,.net core 3.0中可能不需要TopShelf,因为“工人服务”的概念被引入。从这篇文章中可以看出:仍然困惑。