2011-06-16 42 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