现在有一个由c ++编写的服务器(gsoap)。我有c#应用程序(c#4.0,winforms)。我从这个服务生成wsdl。所以我可以在我的应用程序中调用一些函数。
但是这个功能的持续时间超过了一小时。我认为,最好的方法是:
1)我在我的应用程序中使用线程调用此函数。
2)另一个人在他们的应用程序中在单独的线程中调用此函数。
但是这个人告诉我这是不可能的。她说,“在gsoap中没有线程这样的功能”
这是真的吗?我不明白为什么不可能......
答案 0 :(得分:1)
1)我在我的应用程序中使用线程调用此函数。
2)另一个人在他们的应用程序中在单独的线程中调用此函数。
如果应用程序是指Web服务客户端应用程序,则简短的答案是否定的,这本身不会导致gsoap处理多个线程上的请求。 gsoap不提供开箱即用的任何多线程功能。在客户端应用程序中启动单独的线程不会在(gsoap)服务器上启动相应的线程。
虽然多线程可用于处理来自多个客户端的请求,但您的预感是正确的。但是,您需要在gsoap应用程序中自己创建和管理这些线程。您可能会发现此讨论很有帮助 - gSOAP Multithreading
答案 1 :(得分:1)
如果您的服务呼叫运行了一个小时或更长时间...修改服务接口不是更好吗?
您可以返回某种类型的“id”(整数,或者可能是GUID)。
并拨打电话IsFinished(id)
,返回当前状态。
当IsFinished返回true时,用户可以通过GetResult(id)
调用来检索结果。
这是界面方面的更多工作,但也许它使您的服务器更容易维护。它在客户端更干净。