博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeSnippet.info整体技术构架
阅读量:7073 次
发布时间:2019-06-28

本文共 1377 字,大约阅读时间需要 4 分钟。

CodeSnippet.info整体架构

Thumbnail?filename=00000001_20160419145404_x5.PNG

服务器端

Asp.NET MVC5

考察过MVC6,但是现在MVC6还不成熟,技术上不稳定,很多资料也比较少。

所以网站暂时使用MVC5.当然网站的大部分业务逻辑是和MVC框架脱离的,以后升级也应该不会出现很大问题。

数据库选择

数据库暂时使用MongoDB,使用MongoDB纯粹是站长的个人兴趣爱好。

(MongoDB 3.2.4 WireTiger数据库引擎)
MongoDB的优点和缺点十分明显

优点

1.使用MongoDB的C#官方驱动程序,天然的ORM。

2.文档化的数据结构,简化了设计
3.使用MongoDB的TTL索引,可以实现定时缓存功能,数据经过指定时间后就自动从数据库里面删除。

下面对于CreateDateTime字段设置了一个TTL索引,900秒后自动过期

Thumbnail?filename=00000001_20160421161834_Cache1.PNG

4.自带GridFileSystem,可以在数据库里面存放文件

缺点

当然,最大的缺点就是对于内存消耗实在太大了。MongoDB就是一个消耗内存的怪兽,如果没有取之不竭的内存,千万不要将文件放在数据库中。

插入17万条数据:每条数据平均大小 0.8K
数据大小144M,压缩存放后占用磁盘空间42兆
整体的索引大小2.34M。

Thumbnail?filename=00000001_20160421155844_Mongo2.png

占用内存是多少呢?初始状态:214M,然后随着时间的推移,一直会飙升到600M,很有可能造成服务器内存不足,Mongod线程意外终止。

文件保存

方案1 七牛存储

七牛存储作为一个提供存储的空间,文件的上传下载在编码层面非常方便。

从成本上看,存储 10G 以下是免费的,当然10G以上的收费也还可以,但是成本的大部分还是在流量上面。

方案2 MongoDB

MongoDB自带的GridFileSystem,使用非常方便,数据都保存在本地,安全性是最好的。但是对于内存的消耗实在太大了。

方案3 操作系统的FileSystem

本网站暂时使用这种方案,在网站规模不大的时候,性价比是最高的。

Thumbnail?filename=00000001_20160419145458_x6.PNG

全文检索

ElasticSearch

整个网站虽然使用的是ASP.NET,但是并不妨碍使用Java阵营的产品。

现在网站使用的是ElasticSearch引擎,通过NEST这个Net的客户端类库操作ElasticSearch。
(暂时仅仅对标题进行了索引,没有对于文档内容进行索引)

第三方验证

Github OAuth

由于IT技术人员大都有Github账号,同时为了防止本网站被攻击造成账号泄露,本网站现在使用Github的第三方验证。

PDF输出

Spire.Pdf

使用的是免费版本,每个PDF最大页数为10页,如果需要可以考虑购买许可证,599美元。
生成的PDF效果一般,支持HTML中外部图片的抓取,支持简单的CSS和Javascript.
(注意:Microsoft.mshtml.dll 这个动态链接库必须放到网站的Bin目录中。这个插件的本质就是通过内置的浏览器抓取截图
如果有复杂的Javascript生成界面的话,可能抓取的瞬间很多界面都没有完成)

Thumbnail?filename=00000001_20160421163453_pdf1.PNG

MarkDown编辑器

Editor.md

(该项目很久没有更新了,或多或少存在一些BUG)

备用MarkDown编辑器:

转载于:https://www.cnblogs.com/TextEditor/p/5416592.html

你可能感兴趣的文章
启动线程的方式?
查看>>
LinkedList源码分析
查看>>
OCS inventory NG -Glpi 安装日志
查看>>
Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
查看>>
如何通过配置来实现IP+MAC+端口绑定功能
查看>>
FileMaker批量生成Word文档,带进度条
查看>>
Install OpenCV 2.4.9 in Ubuntu 14.04, 13.10
查看>>
高性能的MySQL(6)查询执行机制(上)
查看>>
模板方法模式
查看>>
一步一步实现一个简单的表单校验框架一
查看>>
查看手机号是否注册百度开发者
查看>>
前端工作流(draft)
查看>>
spring cloud eureka 高可用搭建
查看>>
OSChina 周二乱弹 —— 做羞羞事情的正确方法
查看>>
OSChina 周四乱弹 —— 会编程的女神长这样
查看>>
我的友情链接
查看>>
openstack概述
查看>>
How To Detect Which Element Was Clicked, Using jQuery
查看>>
javascript & jQuery
查看>>
DW快速去除tppabs冗余代码
查看>>