C# 具有Blazor Web应用程序的TCP接收器服务
我有一个blazor web应用程序,但需要一个接受TCP消息的后台服务。我以前创建过Blazor应用程序以及TCP发送方和接收方。但我没有把它们放在一起 一般问题 如何使用Blazor Web应用程序实现TCP接收器 具体问题C# 具有Blazor Web应用程序的TCP接收器服务,c#,asp.net-core,.net-core,tcp,blazor,C#,Asp.net Core,.net Core,Tcp,Blazor,我有一个blazor web应用程序,但需要一个接受TCP消息的后台服务。我以前创建过Blazor应用程序以及TCP发送方和接收方。但我没有把它们放在一起 一般问题 如何使用Blazor Web应用程序实现TCP接收器 具体问题 我是否使用依赖注入将其注册为服务?据我所知,这些服务只在需要时调用,而不是一直处于活动状态 是否可能,或者我是否需要创建两个独立的应用程序 后台服务是否能够充当TCP接收器,就其持续监视的意义而言?我是否能够获取控制台应用程序代码并通过以下方式添加它: publi
- 我是否使用依赖注入将其注册为服务?据我所知,这些服务只在需要时调用,而不是一直处于活动状态
- 是否可能,或者我是否需要创建两个独立的应用程序
- 后台服务是否能够充当TCP接收器,就其持续监视的意义而言?我是否能够获取控制台应用程序代码并通过以下方式添加它:
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }) .ConfigureServices(services => { services.AddHostedService<TCPReceiver>(); });
公共静态IHostBuilder CreateHostBuilder(字符串[]args)=> Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder=> { webBuilder.UseStartup(); }) .ConfigureServices(服务=> { services.AddHostedService(); });
- API控制器端点可以充当TCP接收器,还是必须通过Rest请求调用它们
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
公共类程序
{
公共静态void Main(字符串[]args)
{
CreateHostBuilder(args.Build().Run();
}
公共静态IHostBuilder CreateHostBuilder(字符串[]args)=>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.UseStartup();
});
}
调用IHostBuilder.Run()
实例化每个注册的IHostedService
的实例,启动它,等待用户尝试并退出应用程序,然后对每个服务调用stop。这是注入TCP侦听器的一个非常好的地方
如果您确实需要在Azure中托管,则必须以不同的方式托管侦听器。有几种选择:
- Azure Service Fabric:由Microsoft推荐用于此类用例,但它具有相当高的学习曲线
- Azure云服务:易于实现,但已弃用。每个部署都需要分配一个VM,因此发布、扩展等都需要相当长的时间
- Azure容器实例:使用DotNetCore,创建控制台应用程序、基于该应用程序创建容器映像以及在Azure中托管映像非常容易。不支持绿色/蓝色部署,您可以使用Azure Traffic Manager手动管理
- Azure Kubernetes:我没有用过这个,因为它有一个更大的学习曲线,对于一个小项目,我认为它不值得