传真管理系统设计

        最近需要做个demo用于演示传真系统(又是demo我似乎被公司边缘化了,每次只能做demo然后交出代码,正式系统与我无关惊讶),虽然是demo但是我还是稍微写了一下,因为要和另一个公司的100万的产品在竞争,草率的写自己面子也过不去。

 一、需求

        公司使用一个传真板卡,每张板卡支持多路连接,已经有板卡发送开发组件,我们要做的是与业务系统关联调用开发组件将业务传真发送至目标传真机。公司可能会购买多张板卡,每张板卡都有最多链路限制(30路),所以需要一个统筹程序来管理所有的板卡发送。

二、分析

        通过需求分析,我们可以看到开发主要目的就是一个分配程序,分配程序分配发送任务给不同的板卡发送,以便分散压力。其实如果关注我博客的朋友会发现其实这个需求和之前联通彩信发送的程序需求一样。而且这个程序比联通彩信发送更适合使用之前的那个设计,因为传真板发送的组件使用也是由我们自己开发,这样就可以比联通程序更近一步优化。

三、设计

        整体设计思想还是使用之前开发联通彩信发送程序(具体查看这里),不过因为板卡发送程序也是由我们自己写,所以稍微改进了一下,在发送端和接收端都实现了多链路连接。

        所谓多链路连接,就是连接池的概念。大家知道计算机处理连接最费资源和时间的就是建立连接,要不断的等待相互握手信号,所以才有人设计了连接池,所以传真系统也设计了个连接池,它会预先创建出多个连接板卡发送程序的链路,并维持链路不断,当需要向板卡程序发送传真数据时直接从池中获得一条已创建的连接发送,当已连接链路少于某阀值时就会自动调用创建连接程序填满连接池,以保证每次向连接池请求连接时都能获得可用连接,连接使用完毕后如果当前设置为保持连接,则这个连接并不会被立刻关闭而是扔回连接池,等待下一次使用(这样做的好处是你可以不用平凡建立连接,因为有的服务器如果在一定时间内平凡连接就会强制断开你的连接一段时间)。板卡发送程序也会维持传真系统发起的多个请求,并处理有数据的连接。

 

程序用的就是联通发送程序代码,只不过改成了C#其他照抄。本地测试了一下性能还是不错的。

你可能感兴趣的:(优化,测试,C#,任务,产品)