2011-06-16 45 views
2

我正在开发一个项目,在该项目中,我正在开发一个利用Genesys作为CTI解决方案提供商(www.genesyslab.com)后端的伪统一通信中间层解决方案(存在&呼叫控制)。 COM)。该解决方案的前端可能是一个基于Web的应用程序(不想使用ActiveX虽然我的公司是微软的商店)计算机电话集成软电话体系结构问题

的Genesys使用基于socket通信和通信是异步的。比如我送的地方打电话给GENESYS和Genesys提供表明呼叫中拨打,并设立了一个事件响应的请求。

根据我的n层设计经验有限,我正在设想至今是一个Windows服务来处理套接字通信的Genesys和环境维护所有呼叫活动的状态。接下来,我将看到一个WCF服务与Windows服务进行通信,以向基于Web的客户端提供有关呼叫状态的详细信息(使用基本或ws绑定)。这可以让我摆脱使用ActiveX,但需要轮询,所以最有可能我会有多个WCF实例进行负载平衡来分担负载。

我在正确的轨道上吗? WCF可以与Windows服务通信并为客户提供服务吗?任何其他建筑方法的建议将不胜感激!

最好的问候, 杰森

回答

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都需要你的客户信任你足以安装某些东西。

+0

谢谢乔希。我将不得不做更多的Silverlight搜索,作为专门针对silverlight和webapps(屏幕弹出功能)以及胖客户端之间通信的可能解决方案(任何您可能拥有的示例都将不胜感激!)我开发了一个ActiveX控件,但我更愿意在客户端无需任何控制的情况下更多地采用SOA方法。 – 2011-06-16 18:35:19

0

除了“中间层” WCF服务,您应该使窗口服务主机WCF服务了。这将是WCF服务与Windows服务交谈的最简单方式。此WCF服务只能通过中间层服务调用才能与电话集成进行交互。

对于韧性,你实际上可能使端点集群或路由服务端点,这将允许您介绍Windows服务的故障转移相对无缝

另外,我会避免WsHttpBinding的一般,因为它增加了很多开销为了实现通常不需要的功能性

+0

我看到有关此设置的一个缺点是缩放。 Windows服务应该能够处理我们的生产环境的负载,而WCF服务将是一个瓶颈。对我来说,它似乎会更好地分离出WCF服务,这样我可以有谈话的单一窗口服务WCF服务的多个实例。你对此有何看法?另外,我可能需要有一个热备用主/备用Windows服务来增加永续性。 – 2011-06-16 18:33:53

+0

对不起,我不清楚 - 我的意思是有你的“中间层”服务,但也暴露了Windows服务的WCF服务纯粹是为了简化通信的目的 - 我会更新我的答案 – 2011-06-16 19:23:46