gpt4 book ai didi

c# - 如何在不使用 SendMessage 的情况下将 "Message"发送到 .Net 中的另一个进程?

转载 作者:太空狗 更新时间:2023-10-29 23:20:52 26 4
gpt4 key购买 nike

我有多个应用程序在一台机器上运行。一个正在执行工作并将日志写入磁盘以了解它所做的事情(我将称之为 WorkerApp),另一个是总结有关 WorkerApp 状态的支持信息以及更多详细信息(我将称之为仪表板)。

我想从 Dashboard 指示 WorkerApp 采取行动(例如,“Ping 远程服务”),并且我希望 WorkerApp 在收到“pong”响应时向 Dashboard 发送响应。

我看过使用 SendMessage 的示例,但这似乎很陈旧(2016 年现在没有更多标准用于进程间通信吗?)。

我对 Akka.Net 的经验很少但是Remoting它的功能似乎是一个很好的方法,尽管设置它对于我想做的事情来说似乎有点矫枉过正。

目前在 .Net 中两个进程之间进行通信的最简单方法是什么?是否有一些在本地机器上工作的例子?

最佳答案

我为此整理了一个 Akka.Net 示例。这是它的样子。

仪表板(发送消息)

using System;
using Akka.Actor;
using Akka.Configuration;

namespace DashBoard
{
class Program
{
static void Main(string[] args)
{
var config = ConfigurationFactory.ParseString(@"
akka {
actor {
provider = ""Akka.Remote.RemoteActorRefProvider, Akka.Remote""
}
remote {
helios.tcp {
transport-class = ""Akka.Remote.Transport.Helios.HeliosTcpTransport, Akka.Remote""
applied-adapters = []
transport-protocol = tcp
port = 0
hostname = localhost
}
}
}
");

using (var system = ActorSystem.Create("Dashboard", config))
{
var server = system.ActorSelection("akka.tcp://WorkerApp@localhost:8081/user/WorkerAppActor");
while (true)
{
var input = Console.ReadLine();
server.Tell(input);
}
}
}
}
}

WorkerApp(接收消息)

using System;
using Akka.Actor;
using Akka.Configuration;

namespace WorkerApp
{
class Program
{
static void Main(string[] args)
{
var config = ConfigurationFactory.ParseString(@"
akka {
actor {
provider = ""Akka.Remote.RemoteActorRefProvider, Akka.Remote""
}
remote {
helios.tcp {
transport-class = ""Akka.Remote.Transport.Helios.HeliosTcpTransport, Akka.Remote""
applied-adapters = []
transport-protocol = tcp
port = 8081
hostname = localhost
}
}
}
");

using (var system = ActorSystem.Create("WorkerApp", config))
{
system.ActorOf<WorkerAppActor>("WorkerAppActor");

Console.ReadLine();
}
}
}

class WorkerAppActor : TypedActor, IHandle<string>
{
public void Handle(string message)
{
Console.WriteLine($"{DateTime.Now}: {message}");
}
}
}

关于c# - 如何在不使用 SendMessage 的情况下将 "Message"发送到 .Net 中的另一个进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38014015/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com