《呼叫中心系統(tǒng)架構(gòu)》中,講到了呼叫中心的各個(gè)模塊以及相互之間的關(guān)聯(lián),在本系統(tǒng)中,坐席軟件與坐席服務(wù)之間采用了純TCP以及WCF兩種通信機(jī)制,其他模塊之間通信全部基于WCF,所以會(huì)存在A模塊需要知道B模塊、C模塊等提供的WCF服務(wù)地址,那么誕生了一個(gè)問(wèn)題:如何配置這么多的凌亂的WCF或者TCP關(guān)聯(lián)地址信息?
通常,我們的系統(tǒng)配置都是維護(hù)在數(shù)據(jù)庫(kù)或者配置文件中,我們來(lái)分析一下優(yōu)劣勢(shì)(觀點(diǎn)僅限本系統(tǒng)架構(gòu),各個(gè)系統(tǒng)有各個(gè)系統(tǒng)的業(yè)務(wù)背景,不能一概而論)。
1.采用配置文件來(lái)維護(hù)配置信息。
這種方式是使用最廣的,開發(fā)成本最低的方式。但是明顯缺點(diǎn)比較多:維護(hù)以及修改的成本較高,如果其中一個(gè)節(jié)點(diǎn)提供的地址發(fā)生變更,很難將修改覆蓋到所有地方,經(jīng)常會(huì)造成遺漏,從而影響系統(tǒng)穩(wěn)定性。并且效率也比較低下,在緊急情況下,這種方式會(huì)帶來(lái)大量的時(shí)間消耗。很明顯,我們將這種方式排除在外。
2.采用數(shù)據(jù)庫(kù)來(lái)維護(hù)配置信息。
這種方式是普遍大家比較認(rèn)可的好辦法:既做到了修改一個(gè)地方,所有地方都覆蓋了,又降低了時(shí)間消耗成本提高了效率,并且還可以做數(shù)據(jù)庫(kù)緩存服務(wù),統(tǒng)一對(duì)外提供服務(wù),提高系統(tǒng)運(yùn)行效率。但是缺點(diǎn)也比較明顯:在系統(tǒng)部署好之前,數(shù)據(jù)庫(kù)訪問(wèn)配置本身就是需要配置的,那如果數(shù)據(jù)庫(kù)地址或賬號(hào)信息發(fā)生變更,仍然脫離不了第一個(gè)方式引起的配置信息散亂分布問(wèn)題。
考慮到呼叫中心系統(tǒng)中,各個(gè)模塊消耗的資源并不是特別居高不下,從硬件層面,系統(tǒng)部署結(jié)構(gòu)可能如下圖所示:
那么我們可以采用注冊(cè)表的方式,在同一臺(tái)服務(wù)器中,只維護(hù)一次配置信息,所有服務(wù)都共享此信息。
在C#中,讀寫注冊(cè)表核心代碼:
復(fù)制代碼
/// summary>
/// 從注冊(cè)表中讀取配置
/// /summary>
/// param name="key">/param>
/// returns>/returns>
internal static CtiServerConfig Load(Microsoft.Win32.RegistryKey key)
{
CtiServerConfig config = new CtiServerConfig();
if (key != null)
{
config.CtiAddress = key.TryGetValuestring>("CtiAddress");
config.CtiPort = key.TryGetValueint>("CtiPort");
config.IsTape = key.TryGetValueint>("IsTape") == 1;
config.TapePath = key.TryGetValuestring>("TapePath");
config.IsPlayJobNo = key.TryGetValueint>("IsPlayJobNo") == 1;
config.VoicePath = key.TryGetValuestring>("VoicePath");
}
return config;
}
/// summary>
/// 將配置保存到注冊(cè)表
/// /summary>
/// param name="key">/param>
public void Save(Microsoft.Win32.RegistryKey key)
{
key.SetValue("CtiAddress", this.CtiAddress);
key.SetValue("CtiPort", this.CtiPort);
key.SetValue("IsTape", System.Convert.ToInt32(this.IsTape));
key.SetValue("TapePath", this.TapePath);
key.SetValue("IsPlayJobNo", System.Convert.ToInt32(this.IsPlayJobNo));
key.SetValue("VoicePath", this.VoicePath);
}
復(fù)制代碼
注意:C#的注冊(cè)表讀寫操作,會(huì)有32位和64位的區(qū)別,由于本系統(tǒng)CTI采用的是64位編碼,所以出現(xiàn)了配置好的信息,在32位服務(wù)中不可讀取的問(wèn)題。
大壩云呼叫中心全渠道客服系統(tǒng)
標(biāo)簽:西安 山南 自貢 云浮 十堰 淄博 麗水 上饒
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《使用注冊(cè)表創(chuàng)建統(tǒng)一的呼叫中心配置管理系統(tǒng)》,本文關(guān)鍵詞 使用,注冊(cè)表,創(chuàng)建,統(tǒng)一,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。