Mar*_*tin 6 c# wcf cobol vision
我们有一个当前运行的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)
Run Code Online (Sandbox Code Playgroud)
从这里,我如何确保WCF客户端2获取此数据而不是WCF客户端1?
我想查看来自COBOL程序的返回数据,然后将其路由到请求它的客户端.这可能在WCF中吗?
我一直在考虑WCF回调,认为我可以使用回调来查询WCF_id,然后将数据返回到正确的WCF客户端.
我是在正确的轨道上吗?我应该考虑其他一些WCF功能吗?
小智 0
我看到“COBOL getData”一次处理一个请求,因为它是单例的。如果您将 wcf 实例设置为单例,则来自客户端的所有请求都将是连续的,并且一个请求将等待另一个请求。因此,您不需要在其他 cobol 程序“COBOL 程序 1”中管理带有 ID 的请求。只需添加下面的服务行为即可
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, InstanceContextMode = InstanceContextMode.Single)]
Run Code Online (Sandbox Code Playgroud)