# 内外网分离方案 ## 一、实现原理 外网部署TCP服务,内网部署TCP客户端。内网先连接外网的TCP服务,然后保持长连接,外网部署代理的Web应用有数据过来通过TCP服务器主推给内网TCP客户端,TCP客户端将数据转发给内网的应用(默认:Web应用,可自定义处理机制)进行处理,处理完成后将结果逐级返回。 ## 二、程序组成 ### 1、TCP服务 TCP服务采用开源框架SuperSocket开发;主要处理订阅、请求、响应及心跳包数据;采用log4net记录运行日志;部署方式采用windows服务方式部署。 ### 2、TCP客户端 TCP客户端采用开源框架SuperSocket.ClientEngine;主要功能包括:长连接TCP服务器,断开重连(通过心跳包探测是否断开),数据处理,数据反馈;并可以通过实现IDataHandler接口处理自定义数据处理方式;采用log4net记录运行日志;部署方式采用windows服务方式部署。 ### 3、转发SDK 用于网外代理用的Web应用使用的SDK;主要用于连接TCP服务并且转发客户端提交的数据,采用程序集的方式引用配置相应目标地址及端口、AppID、AppSecret、AppKey后即可使用,用户无需再开发程序连接TCP服务器。 ## 三、安全性 通过AppID,AppSecret方式认证客户端身份,并且再客户端设有用于生成MD5校验和的Key防止伪造信息,并采用时间戳限制数据的有效期。 网外Web服务器只起到代理作用,核心程序及数据库均部署在内网大大提高安全性。 ## 四、运行环境 Windows、framework4.5及以上 ## 五、转发机制 ![](/document/%E5%86%85%E5%A4%96%E7%BD%91%E5%88%86%E7%A6%BB%E6%96%B9%E6%A1%88-1.png) ## 六、工作流程 ![](/document/%E5%86%85%E5%A4%96%E7%BD%91%E5%88%86%E7%A6%BB%E6%96%B9%E6%A1%88-2.png)