在.Net中的端口读取应用程序,它是更好的Windows服务或Windows应用程序

sun*_*ala -6 .net c# vb.net windows-services iot

我正在.Net中编写一个TCP/IP端口读取应用程序来读取IOT设备中的数据,目前它作为Windows应用程序运行.我想让它成为Windows服务,有更好的选择吗?我想24/7阅读端口.有没有比Windows服务更好的选择?

Bra*_*are 7

如果您希望能够在没有用户登录的情况下运行程序,那么Windows服务就是您的选择.如果你想要一些图形用户界面,普通的应用程序会更有用.

作为辅助节点,您可以在作为服务启动和作为应用程序启动之间使用调试标志更改应用程序.将Service-Class添加到您的应用程序,并为您的自定义代码添加另一个类.该服务还将调用Sample类.然后,如果在Program.cs中添加预编译器#if DEBUG,则可以在调试期间切换使用每个

    public static void Main()
    {
#if DEBUG
        SampleClass sc = new SampleClass();
        sc.Start();
#else
        ServiceBase[] servicesToRun = new ServiceBase[]
        {
            new SampleService ()
        };
        ServiceBase.Run(servicesToRun);
#endif
    }
Run Code Online (Sandbox Code Playgroud)

然后,您还可以为每个构建类型添加不同的输出代码

    public static void WriteLog(string message, LogLevel logLevel)
    {
#if DEBUG
            Console.WriteLine(message);
#else
            Trace.Write ($"{DateTime.Now:dd.MM.yyyy HH:mm:ss.fff} {message}");
#endif
    }
Run Code Online (Sandbox Code Playgroud)

然后,如果您启动应用程序,请选择构建和调试.但是你只能以这种方式安装release-build作为服务.