C# 在应用程序之间共享实例

Posted

技术标签:

【中文标题】C# 在应用程序之间共享实例【英文标题】:C# Sharing instances between apps 【发布时间】:2016-01-20 14:25:13 【问题描述】:

我有两个 C# 应用程序。第一个创建一个对象的实例,设置一些属性,等等。

第二个应用需要通过其设置的属性等来访问此实例。

有没有办法可以做到这一点。也许将实例存储在操作系统或类似的东西中?

我发现我可以持久化一个对象,但是第一个应用程序正在创建一个到低级接口的连接,这需要一些时间来连接。我想保持该连接打开并让其他应用使用它。

【问题讨论】:

你试过 RabbitMQ 吗?还是其他任何消息系统? 【参考方案1】:

您需要一些进程间通信方式。回到“过去”,这是通过 .NET 远程处理完成的,但该技术已被弃用。

Microsoft 当前推荐用于进程间通信的 .NET 技术是 Windows Communication Foundation (WCF)。是的,有些人可能会认为这对于简单的对象共享来说太过分了,但这是目前支持和推荐的用于此目的的技术。

可以在以下 MSDN 文章中找到 WCF 和其他选项的高级概述:

Choosing Communication Options in .NET

【讨论】:

【参考方案2】:

参考:What is the best choice for .NET inter-process communication?

WCF 是进程间通信的最佳选择。支持a number of different transport mechanisms (including Named Pipes) 并且可以完全由配置驱动。我强烈推荐 你看看 WCF。

参考:How to communicate with a windows service from an application that interacts with the desktop?What is the simplest method of inter-process communication between 2 C# processes?Simple Inter-process Communication system for .NET framework

【讨论】:

【参考方案3】:

您无法按照说明执行此操作。没有两个应用程序可以跨应用程序边界共享内存。相反,当您将对象从一个传递到另一个时,它们会被序列化,如果您需要一个或另一个来响应更改,您应该查看事件回调等。我建议为此研究 WCF 服务。

【讨论】:

以上是关于C# 在应用程序之间共享实例的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 和 C# 或 VB 之间共享数据(2 个运行程序)

如何在多个 Symfony 实例之间共享应用程序缓存(共享缓存池)?

C#中Serializable序列化实例详解

ActionCable 频道实例是不是在客户端之间共享?

C# 插件架构与插件之间的接口共享

C#:在多个进程和/或线程之间共享数据的最佳方式