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 个运行程序)