彩信系统结构介绍

 

彩信系统结构介绍

        彩信系统已经上线2个多月了,虽然上线后也做了比较多的改进,不过基本都是业务层面的变动,结构上还是比较稳定,所以想花点时间总结一下彩信系统结构的问题和以后希望的改进的方向。

       现在的彩信系统结构类似于WCF,但是又不同于WCF所以在编写过程中我一直强调他是一个类WCF的东西,因为它确实有部分WCF的特征,但是WCF里面关键的一部分它并没有实现,也就是服务宿主(我叫它对象维持),这个我会在下面的章节中提到。虽然它并不是WCF但是很多WCF特性它也有,比如松耦合,高扩展性,简化开发等。

       实际上,如果非严格的讲,现在的结构中服务宿主其实仍然是有的,只是它不再是单独的一个服务器上,而是分散到了前台JS端,也就是对象被维持在了客户(消费者)端。这样做有好处比如减少部署,方便开发,也可以减少服务器压力,但是也有问题,比如“消费者”买的商品仍然来自工厂而非商店,当前的中介只是给了“消费者”工厂的地址而已,当“工厂”改变了一种消费者无法使用的“运输方式”时它的局限性就体现出来了。所以它较适合部署那些需要快速开发简单部署的系统。对于大系统我仍然建议中间层还是必须存在。实际上最初设计此架构时是包含中间对象维持层的,但是因为考虑到我整个系统(包含业务部分)只有1个月的时间,所以放弃了这种部分结构,改由现在较快速开发的架构。

一、             最初的设计

        现在的彩信平台所使用的框架其实并非是最初的设计,它进行了部分的妥协,最早的设计系统中还包含一个维持对象的服务,用户(消费者)并非直接访问“工厂”地址来获取“商品”而是通过访问维持对象的服务来获取一个代理对象,对象维持层会为当前“消费者”维持一个代理对象,“消费者”通过访问对象维持层提供的对象来得到真正“工厂”所生产的商品。“消费者”无需关心“工厂”地址(那怕它已经搬迁)也无需关心“工厂”所使用的运输方式(空运海运陆运)自己是不是可以支持,它只需要关心访问对象维持层(商店)即可。无论“工厂”如何改变,“消费者”也只是去商店买东西而已。图1.0.1展示了最初设计时消费者获得商品所需要经过的流程。

图1.0.1

        这样的设计显然是有好处的,就像我前面讲的消费者无需关心商品到底是谁来生产,也无需关心工厂到底在那里,物流如何做,他们要做的只是走进商店,拿好商品然后付钱走人。而工厂也不需要关心到底谁会去买他们的商品,又该如何去和那些最终消费者“沟通”,他们要做的只是生产好商品,然后放到商店去卖,两者互不相干。

        同样在安全上这样的设计也较好,因为最终消费者并不知道商品是谁生产的,所以工厂的地址可以不必暴露给消费者,消费者知道的也只是商店的地址而已,工厂也只需要为商店敞开大门,防止一些非法的访问。而且权限由商店来管理,工厂不需要去关心最终消费者到底有没有权限访问当前商品,工厂只要关心商店的权限即可。

        从开发上讲,开发人员不需要关心任何关联问题,因为每一块都是相对独立的,只需要完成自己所需要开发的功能即可,然后将接口和访问方式发布给中间对象维持层,前台使用的其他开发人员就可以通过访问中间层得到发布的对象。部署时也可将不同的服务发布在不同的服务器中,重用性也会较好的体现。

二、             现有的结构

        实际开发中,我并没有用最初的设想结构来开发,因为整个项目包含业务实现必须在1个月内完成,这个就给框架开发带来较大的压力,权衡下我选择了放弃之前设计里中间层部分内容,改由客户端(消费者)来维持对象,这样可以减少开发模块以便缩短开发周期。

        现在的设计中,消费者会首先向“咨询站”询问“工厂”的位置和沟通方式(就好比你打12580的指路服务问他在那里以及如何去),“咨询站”会将这些信息发送给“消费者”,然后消费者会通过获得的“工厂”信息直接去访问“工厂”来获得“商品”。而工厂任何的变化,只需要通知“咨询站”更新他的资料库来方便消费者查询即可。“消费者”无需关心“工厂”的变化,因为“消费者”所有的资讯都来自于“咨询站”而已。“咨询站”保证了“消费者”获得的“工厂”信息是最新的可用的。图2.0.1就是一个现有架构上典型的“商品”购买过程。

