2012-04-04 151 views
0

我们有一个程序(A.exe)与图形用户界面和一个工具栏谁做NLP东西与一些文本。 在该工具栏中,我们有函数A,它通过添加一些xml标签来转换文本。 有人在这里(老板)希望我创建一个Web服务,调用函数A。它告诉我关于Dynamic Data Exchange(他在几年前使用过),我看到类似SendMessage的东西。如何通过c#应用程序用UI调用外部Windows应用程序?

Web服务将被互联网上的某个人使用:发送文本并获得结果为xml。当有人呼叫WS,因为实在是太慢了GUI程序无法启动,所以有人 sugggests为所有推出这个A.exe时一次,WS将通过发送DDE电话问这个A.exe时 。我不知道如何A.exe将在并发呼叫的情况下作出反应。

Web服务将:

  1. 将文本文件保存在一个目录
  2. 呼叫A.exe时
  3. A.exe时将计算文本文件,并创建XML文件
  4. WS将循环直到xml文件存在
  5. WS将获取xml并将其作为流发送到原始c阿列尔

我想需要注意的是:

  1. DDE是旧的,似乎需要一个DDE服务器能计划。
  2. 因为我是Java开发人员,所以SendMessage有些模糊。
  3. 我没有尝试命名或匿名管道按建议进行该调用。

谢谢。

PS:用UI构建WS调用服务器端程序是异端,不是吗?

+0

更新您的问题,提供有关应用程序如何工作以及如何实现的更多详细信息。过程A(UI)和过程B是什么?过程B期望过程A做什么?流程A是否与流程B对话? – 2012-04-04 12:45:08

+0

我添加了一些细节。他们可以理解吗? – enguerran 2012-04-04 13:04:05

回答

1

这个问题的答案真的取决于你正在努力完成什么。你的函数是否改变来自外部数据源(如数据库)的数据,或者你是否正在调用应用程序中的函数?

我会从以下问题开始。

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

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

3)这两个应用程序是否真的需要互相沟通?

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

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

UPDATE 2:这是更新您的问题后的更新。你有访问A.exe的源代码吗?如果这样做,您有两种选择:1)将该逻辑移入您的服务中或2)修改A.exe以接受命令行参数,以便您的服务可以调用该过程并取回结果。如果您没有源代码,并且您无法从命令行调用A.exe,那么您可以通过Web服务可以调用的形式自行编写过程,这样做可以做的不多。

P.S.您不必担心并发调用,因为每个服务器请求都将执行一个单独的进程。

+0

回答您的相关问题:1)不,因为我的老板不想。 2)不,因为我的老板不想。 3)是的,因为我的老板把它卖了。 =>实际上,UI程序加载一个文本并返回一个xml。 WS将带着这条小溪返回一条小溪......但是“无论如何,加上酸味的红酒,都不会让你失望!” – enguerran 2012-04-04 12:37:05

+0

然后使用命名管道或简单的TCP/IP。在帖子中查看我更新的措辞。 – 2012-04-04 12:38:09

+0

我添加了一个使用命名管道的简单示例的链接。这些提供了快速/简单的进程间通信。如果您需要进一步的帮助,请考虑更新您的问题,并提供更多有关您尝试解决的特定问题的详细信息。 – 2012-04-04 12:41:41

相关问题