一起使用 C#、Java Web 服务和 JMS






3.80/5 (10投票s)
弥合 Java 和 C# 之间的差距,使用 Web 服务将 JMS 特定的消息发送到 C# 客户端。
引言
毫无疑问,.NET 比 SWING 更先进,因此如果您需要创建一个桌面应用程序,.NET 是最佳选择。 Java 在服务器端的不同领域有一些优势,其中之一就是 JMS。(很多人不同意)。我尝试使用 .NET 作为客户端的强大功能,并将其与 Java Web 服务异步集成,此外,我还在 Web 服务端使用 JMS 向 .NET 客户端发送消息。这只是一个小框架的开始,可以扩展以创建一个功能完善的 .NET、JMS 交互框架
背景
我有一个 Java 中的 SWING 客户端/JMS 应用程序。我的另一个应用程序是在 .NET 中,也需要从 JMS 接收消息。
使用的技术
- 异步 DOTNET Web 服务
- DOTNET 委托
- Java Web 服务 - AXIS
- Java 消息服务 (JMS)
- HTTPConnectionFactory
如何运行应用程序?
Java Web 服务是使用 JBuilderX 创建的,并在 JBoss 3.x 上进行了测试。要运行该应用程序,您需要按以下顺序运行应用程序
- Java Web 服务。
在 JbuilderX 中打开项目,并使用配置“启动 Web 服务服务器”运行服务器
- .NET 客户端
更新 Web 引用
使用 Visual Studio .NET 2003 运行应用程序
- Java JMS 消息发布者类。JMSChatPublisher
在 JbuilderX 中打开项目,并使用配置“通过 JMSPublisher 发送消息”运行应用程序
在控制台窗口中,写入消息并按 Enter 键。这些消息将通过 Web 服务,并显示在 .NET 应用程序的 textBox 中。上面还显示了所描述内容的图像。
架构图

使用代码
Java 端代码
注意:代码未经过优化,并且未包含任何设计模式。
以下代码在 ReceiverWebService
中编写,它创建 JMSChatSubscriber
并调用 getSynchronousMessage
并等待函数返回响应。
public String getJMSChatPublisher() {
JMSChatSubscriber jmsChatSubscriber = null;
jmsChatSubscriber = new JMSChatSubscriber();
return jmsChatSubscriber.getSynchronousMessage();
}
.NET 端代码
客户端使用 RegisterJMS
异步调用 Web 服务,并在回调 ServiceCallback
中接收响应。使用 EndgetJMSChatPublisher
收到消息后。它再次调用 RegisterJMS
以等待下一条消息
public void RegisterJMS(NotifyMessage function)
{
em = new ReceiverWebServiceService ();
AsyncCallback cb = new AsyncCallback(ServiceCallback);
IAsyncResult ar = em.BegingetJMSChatPublisher(cb,em);
this.callFunction = function;
}
public void ServiceCallback(IAsyncResult ar)
{
string str = em.EndgetJMSChatPublisher(ar);
callFunction(str);
RegisterJMS(callFunction);
}
结论
我没有实现或展示以下案例,因为它们非常简单。- .NET 应用程序作为发送者 - 创建一个 Web 方法,该方法接收消息并将其发送到 JMS Topic
- Java 接收器 - 创建一个 Java 类,它可以异步等待消息。
subscriber.setMessageListener(messageListerner); connection.start(); // No need to do this as the message will be received in messageListerner //subscriber.receive();
关注点
此应用程序展示了如何在不使用任何桥接技术的情况下从 JMS 接收消息到 .NET 客户端,这不仅成本高昂,而且是一个很大的开销。我不是一个很好的作者,所以我希望通过架构图和代码可以理解一切 :)
历史
01-14-2005:
- 原文