我们有一个当前正在运行的 WCF 服务和 COBOL VM 进行通信,以提供对来自 Vision 文件的数据的访问。该过程有效,但我们必须将 WCF 服务限制为[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single)]
. 它可以工作,但有时对用户来说似乎很慢,因为他们正在排队并且某些请求有时超过几秒钟。
COBOL VM 是一个单例,所以我不相信我可以将我的 COBOL 程序与多个 WCF 服务请求隔离开来,而不会使它们相互踩踏。COBOL 程序无法知道哪个客户端的调用是什么,它只是返回/操作数据。
我的想法是在 COBOL 中创建一个程序来管理我的请求,但我不确定如何将该信息返回到 WCF 服务,以便它响应正确的客户端请求。
我的想法是传递 WCF 客户端请求的一些 ID,例如 guid。COBOL 程序将存储 WCF guid 并调用另一个程序,该程序使用该 guid 在 COBOL 中为我获取数据。COBOL 程序然后返回带有 ID 的数据,但我需要一些方法来确保将正确请求的数据路由到正确的 WCF 客户端请求。
过程:
WCF Client 1->WCF Service (creates WCF_id1)->COBOL program 1(WCF_id1)->COBOL getData(WCF_id1).
WCF Client 2->WCF Service (creates WCF_id2)->COBOL program 1(WCF_id2)->COBOL getData(WCF_id2).
WCF Service stores both Wcf_id1 and Wcf_id2 somehow associating them with the WCF Client that requested them.
COBOL program 1 stores both Wcf_id1 and Wcf_id2 and makes the request to COBOL getData individually passing in the ids.
Both Client 1 and Client 2 are waiting for a response.
COBOL getData(WCF_id2)->COBOL program 1(WCF_id2)->WCF Service(WCF_id2)
从这里,我如何确保 WCF 客户端 2 获取此数据而不是 WCF 客户端 1?
我想查看 COBOL 程序返回的数据,然后将其路由到请求它的客户端。这在 WCF 中可能吗?
我一直在查看 WCF 回调,认为我可以使用回调来查询 WCF_id,然后将数据返回到正确的 WCF 客户端。
我在正确的轨道上吗?我应该看看其他一些 WCF 功能吗?