图2.0.1

        同样和最初设计的一样,“消费者”不需要关心“工厂”的信息,他只需要记住自己要的商品名称,然后询问“咨询站”他会告诉“消费者”那里有你要的商品以及如何去。工厂的任何变化,或者“商品”改成了其他的“工厂”来生产,都不会影响流程,这个时候只需要通知“咨询站”刷新商品对应“工厂”信息即可,而对于“消费者”什么都不会受到什么影响(除非他们改变了访问方式或接口)。

        在开发中开发人员也不需要关心不属于自己模块中的关联问题,同上面的设计一样,开发人员将自己开发完成功能模块(商品)发布给“咨询站”让他去通知消费者即可。前端开发人员也只需要通过“咨询站”给的信息得到数据(商品)。而对于部署同样可以将“咨询站”,“工厂”和“消费者”分别部署在不同的服务器上(当然因为最新浏览器为了安全都禁止跨Dom访问所以可能需要将服务地址加入信任站点这个是后话)。

        实际开发中框架提供了一个Web Service服务这个服务维持了一个服务容器,服务容器里放着从配置文件中读取的所有业务服务的位置(生产商品的“工厂”位置),客户端需要数据时会首先访问这个服务,将服务名称传入后会返回这个名称对应的服务信息(包括这个服务提供的所有方法),客户端得到这些信息后在JS端通过获得的信息创建一个代理对象,代理对象中的方法是直接指向最终“工厂”生产的“商品”位置的(这也是和最初设计有所不同的地方),消费者只需要在JS中调用代理对象里包含的相应的方法即可获得所需要的数据。

        通过现在的方法和最初设计时的设想比较,会发现这个方法基本实现了每一层相对独立的松耦合设计,对于开发也提供了较方便的接口,业务变动对系统稳定性的影响也减到了较低的位置,以最简单的方式实现了最初设计时考虑的绝大部分内容。

        但是他所带来的问题也是显然意见的,首当其冲的就是访问方法,现在的系统因为所有的服务提供的访问方法都是Web Service,在开发中因为有这样的优势所以就可以不用考虑其他的方法(如:TCP直连,Remoting等)当用户使用了一种客户端(JS端)无法支持的方法作为数据通路时,这个方法就无能为力了(当然也可以解决,方法是提供一个转接的服务)。而前一种方法因为客户端都是通过访问“商店”获得数据,“商店”的地址和连接方式是确定的如何去和工厂连接也是商店的事情和客户端无关。

        接着安全方面也会需要较多的考虑,前一种方法因为“工厂”只对“商店”敞开大门,所以对于它而言无需关心“消费者”的权限,而现在的方法因为消费者是直接访问“工厂”来获得数据,工厂就不得不考虑安全问题。其实这个问题我之前考虑过,原本的设想是通过一个登录服务获取登录凭证,“工厂”必须实现一个凭证获取的服务来获取登录凭证,然后“咨询站”会将登录凭证发送给“工厂”,每次用户获取数据时会将自己的凭证发送给“工厂”来验证,但是因为有很多现有服务需要兼容(需要修改他们并实现一个登录验证,这个是很麻烦的一件事情)而登录模块最终也不是由我来编写所以并没有完成实现。

        现有的框架结构虽然不是相当的优秀,而且还会带来很多问题,但是对于现有的彩信管理系统而言我觉得是已经相当足够了,在我看来这个框架比较适合那些需要快速部署的小型系统或站点,他提供了一个相对便捷的解决方案,无论是开发部署都比那些现成的WCF框架方便简单,而对于开发人员同样可以享受到较复杂架构所带来的便利和优势。

        彩信系统现在还在业务部门不断的适用中,在不断的运行中我相信应该还会不断的暴露出其他的问题,今天我总结了一下现在框架的结构和可能遇到的问题,在以后的框架设计中我也会尽力避免这些问题,提供一个更好的设计。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
