ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

.net core 和 WPF 开发升讯威在线客服系统:系统总体架构

2021-04-17 15:58:00  阅读:133  来源: 互联网

标签:core 客服 升讯威 访客 服务器 net WPF


本系统文章详细介绍使用 .net core 和 WPF 开发升讯威在线客服与营销系统的过程。本篇简要介绍了系统的技术架构,我是如何设计实现这样一套系统的。

本系列文章详细介绍使用 .net core 和 WPF 开发 升讯威在线客服与营销系统 的过程。本产品已经成熟稳定并投入商用。
请访问:https://kf.shengxunwei.com


文章目录列表请点击这里


书接上回,本篇主要介绍系统的技术架构,从较高的抽象层次上解释我是怎样设计实现这样一套系统的。

首先我们先粗略的提出一些技术要求和技术指标:

  • 支持多租户。也就是云服务的形式,不同的客户拥有互不干涉的域,各自管理自己的站点和数据。
  • 系统可以横向扩展,具备弹性扩容的能力。在初期可以以较低的配置环境运行,用户增加时,可以在不影响原有结构的基础上,无感的横向扩展。亦或因服务规模的减小而收缩。
  • 具备较高的安全性,不易被***破坏。除了防火墙层面的配置外,应用系统自身拥有一定的抵御能力。
  • 安装部署简单,在私有化部署时,不需要投入太多人力,最多只需一个人便可完成全部私有化部署工作。
  • 具备较高的稳定性,部署之后能能够做到正常运行免人工干预。

接下来我们的顶层设计,都围绕这些目标进行。在技术选型方面,如题:.net core + WPF 结构。

接下来我一一解释这几个部分的选型考虑。

访客端嵌入部分

指的是客户网站引入的一个 JavaScript 文件,以便在客户网站上显示出客服在线和嵌入的聊天窗口,并且能够追踪访客的状态报告给客服。

这里专门指出是”完全原生 JavaScript 。原因在于这个 JavaScript 文件,是需要客户直接通过 script 标签嵌入在自己网站页面中的。所以如果依赖任何第三方库,都有可能对客户的网站产生影响,即使是 JQuery ,也有可能与客户网站自身使用的版本有所不同,产生冲突。
这部分内容需要完全不依赖任何第三方库实现,在访客访问网站时,向服务器报告访客的基本信息、访问状态。并从服务器接收信息,处理客服发送的一些指令。

访客端

指的是弹出的聊天页面、留言页面或其它页面。

这部分由于是弹出的独立画面,与客户自有网站没有直接关联,可以采用完全独立的技术体系。这里我们使用的原生 JavaScript + JQuery。

服务器程序和数据库

服务端程序除了提供一般数据增删改查能力之外,重要的是需要实现稳定的消息中件间,稳定的站点状态、客服状态、访客状态等上下文数据在内存中的管理,以及稳定的TCP/IP长连接维护机制。
综合考虑技术指标和开发效率,我采用了 .net core 做为服务端程序,SQL Server 做为数据库的方案。
.net core 目前已经具备了完善的技术指标,并且能够提供其它开发平台无法比拟的开发效率。得益于整个 .net 技术体系,使我靠一己之力完成整个系统成为可能。

数据库我采用了 SQL Server ,它能够借助 Entity Framework Core 与 .net core 无缝融合,提供无与伦比的开发效率。同时,在数据处理的性能上,完全能够满足各项技术指标的要求,在日常使用和运维上,也提供了 Oracle 和 MySQL 无法比拟的便利性和工作效率。

客服端程序

客服端程序我使用了 WPF 框架。相比 WinForms 程序,WPF 提供了更高的开发效率和更完备的基础框架,使得画面呈现、数据处理、模块解耦更容易。同样,基于 .net 体系的 WPF 所提供的极高的开发效率是其它开发平台无法提供的。对于需要一天十几个小时稳定运行不退出的程序而言,原生客户端程序的稳定性也是基于 Web 页面的程序所无法相比的。


在上文中,我们提到系统可以横向扩展,具备弹性扩容的能力。在初期可以以较低的配置环境运行,用户增加时,可以在不影响原有结构的基础上,无感的横向扩展。亦或因服务规模的减小而收缩。

下面我将从系统的整体结构来阐述这个问题:

从上图可以看出这是一个典型的分布式部署系统。客户网站中嵌入的 JavaScript 文件在运行是地,首先连接路由服务器,路由服务器保存了一张表,每个站点所应该使用的应用服务器地址。就好像DNS服务器一样,告诉客户网站你应该向哪里发起真正的连接请求。接着,客户网站中嵌入的 JavaScript 程序向对应的应用服务器发起连接,上报访客状态,接收服务器指令。
那么很容易理解,我们只需要扩展我们的应用服务器数量,就可以轻松的增加系统的承载能力。反之也可以进行缩减操作。

在处理客户的私有化部署需求时,我们也可以根据容易的实际需要,取消路由服务器、取消文件服务器、取消CDN内容分发网络。以一个简单的方案来应对访问量不高的中小企业需求。在这个基础上,我们还可以借助现在的云服务器,实现弹性配置,以一个较低配置的服务器开始运行,甚至将数据库和缓存服务完全部署在一台服务器上使用,在使用过程中发现确有需要,先增加单台服务器的配置,不能满足需求的,再分离数据库和缓存服务,还不能满足要求的,则增加路由服务器,增加应用服务器。

本文对系统的整体架构做了简要的介绍,在接下来的文章中,我将具体解构服务端程序的结构和设计、客服端程序的结构和设计,敬请关注。

标签:core,客服,升讯威,访客,服务器,net,WPF
来源: https://blog.51cto.com/lovejxs/2713640

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有