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

喜欢调试

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

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

未完待续~~~

BlangenOA项目总结的更多相关文章

  1. BlangenOA项目展示(附源码)

    1. 登录界面 1.1表单校验 1.2信息有误 1.3正在登录   2.桌面 3.用户管理 3.1添加 3.2删除 3.3编辑 3.4设置用户角色 3.5设置用户权限 4.角色管理 5.权限管理(菜单 ...

  2. Fis3前端工程化之项目实战

    Fis3项目 项目目录结构: E:. │ .gitignore │ fis-conf.js │ index.html │ package.json │ README.md │ ├─material │ ...

  3. 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新

    本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...

  4. 最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目

    最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目 最近一个来自重庆的客户找到走起君,客户的业务是做移动互联网支付,是微信支付收单渠道合作伙伴,数据库里存储的是支付流水和交易流水 ...

  5. Hangfire项目实践分享

    Hangfire项目实践分享 目录 Hangfire项目实践分享 目录 什么是Hangfire Hangfire基础 基于队列的任务处理(Fire-and-forget jobs) 延迟任务执行(De ...

  6. Travis CI用来持续集成你的项目

    这里持续集成基于GitHub搭建的博客为项目 工具: zqz@ubuntu:~$ node --version v4.2.6 zqz@ubuntu:~$ git --version git versi ...

  7. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  8. 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

    上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...

  9. Angular企业级开发(5)-项目框架搭建

    1.AngularJS Seed项目目录结构 AngularJS官方网站提供了一个angular-phonecat项目,另外一个就是Angular-Seed项目.所以大多数团队会基于Angular-S ...

随机推荐

  1. RegExp.$1 简单理解

    RegExp 是javascript中的一个内置对象.为正则表达式.RegExp.$1是RegExp的一个属性,指的是与正则表达式匹配的第一个 子匹配(以括号为标志)字符串, 以此类推,RegExp. ...

  2. php页面的基本语法

    概述: 1. PHP 脚本在服务器上执行,然后将纯 HTML 结果发送回浏览器. 2. PHP 脚本以 <?php 开始,以 ?> 结束,可以放到文档中的任何位置. 3. 当 PHP 解析 ...

  3. 33. Search in Rotated Sorted Array旋转数组二分法查询

    一句话思路:反正只是寻找一个最小区间,断开也能二分.根据m第一次的落点,来分情况讨论. 一刷报错: 结构上有根本性错误:应该是while里面包括if,不然会把代码重复写两遍,不好. //situati ...

  4. 在IE10下,DropDownList的AutoPostBack不能触发

    Default.aspx 文件 <%@ Page Language="C#" AutoEventWireup="true"  CodeFile=" ...

  5. Tortoise SVN 使用笔记

    最近一个项目,团队使用的是SVN来控制版本,所以顺便学习下SVN的知识.在Windows上,肯定是用图形化客户端Tortoise SVN在加速我们的工作. 首先,在一个准备用在工作目录的文件夹下,点击 ...

  6. css设置超出部分文档隐藏(在table标签中不好使解决方案在下)

    css设置: .text-over{overflow: hidden;white-space: nowrap;text-overflow: ellipsis;cursor: pointer} div设 ...

  7. MySQL 开启远程访问权限

    1.登陆mysql数据库    mysql -u root -p 查看user表 mysql> use mysql;Database changedmysql> select host,u ...

  8. Git 初始状操作指引

    You have an empty repository To get started you will need to run these commands in your terminal. Ne ...

  9. 记录pytorch的几个问题

    1.Variable里面的creator没有,网上博客上面说有,奇怪??

  10. Windows10(uwp)开发中的侧滑

    还是在持续的开发一款Windows10的应用中,除了上篇博客讲讲我在Windows10(uwp)开发中遇到的一些坑,其实还有很多不完善的地方,比如(UIElement.Foreground).(Gra ...