带有“什么是最好的”短语的问题通常不适合 stackoverflow,因为它们是主观的 - 您的查询可能没有正确的答案,但也许会有一些好的答案。
我过去多次使用的一个选项是实现类似简单的 shell/命令提示符,通过 telnet 访问。您只需打开一个侦听套接字 (TcpListener) 并接受发送给它的文本命令/向它写入文本,就像您第一天的编程一样,带有控制台输入和输出流打印。简单的 tcp 服务器网络上有大量示例,所以我不会在这里提供任何代码。就您的观点而言:
支持 .Net Core 并跨平台工作
它是基于 tcp 的,这是固有的
自托管(即不是单独的可执行文件)
在应用启动时启动,由应用托管,不需要任何复杂的 IPc
已在全球范围内注册并可在任何终端使用(即 > myApp doThis -please --prettyplease)
防火墙可能是唯一阻止远程设备通信的东西
调用通过管道传输到 Web 界面,以便通过现有 Web 应用程序进行远程终端访问
存在基于 html5/web 的 telnet 实现。也可以从中制作一个简单的Web界面(将浏览器视为telnet;它们之间的区别很小,它们都读取和写入tcp套接字,只是浏览器从http协议中添加了更多文本。您可以将其过滤掉,然后获取用户可以改变的有趣部分(URL))
可通过其他本地网络设备上的终端访问
以上介绍
我最后一次实现这个是在信用卡终端使用的服务器上。它已经有一个监听套接字并且客户端遵循严格的协议,因此很容易检测到消息何时与协议不匹配并将其视为命令。系统发展到可以通过简单的 telnet 接口完全远程配置服务器,可以添加新的信用卡范围和路由,可以启用调试打印输出,所有流量都将发送到 telnet 客户端,某些卡终端可以是监控等;只不过是command = streamreader.ReadLine()、if(command == "debug") Global.DebugLoggingStream = tcpWriterStream的compsci101东西
它也有一个基于 HttpListener 的 Web 界面,它只是提供了一个格式良好的最新错误列表、一些配置设置等。有些东西在表格中的网页上比在 80char 列格式中更好.最终我将其升级为更像终端;用户可以用命令结束 URL,命令将被执行并将结果放入数组中。每次提供页面时,他的数组都会被转储,因此它本身就变成了一种命令 shell,不需要 telnet。我保留了 telnet 接口,因为它有利于实时调试、在消息发生时观看消息等,但如果你想要真正花哨的话,现在 websockets 就是为这类事情而存在的。
另一个想法让我想到了;也许大部分艰苦的工作已经为你完成了,如果你能找到一个 irc 服务器的 c# 实现,与一个基于 web 的 irc 客户端配对,它将提供一种与你的服务“聊天”的方式(这几乎是所有命令外壳是;与程序进行文本聊天的人)