您可以通过命名管道自托管 ServiceStack 吗?

Posted

技术标签:

【中文标题】您可以通过命名管道自托管 ServiceStack 吗?【英文标题】:Can you Self-Host ServiceStack via Named Pipes? 【发布时间】:2016-08-09 16:40:30 【问题描述】:

我需要创建一个能够与其他本地进程进行高性能通信的进程。为此,我正在考虑使用.Net's named pipes,但我想知道创建一个可以这样做的ServiceStack host 实现有多容易(或可能),这样我们就可以利用其他SS 功能?

【问题讨论】:

【参考方案1】:

目前尚不支持 .NET 命名管道,但这是 would make a good feature request。

如果您想亲自实施,请查看 Messaging integrates with ServiceStack 在从 MQ 服务器接受消息后如何将其委托给 ServiceController 的 ExecuteMessage() API,例如:

public override void Configure(Container container)

    container.Register<IMessageService>(c => new RabbitMqServer());

    var mqServer = container.Resolve<IMessageService>();

    mqServer.RegisterHandler<Hello>(m => 
        ServiceController.ExecuteMessage(m));
    mqServer.Start();

命名管道实现会做类似的事情,但您需要委托给ServiceController.Execute()。高性能实现还需要在有效使用线程的情况下执行请求,以便服务器可以同时处理多个请求。

【讨论】:

以上是关于您可以通过命名管道自托管 ServiceStack 吗?的主要内容,如果未能解决你的问题,请参考以下文章

通过命名管道或 rsyslog 将时间戳添加到 systemd 托管服务的日志输出

客户端检查命名管道主机是不是打开

在Windows服务的WPF应用程序中托管的命名管道上使用WCF服务

“创建管道时出错。”在 Azure 管道自托管代理中运行 powershell 脚本时

是否可以将ServiceStack.Text.JsConfig设置范围仅限于您的库?

在 Mono + FastCGI 中托管 ServiceStack 时二进制数据损坏