• CodeSnippet.info整体技术构架


    CodeSnippet.info整体架构

    服务器端

    Asp.NET MVC5

    考察过MVC6,但是现在MVC6还不成熟,技术上不稳定,很多资料也比较少。
    所以网站暂时使用MVC5.当然网站的大部分业务逻辑是和MVC框架脱离的,以后升级也应该不会出现很大问题。

    数据库选择

    数据库暂时使用MongoDB,使用MongoDB纯粹是站长的个人兴趣爱好。
    (MongoDB 3.2.4 WireTiger数据库引擎)
    MongoDB的优点和缺点十分明显

    优点

    1.使用MongoDB的C#官方驱动程序,天然的ORM。
    2.文档化的数据结构,简化了设计
    3.使用MongoDB的TTL索引,可以实现定时缓存功能,数据经过指定时间后就自动从数据库里面删除。
    TTL Indexes 官方说明

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

    4.自带GridFileSystem,可以在数据库里面存放文件
    GridFS官方说明

    缺点

    当然,最大的缺点就是对于内存消耗实在太大了。MongoDB就是一个消耗内存的怪兽,如果没有取之不竭的内存,千万不要将文件放在数据库中。
    插入17万条数据:每条数据平均大小 0.8K
    数据大小144M,压缩存放后占用磁盘空间42兆
    整体的索引大小2.34M。

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

    文件保存

    方案1 七牛存储

    七牛存储作为一个提供存储的空间,文件的上传下载在编码层面非常方便。
    从成本上看,存储 10G 以下是免费的,当然10G以上的收费也还可以,但是成本的大部分还是在流量上面。

    方案2 MongoDB

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

    方案3 操作系统的FileSystem

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

    全文检索

    ElasticSearch

    整个网站虽然使用的是ASP.NET,但是并不妨碍使用Java阵营的产品。
    现在网站使用的是ElasticSearch引擎,通过NEST这个Net的客户端类库操作ElasticSearch。
    (暂时仅仅对标题进行了索引,没有对于文档内容进行索引)
    使用NEST操作ElasticSearch进行全文检索

    第三方验证

    Github OAuth

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

    PDF输出

    Spire.Pdf

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

    MarkDown编辑器

    Editor.md

    Editor.md

    (该项目很久没有更新了,或多或少存在一些BUG)
    备用MarkDown编辑器:https://github.com/yutuo/mdeditor.yt

  • 相关阅读:
    SQLite的使用
    Messenger类的使用
    Binder的使用(跨进程——AIDL,非跨进程)
    Android Studio中如何创建AIDL
    第二章——Parcelable接口的使用(跨进程,Intent传输)
    InetAddress的作用
    第二章——Serializable的使用(跨进程使用和Intent的传递对象)
    SurfaceView绘图机制
    双缓冲机制简介
    内部类代码
  • 原文地址:https://www.cnblogs.com/TextEditor/p/5416592.html
Copyright © 2020-2023  润新知