翼通WEB短平台基于C#3.5 + MSSQL2005 R2平台开发,前端采用jQuery1.4.1 + DIV +CSS展示,系统CS源码采用3层架构(数据层+逻辑层+表现层),系统采用存储过程的设计,方便改动及二次开发。 1、【翼通短平台系统】具有以下特点: 1)采用3层安全认证机制,安全性超强。一层:用户授权访问;二层:动态安全码、用户ID和用户角色MD5加密验证机制,防止用户篡改COOKIE,每个页面进行用户权限验证;三层:系统统一过滤危险SQL代码,防止注入式攻击。 2)管理员后台配置短接口,动态获取短接口余额,可以设置当前默认短发送接口,多个短接口灵活切换。绝大多数接口通过直接进行配置就能使用。支持HTTP的GET、POST接口配置。支持爱迪生数据库接口。 3)系统基于系统管理员,代理商和最终客户的商业模式。支持无限极代理 4)群发短系统自动扣量,设置起始扣量号码数及扣量比例。 5)人工审核发送功能,系统可以设置用户是否需要审核发送,超过起始号码数的会自动拦截,并短提醒管理员客户已提交群发短,由管理员通过系统自动发送或通过卡发设备(短猫)发送。 6)智能白名单功能,管理员可以设置每个客户的白名单号码,设置的白名单号码不会参与扣量(白名单号码为客户可能用来测试群发的手机号码)。用户发送号码少于5个、自动进入白名单。 7)财务管理功能,管理员充值和群发短消费一目了然,财务统计功能。在线充值功能. 8)常用群发簿和个性短息管理功能。方便客户管理、维护短。 9)接口容错报警功能,短接口异常,系统自动发送错误日志,短接口余额不足系统自动短通知管理员。 10)系统公告功能,管理员可以指定发送给代理商、客户或全部。 11)对外API接口,支持10万号码一次性提交。 12)号码分流:设置移动、联通和电通道,不同的运营号码自动分流发送。(多通道版支持) 13)长短功能:支持500个字短系统自动拆分多条发送。 14)强大稳定的后台服务器端发送短程序,支持多线程,详细发送日志,错误报警。 15)自动+手动批量清理数据功能。 2、【翼通短平台系统】其它特色功能 1、卡发短回复功能,管理员后台增加回复,客户在后台可以看到回复短 2、扩展扣量,扣量规则分为按比例扣量和最高发送短数量,可针对每个客户设置不同的扣量规则 3、重新定义短接口,准确获取短接口余额,满足90%短接口直接在后台配置就能使用。 4、通讯录管理,支持批量上传。 5、提供对外webservice、http接口支持,支持10万号码! 6、优化短发送。 7、系统操作日志记录 8、直接在页面上设置系统参数 9、重新定义审核流程为:审核—发送—生成报告。 10、重新定义报告生成流程,大大提高报告的生成效率和真实程度。 11、升级服务端软件,记录错误日志,提供容错能力。 12、记录错误日志 13、限制一个账号只能同时在一台电脑登录 14、全部重构服务端软件,发送短效率大大增加 主要功能: 1.自定义网关接口. 2.移动,联通,电,小灵通,白名单号码。各自使用一个单独的接口。(需要接受系统支持) 3.可以设置10条以下自动发送,10条以上审核后发送。(需要接受系统支持) 4.可以设置在需要审核的时候,有短通知,通知您审核短。 5.可以定时发送短。(需要接受系统支持) 6.可以让用户通过快钱支付,直接在网上通过网上银行支付。 7.自动过滤非法字符,让客户在发送短之前就过滤非法字符。 8.无限级开代理商账号。代理商可以再开代理商账号。 9.用户自己可以给公司内部其他用户在线划账。 10.通讯录通过Excel文件导入\导出功能。 11.提供接口给用户或是代理商使用。 12.可以接爱迪生6.0/7.0网络版软件。(需要卡发接受系统支持) 13.短发送速度快。提交十万条号码到服务器,只需要一分钟。 14.客户发送的号码可以随意打包下载。 15.设置短发送时间,可以设置周日到周六中的任一天可以发送。也可以设置发送的具体时间,例如:星期日到星期六的07:00到20:30.可以发送短。 16.可以设置A类短和B类短,两种充值方式。A类短是网关短,B类短是虚拟短,客户在发送的时候可以选择短类别 17.可以手工添加上行的号码,也可以导入。就是用户回复的内容,可以手工添加,从爱迪生中导出,经过处理批量导入到系统中。 18.增加用户优先级选项,数值为:1到7.数字越小,级别越高。并且在没有发送的情况下,可以将需要先发的短移到最上面去发。(需要接受系统支持) 19.增加短投票功能,客户可以自己建议短投票,然后根据用户的回复内容统计出来。收集客户投票的方法有两种,第一种是接上一个能回复的网关接口,从网关接口上直接读取客户回复的内容。第二种,管理员直接在后台人工添加客户回复的内容,可以批量导入。 20.增加报表功能,可以统计出,每个用户的每天发送情况,生成Excel文件方便结算。 21.有网关回复系统,可以发生日短,可以定制短。 22.增加短投票功能。 各系统简要说明: 1、WEB客户端:客户通过网址,直接输入用户名和密码登录,进行发送短。 2、WEB代理商:代理商平台,代理商通过此平台可以开用户,和给用户充值等操作。 3、WEB管理员:总管理员后台,管理员的一切操作在此平台。 4、卡发接收系统:此系统的主要目的是将客户提交的号码,接收下来,通过短猫发出去。其原理是:软件可以设置多长时间从数据库中取一次数据,当有数据时,会自动下载号码文件,将手机号码和短内容,写进爱迪生6.0/7.0网络版的数据库中,短便可自动发送。 5、网关接收系统:本系统的功能也是将号码接收下来,只不过是通过管理员设置好的网关接口发出去的。此系统的主要目的是让客户端感觉不到发送短很慢。客户端只需要提交号码,由此系统接收号码发出去,从而减轻客户端的压力。 6、网关回复系统: 本系统的功能是将对接上的回复短内容给接受过来,存到用户的收件箱中的。(解决多个用户使用一个接口,回复内容要指定到用户的收件箱) 7、软件版客户端:客户通过安装此软件,直接登录平台发送短。客户有两个登录方式,一个是WEB的登录方式,一个是软件版的登录方式。也就是登录方式的不同,登录后的功能及数据都是相同的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值