zoukankan      html  css  js  c++  java
  • BlangenOA项目总结

    1、使用EF,当返回的是IQueryable<T>类型,延迟加载。

    2、增删改查 分页(页码,页大小,总记录数,是否升序)(两个lambda表达式,一个筛选规则,一个是排序规则(可以选择类型))

    3、创建一个数据会话层,业务层和数据层解耦,
    并且提供一个方法,完成所有数据的保存,实现工作单元模式,一次连接数据库,完成多个操作
    (在业务层写一个删除多个数据的方法,最后SaveChanges()),
    此时需要保证EF上下文是同一个,
    (不用单例模式,EF上下文得不到释放,占用内存越来越大),需要线程内唯一(借助HttpContext)(CallContext)

    4、数据会话层通过抽象工厂得到数据访问类(不直接new,解耦),抽象工厂通过反射创建数据访问类
    (联想插件,可以通过配置文件更改)(更改程序集和命名空间-->实现更改产品族,其它什么都不用改)

    5、业务基类(abstract)
    puiblic IDbSession 不能直接new(直接new的话,每调用一次Bll就new一次,没必要)也要线程内唯一(DbSessionFactory)
    有个抽象属性/方法,业务子类实现,就知道操作哪个Dal,遵循开放封闭原则
    public abstract IBaseDal<T> CurrentDal { get; }

    业务子类
    public override IBaseDal<UserInfo> CurrentDal { get => CurrentDbSession.UserInfoDal }

    6、日志处理(HandleErrorAttribute,AOP)(自己写也行,Log4Net),文件并发,写入队列+开启线程

    7、会话状态,Memcached,(GUID模拟SessionID,返回Cookie给浏览器,重新设值,模拟滑动时间)

    8、Lucene,文章->分词->索引库<-分词--<用户输入。(队列单例模式)
    (管理员新增文章/删除,同时对索引库进行操作,LuceneEnumType:delete/add,先删后加(更新),不报错)

    9、Quartz,统计表
    (每隔一段事件truncate,统计,GUID,关键词,出现次数)和明细表(GUID,关键词,搜索时间)(autocomplete,AJAX轮询)

    10、队列都能用Redis,分布式

    11、Spring.Net(IOC)(实现方式:依赖注入)(屏蔽创建过程,需要A->容器(各种new)->获得A)

    12、过滤器实现AOP(权限过滤(菜单权限,普通权限))(用户访问url的时候)(两种不同的情况!)
    (用户-角色-权限 + 用户-权限)(用户-权限 + 用户-角色-权限)(isPass的时机)

    13、前端DIV+CSS、JS、jQuery、jQueryui、easyui、ligerui、AJAX


    权限表:主键、url(控制器/方法)、请求方法、图标地址、备注等
    线程操作时,如果队列为空,先Sleep(3000),提高性能

    所有请求,大部分是ajax,有些是iframe

    提交用户勾选的角色,通过form的name,就是服务端先Request.Form.AllKeys拿到所有name,然后判断 .StartsWith("actionID_")

    先清除所有用户拥有的角色,再添加


    SOA、IOC、AOP、IOP


    喜欢调试

    为用户分配角色和权限
    为角色分配权限


    做个成熟的项目-->后端-->前端-->全栈

    未完待续~~~

  • 相关阅读:
    hdu 4849
    HDU4850 构造一个长度为n的串,要求任意长度为4的子串不相同
    2014 多校第一场官方题解。
    hdu4862 2014多校B题/ 费用流(最优情况下用不大于K条路径覆盖)(不同的解法)
    dp+分类讨论 Gym 101128E
    优先队列 逆向思维 Gym 101128C
    很好的脑洞题:dfs+暴力 Gym
    树dp...吧 ZOJ 3949
    扫描线(线段树)+贪心 ZOJ 3953
    dp ZOJ 3956
  • 原文地址:https://www.cnblogs.com/vvull/p/10762368.html
Copyright © 2011-2022 走看看