zoukankan      html  css  js  c++  java
  • 糟糕的十一月

    十一月感觉就是写邮件系统和两个策划要的活动而已。。。

    一直觉得邮件系统十分简单,但是实现的时候却不是一回事。实现速度比预期的慢,一方面是边写边参考了礼包系统的结构,另一方面是抽象错误。就因为邮件放在礼包的位置,然后邮件看起来只是比礼包多一两个字段,所以就参考了礼包系统。这个错误实在太严重。表现层的相似性居然影响到后端的实现!!!

    上周的code review里,被喷了两个多小时。焦点主要是两个地方,一是对内部来说,其他子系统用邮件的时候不友好;二是协议来说,冗余太多,浪费带宽,协议之间也没有正交。解决办法是,为各种类型的邮件建立模板工厂。写邮件的时候,只需要输入所需的少数几个参数,由生成出来的方法检查参数正确性,及特定邮件的固定参数。协议方面,添加了分页加载功能。

    接着另一位同事,参考了其他项目的情况,抽象出一个更好用的存储层。虽然,存储层做的无非是CRUD,对于邮件系统而言,更可以缩减为CRD。具体实现上,还包含了一层cache,避免对数据库的高频读写。但是,我原来的实现,是按照显示邮件所需的各个参数来做序列化的,因此,其他系统难以复用。当然,设计之初也没有打算提供给内部系统用。。现在,把这一块变成了Json做存储,谁都可以用,底层负责数据存储和消息通知,相当于一个带持久化的消息队列。有了这个队列,写邮件系统就简单多了,无非是检查客户端输入,然后到这个消息队列进行查询即可。这个队列写起来也很简单,只需要删除过期消息,不需要管具体存储,相当于有一块字符串过来就丢一块到数据库,取出来的时候按tag和uid直接取出相应队列即可,十分高效。

    谢谢各位同事的包容,以后要加倍努力~

  • 相关阅读:
    用户体验的时间尺度
    ibatis的xml中的dtd问题
    ASP.NET AJAX调用服务
    C#打包安装与卸载
    学习 WCF (6)学习调用WCF服务的各种方法
    C#.NET ActiveX控件的制作
    如何使用C#开发“类ActiveX组件”
    Asp.Net框架下WebService和Remoting的区别
    今天打开网站,突然发现sql 2005出现错误:数据库 'mybase_db' 的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列。
    VS部署中的ProductCode问题
  • 原文地址:https://www.cnblogs.com/Lifehacker/p/mail_system_in_lsg.html
Copyright © 2011-2022 走看看