Vb.net 在WCF DICOM代理服务上实现回调

Vb.net 在WCF DICOM代理服务上实现回调,vb.net,wcf,dicom,Vb.net,Wcf,Dicom,我正在尝试使用WCF实现DICOM代理服务器。它是DICOM并不是很重要,只是它迫使我使用一个特定的过程来获取图像文件:在DICOM下,您在一个众所周知的IP地址/端口上设置了一个侦听器,该地址/端口在服务器上注册了一个ID(AETITLE)。然后,您向该服务器发送一个查询,并且在将来的某个时候(或者可能永远不会),服务器会将图像文件直接发送给您的侦听器 我的侦听器将是代理上的一个方法,它将接收DICOM文件 代理将使用WCF工作,从桌面客户端接收请求。在这种情况下,桌面客户端将使用WCF向代理

我正在尝试使用WCF实现DICOM代理服务器。它是DICOM并不是很重要,只是它迫使我使用一个特定的过程来获取图像文件:在DICOM下,您在一个众所周知的IP地址/端口上设置了一个侦听器,该地址/端口在服务器上注册了一个ID(AETITLE)。然后,您向该服务器发送一个查询,并且在将来的某个时候(或者可能永远不会),服务器会将图像文件直接发送给您的侦听器

我的侦听器将是代理上的一个方法,它将接收DICOM文件

代理将使用WCF工作,从桌面客户端接收请求。在这种情况下,桌面客户端将使用WCF向代理发送一个请求,请求特定的研究UID(来自实际服务器的文件的GUID),然后我很高兴在文件到达侦听器之前使用该线程块从代理获得回复,我也可能最终使用回调-但同样的问题也适用

因此:

客户端代理DICOM服务器
|RegisterListener----------->|
|
|请求(StudyID)--->|
||请求研究ID----------->|
|                        |                          

||我通过实现一个nettcp WCF服务解决了这个问题。该服务从客户端接受DICOM UID,然后将其和客户端会话存储在共享字典中。然后,它注册一个DICOM侦听器,并向PACS服务器查询图像

一旦映像返回到侦听器,服务将从共享字典中的映像中查找UID,序列化映像并在返回映像的客户端上触发回调

我仍然有几个问题需要解决,但总的来说,这是有效的

本教程让我开始学习:

Client                 Proxy                  DICOM Server
                         |RegisterListener--------->|
                         |
|Request(StudyID)------->|
|                        |Request StudyID---------->|
|                        |                          
|                        |<--------------Send(DICOM)|
|<----------Return(DICOM)|