0

我们有一个带有 GUI 的程序 ( A.exe ) 和一个工具栏,它用一些文本来处理 NLP 内容。在那个工具栏中,我们有函数 A,它通过添加一些 xml 标签来转换文本。这里有人(老板)希望我创建一个 Web 服务调用函数 A。它告诉我动态数据交换(他几年前使用过),我看到了类似SendMessage的东西。

Web 服务将被 Internet 上的某个人使用:发送文本并以xml格式获取结果。当有人调用WS时GUI程序无法启动,因为它太慢了,所以有人建议一次性启动这个A.exe,WS会通过发送DDE调用来询问这个A.exe 。我不知道A.exe在并发调用的情况下会如何反应。

网络服务将:

  1. 将文本文件保存在目录中
  2. 调用A.exe
  3. A.exe将计算文本文件并创建 xml 文件
  4. WS 将循环直到 xml 文件存在
  5. WS 将获取 xml 并将其作为流发送给原始调用者

我想指出:

  1. DDE 很旧,似乎需要一个支持 DDE 服务器的程序。
  2. SendMessage 有点晦涩,因为我是一名 Java 开发人员。
  3. 我没有按照建议尝试命名或匿名管道进行调用。

谢谢你。

PS:用UI来构建WS调用服务端程序是异端吧?

4

1 回答 1

1

这个问题的答案实际上取决于您要完成的工作。您的函数是否更改来自外部数据源(如数据库)的数据,或者您是否在应用程序中调用函数?

我将从以下问题开始。

1)按钮的作用是什么?它的功能可以移动到服务中并在多个应用程序之间共享吗?

2)你能把功能放在一个DLL中并在两个应用程序之间共享吗?

3)这两个应用程序真的需要相互通信吗?

如果两个进程必须相互通信,而您只希望应用程序 A 响应来自应用程序 B 的消息,请考虑使用命名管道进行 TCP/IP 通信。这在 .NET 中非常简单,并提供了进程之间的快速通信。

更新: 这里是使用命名管道信息的链接:http: //msdn.microsoft.com/en-us/library/bb546085.aspx

更新 2:这是您更新问题后的更新。您可以访问 A.exe 的源代码吗?如果这样做,您有两个选择:1) 将该逻辑移动到您的服务中或 2) 修改 A.exe 以接受命令行参数,以便您的服务可以调用该过程并返回结果。如果您没有源代码并且无法从命令行调用 A.exe,那么除了您自己以您的 Web 服务可以调用的形式编写该过程之外,您无能为力。

PS 你不必担心并发调用,因为每个服务器请求都会执行一个单独的进程。

于 2012-04-04T12:32:49.937 回答