• 项目架构


     

    核心架构和之前的开源项目SSO.Passport.IdentityServer保持一致

     

    实线代表实际引用,虚线代表通过反射的方式引用;

    应用层的真实引用只需要引用Common和Model以及IBLL即可,从而达到项目间的解耦,但由于生成和发布的原因,导致需要反射引用的类库不能生成到应用层目录下,所以应用层也全部引用了运行时需要的所有项目;

    反射引用需要在应用层的web.config中配置DalNameSpace和DalPath以及BllPath,若未配置,则取程序相应的预设值;

    如何将应用层的数据请求传到数据层的?

    应用程序启动时将通过反射的方式加载业务逻辑层BLL的程序集,并创建相应的接口实例存到autofac容器中,当应用层发起数据请求时,将通过IBLL的接口实例进行处理,依靠BLL调用数据会话层DALFactory来反射创建数据访问层DAL对应的接口实例IDAL,IDAL依靠DAL进行真实的数据库操作,最后将数据返回到应用层。

    核心功能点技术实现

    文章防XSS:通过Masuit.Tools封装的防XSS方法实现富文本html的过滤

    post.Content.HtmlSantinizerStandard()

    文章图片上传:将上传到服务器的图片转发到新浪图床,如果上传失败,降级上传到sm.ms等其他图床。毕竟是免费的,可能不是长久之计,有条件的童鞋可以去申请专用的OSS服务器。

    服务器监控:通过Masuit.Tools封装的SystemInfo类实现服务器硬件资源的实时监控,结合SignalR主动推送,图表使用highchart动态更新。

     

    访客统计:在Session开始时接收客户端的IP和UA等信息,通过hangfire来调度,获取到IP地址的详细信息后写入到数据库,hangfire每小时统计历史数据,包括每日访客走势,独立IP,新增访客,以及每个访客浏览过哪些页面。

     

    分布式任务调度:通过hangfire实现,结合hangfire控制面板,实现后台任务的监控。

     

    基于Redis的Session实现:程序产生一个SessionID后写到客户端的Cookie,这个SessionID对应了Redis的一个List,而List里面的每个键则是用户每个Session里的每个元素,滑动过期20min,Masuit.Tools封装实现。

     

    在线人数统计:通过统计Redis里面SessionID的总数实现。在Session结束时会将Redis里面每个访客的记录同步到数据库保存。

     

    无级菜单的加载,数据表依赖ParentId来确定上下级关系,前端通过递归创建html节点实现递归加载,评论和留言的递归加载也是如此。

     

    恶意请求拦截:如果同一个客户端每分钟内请求数达到阈值,则将该客户端拦截掉,或者同一客户端请求连续次数上限的错误页,也视为机器人,拦截掉。

     

    服务器文件资源管理器:结合angular-filemanager实现服务器的资源管理器。

     

    https:如果你没有申请https证书,发布时将web.release.config中的这一节去掉

     

     

    项目部署

    配置文件:

    主要需要配置的是数据库连接字符串,BaiduAK;

     

    同时,BaiduAK参与了数据库的加密,如果你没有BaiduAK,自行到百度地图开放平台申请,免费的。

     

    如果Redis不在本机,需要在配置文件中的ConnectionStrings节下配置,name固定为RedisHosts,值的格式:127.0.0.1:6379,allowadmin=true,若未正确配置,将按默认值“127.0.0.1:6379,allowadmin=true,abortConnect=false”。

     

    IIS:部署时必须将应用程序池的标识设置为LocalSystem,否则无法监控服务器硬件

     

     

    后台管理:

    初始用户名:masuit

    初始密码:123abc@#$

  • 相关阅读:
    bzoj 1853: [Scoi2010]幸运数字 容斥
    bzoj 3545&&3551: [ONTAK2010]Peaks &&加强版 平衡树&&并查集合并树&&主席树
    bzoj 2331: [SCOI2011]地板 插头DP
    bzoj 3669: [Noi2014]魔法森林 动态树
    bzoj 2734: [HNOI2012]集合选数 状压DP
    bzoj 3751: [NOIP2014]解方程 同余系枚举
    bzoj 2594: [Wc2006]水管局长数据加强版 动态树
    bzoj 2049: [Sdoi2008]Cave 洞穴勘测 动态树
    bzoj 2209: [Jsoi2011]括号序列 splay
    bzoj 1223: [HNOI2002]Kathy函数 数位DP 高精度
  • 原文地址:https://www.cnblogs.com/Jeely/p/11264689.html
Copyright © 2020-2023  润新知