我正在开发一个项目,我正在利用Genesys作为CTI解决方案提供商(www.genesyslab.com)开发伪统一通信中间层解决方案(在线和呼叫控制)。解决方案的前端可能是基于Web的应用程序(虽然我的公司是微软商店,但不想使用ActiveX)
Genesys使用基于套接字的通信,并且通信是异步的。例如,我发送一个请求拨打Genesys的电话,Genesys会回复一个事件,表明正在拨打和拨打电话。
基于我在n层设计方面的有限经验,到目前为止我所设想的是一个Windows服务,用于处理与Genesys的套接字通信并维护环境中所有呼叫活动的状态。接下来,我看到一个WCF服务与Windows服务进行通信,以向基于Web的客户端提供有关呼叫状态的详细信息(使用基本或ws绑定)。这将允许我退出使用ActiveX,但需要轮询,所以我很可能会有多个带负载平衡的WCF实例来共享负载。
我是否在正确的轨道上? WCF可以与Windows服务通信以及为客户提供服务吗?任何其他建筑方法的建议将不胜感激!
祝你好运, 杰森
答案 0 :(得分:0)
除了“中间层”WCF服务之外,您还应该使Windows服务托管WCF服务。这将是WCF服务与Windows服务通信的最简单方法。此WCF服务只能通过中间层服务调用,以与电话集成进行交互。
对于弹性,您实际上可以使端点成为集群或路由服务端点,这将允许您相对无缝地引入Windows服务的故障转移
此外,我通常会避免使用WsHttpBinding,因为它会增加很多开销,以便启用通常不需要的功能
答案 1 :(得分:0)
您当然可以实现一个WCF“网关”服务,该服务将CTI协议实现公开为WCF友好的SOAP Web服务。如果CTI协议依赖于有状态连接,那么作为无状态SOAP Web服务实现这可能很棘手。但是,根据您选择的客户端技术,这可能不是必需的。
ActiveX控件具有与登录用户相同的权限。因此它可以创建到CTI后端的TCP / IP或UDP套接字连接,完全避免了对WCF的需求。
如果您使用Silverlight(我强烈推荐使用Silverlight),那么您需要Silverlight应用程序具有提升的信任,以便在任意端口上创建套接字连接。通常,Silverlight应用程序can only create socket connections on ports 4502-4534,但具有提升信任的Silverlight应用程序可以使用任何端口。
Silverlight通常比ActiveX具有更好的“声誉”,但实际上,ActiveX和Silverlight都需要您的客户足够信任您才能安装。