如何配置WCF端点以在rdp客户端会话中使用,以便他们可以使用中央服务?

时间:2013-08-21 09:40:36

标签: c# wcf

我正在研究一些WCF示例。目前有一个带有销售登记册的订单输入应用程序。为了让用户获得最新的交易,他们必须手动刷新寄存器以从DB中提取。

我将通过WCF和发布者 - 订阅者框架实现一个事件模型,以便任何用户订购输入,在该屏幕打开时通知应用程序的所有其他实例刷新其事务寄存器。

所以到目前为止的例子都使用如下配置:

<configuration>
   <system.serviceModel>
      <services>
         <service name="TrafficLightSubscriptionService">
            <endpoint address="net.tcp://localhost:8001/TrafficLightSubscriptionService" binding="netTcpBinding" contract="ITrafficLightSubscription"/>   
         </service>
         <service name="TrafficLightEventService">
            <endpoint address="net.tcp://localhost:8002/TrafficLightEventService" binding="netTcpBinding" contract="ITrafficLightEvents"/>
         </service>
      </services>
   </system.serviceModel>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

这适用于使用IIS的单台计算机上的学习等,但我需要在一个小的Windows Server 2003域(1台服务器,4-5个客户端)上实现,其中“一些”客户端通过rdp会话远程连接其他通过局域网。

我更愿意将服务托管为不在IIS中的Windows服务。所以请指出如何为这种情况配置绑定的方向。

  1. 是否只需更换http://l.o.ca.l.h.o.s.t的IP号码即可。
  2. 如果是这样,如果动态分配IP怎么办?
  3. 是否有任何安全考虑因素:访问?如何允许任何经过身份验证的用户连接到该服务?

1 个答案:

答案 0 :(得分:1)

遍历RDP边界并非易事。如果仔细查看创建远程连接,可以选择要共享的本地资源 - 音频,打印机,文件系统......它们不共享IP,也不能从目标rdp主机内部获取客户端IP 。 但是,我不确定你真的需要这个 - 通过RDP会话连接的客户端 - 是他们在本地计算机上的应用程序客户端,还是刚刚在rdp桌面内连接后打开他们的客户端?如果客户端位于他们的“家庭”电脑上,那么,只要客户端位于同一网络上,它们连接的方式就没有任何区别。

至于问题的其他部分 - 我建议强烈反对自我托管WCF,因为IIS提供可靠性,如果你自己托管它可能很难模仿。
其次 - 如果您需要在每个客户端上安装IIS,那么您的软件架构可能会出现问题。我猜想只有服务器需要一个IIS,默认情况下服务器具有静态IP(如果不是,则通过其域计算机名称引用它们,并且您的DNS将执行路由)。客户应在订阅时提供当前的IP。

希望这会有所帮助......