我有兴趣使用一个免费库,该库具有类似于 MSMQ 的功能,可以在 win 表单应用程序中的 3 个应用程序域之间发送/接收消息。
我只需要专用队列功能(没有公共队列或 AD 支持)
请提供链接和一些优点/缺点。如果您认为需要更多积分来了解更详细的细节,我很乐意提出子问题。
注意:不幸的是,我有一些用户没有 Windows XP 专业版(MSMQ 不可用)
我看到了 Apache ActiveMQ 和rabbit MQ,但这对于我需要做的事情来说似乎有点矫枉过正。
http://activemq.apache.org/
http://www.rabbitmq.com/
可以使用受命名互斥体保护的单例队列来实现此功能,但如果有人已经这样做了,我不想花时间。
I am interested in using a free library that has features similar to MSMQ to send/receive messages among 3 app domains in a win form application.
I only need the private queue functionality (No public queues or AD support)
Please provide links and some advantages/disadvantages . I am happy to open sub questions if you think you need more points for finer details.
Note: Unfortunately I have some users that do not have Windows XP professional edition (MSMQ is not available)
I saw Apache ActiveMQ and rabbit MQ but it seems a bit overkill for what I need to do.
http://activemq.apache.org/
http://www.rabbitmq.com/
It is possible to implement this feature using a singleton Queue protected by a named mutex, but I would not like to spend the time if somebody has already done it.
发布评论
评论(6)
有Rhino队列。作者被认为是一位相当优秀的开发人员。
There is Rhino Queues. The author is considered to be a pretty good developer.
使用 NServiceBus 怎么样? -contrib/downloads/list" rel="nofollow noreferrer">共享内存传输?创建者 Udi Dahan 是基于消息的架构领域中备受尊敬的个人。
How about NServiceBus using the shared memory transport? The creator, Udi Dahan, is a well respected individual in the message based architecture space.
如果它们都在同一个应用程序中,那么共享同步队列就是您想要的,请查看 Queue.Synchronized 方法,为您提供了一个线程安全的队列。
If it's all in the same application then sharing a synchronized queue is what you want, have a look at the Queue.Synchronized method in MSDN, that provides you with a thread-safe queue.
在某些时候,必须有一些客户端特定的代码来接受消息。如果用户需要在他们的机器上接受消息,这听起来像是智能客户端的情况。在 Windows 世界中,有一个智能客户端可以进行消息传递,并允许用户以断开连接的方式处理数据。
我无法想象任何一个库将允许在不同操作系统上进行消息传递。即使使用单例,也必须有某种跨平台的方式来发送/接收消息。看起来客户端总是必须是特定于操作系统的。
或许可以在非 Windows 端尝试 Mono。您可以使用一个工具来查看第三方库是否具有无法在 Mono 中运行的依赖项。它与 Visual Studio 的 Mono 工具一起发布。它被称为单声道迁移分析器(MoMA)。
At some point, there is going to have to be some client specific code to accept messages. If the users need to accept messages on their machines, it sounds like a smart client situation. In the Windows world, there is a smart client which does messaging, and allows users to work with data in a disconnected way.
I can't imagine any one library which will allow messaging on different operating systems. Even if a singleton is used, there has to be some cross-platform way to send/receive the messages. It seems like the client end would always have to be OS specific.
It might be possible to try Mono on the non-windows side. There is a tool you can use to see if a third party library has dependencies which will not run in Mono. It was released with the Mono tools for Visual Studio. It is called the Mono Migration Analyzer (MoMA).
另请参阅此系统:
http:// www.codeproject.com/Articles/193611/DotNetMQ-A-Complete-Message-Queue-System-for-NET
DotNetMQ 是一个开源消息代理,具有以下几个功能:
持久或非持久消息传递。
即使在系统崩溃时也能保证持久消息的传递。
在自定义机器图中自动和手动路由消息。
支持多种数据库(目前支持 MS SQL Server、MySQL、SQLite 和基于内存的存储)。
支持不存储、直接发送风格的消息传递。
支持请求/回复风格的消息传递。
易于使用的客户端库与 DotNetMQ 消息代理进行通信。
内置框架可轻松在消息队列上构建 RMI 服务。
支持将消息传递到 ASP.NET Web 服务。
基于 GUI 的管理和监控工具。
易于安装、管理和使用。
See also this system:
http://www.codeproject.com/Articles/193611/DotNetMQ-A-Complete-Message-Queue-System-for-NET
DotNetMQ is an open source Message Broker that has several features:
Persistent or non-persistent messaging.
Guaranteed delivery of persistent messages even in a system crash.
Automatic and manual routing of messages in a custom machine graph.
Supports multiple databases (MS SQL Server, MySQL, SQLite, and memory-based storage for now).
Supports don’t store, direct send style messaging.
Supports Request/Reply style messaging.
Easy to use client library to communicate with the DotNetMQ Message Broker.
Built-in framework to easily construct RMI services upon message queues.
Supports delivering messages to ASP.NET Web Services.
GUI-based management and monitoring tool.
Easy to install, manage, and use.
您可能想查看 Retlang http://code.google.com/p/retlang/
You might want to look at Retlang http://code.google.com/p/retlang/