关于microsoft:博客系统知多少揭秘那些不为人知的学问三

81次阅读

共计 7026 个字符,预计需要花费 18 分钟才能阅读完成。

上篇 《博客零碎知多少:揭秘那些鲜为人知的学识(二)》 介绍了博客的根本功能设计要点,本篇介绍博客的协定或规范。
因为文章篇幅较长,本文将分为 4 篇推送,目录如下:

  1. “博客”的前世今生
  2. 我的博客故事
  3. 谁是博客的受众?
  4. 博客根本功能设计要点
    4.1 文章(Post)
    4.2 评论(Comment)
    4.3 分类(Category)
    4.4 标签(Tag)
    4.5 归档(Archive)
    4.6 页面(Page)
    4.7 订阅
    4.8 版本控制
    4.9 主题及个性化
    4.10 用户及权限
    4.11 插件
    4.12 图片及附件的解决
    4.13 敏感过滤及评论审查
    4.14 动态化
    4.15 告诉零碎
  5. 博客协定或规范
    5.1 RSS
    5.2 ATOM
    5.3 OPML
    5.4 APML
    5.5 FOAF
    5.6 BlogML
    5.7 Open Search
    5.8 Pingback
    5.9 Trackback
    5.10 MetaWeblog
    5.11 RSD
    5.12 阅读器视图
  6. 设计博客零碎有哪些知识点
    6.1 时区真的全用 UTC?
    6.2 HTML 还是 Markdown
    6.3 MVC 还是 SPA
    6.4 平安
  7. 结束语

5.1 丨 RSS

RSS(Really Simple Syndication)是一种基于 XML 的规范,广泛利用于包含博客在内的内容类网站,由 Dave Winer 于 1999 年创造,少年计算机蠢才 Aaron Swartz 参加定义标准,惋惜后者于 2013 年 1 月他杀,年仅 26 岁。

RSS 也是博客零碎中最有标志性个性之一,其在博客中的利用宽泛度成为了事实上的规范,没有 RSS 的博客零碎就像看到不带摄像头的手机一样乏味。

RSS 文件的扩展名可通常是 .rss 或 .xml,也能够不定义拓展名(如 Moonglade 的 RSS)。内容为近期发表的博客文章的 XML 形容,包含题目、工夫、作者、分类、摘要(也能够是全文)等信息。

(图:Moonglade 的 RSS 源)

RSS 是写给机器看的,可用于网站之间同步内容,例如当年人人网(前校内网)可通过 RSS 导入博客文章为日记。而对于普通用户,则须要 RSS 阅读器利用来订阅博客。通常这样的阅读器里不止订阅一个作者的博客,而是该用户关怀的所有博客。阅读器通常也是跨平台、跨设施的,用户能够在电脑、平板、手机,甚至树莓派上订阅 RSS 源。

(图:2012 年我在初代 iPad 上通过 RSS 订阅本人博客)


(图:最新版 Microsoft 365 Outlook 中 RSS 订阅我的博客)

局部浏览器(如晚期的火狐)也能够自动识别一个博客的 RSS 地址,并在浏览器中订阅。其主动发现原理是查找网页 head 中有没有这么一个货色:

<link rel="alternate" type="application/rss+xml" title="Edi Wang" href="/rss" />

然而 RSS 有个毛病,它并不可能由服务器被动向客户端推送,而须要靠客户端主动去服务器拉取。而过来 10 年中,随着挪动端的衰亡,音讯推送服务补救了 RSS 的有余,各大平台也简直都推出了本人的手机 APP,因而 RSS 曾经被许多网站淘汰。但并不意味着 RSS 没用了,至今仍有大量网站依然提供 RSS 订阅。例如微软 Channel 9 电视台的 RSS: https://channel9.msdn.com/Fee…,国内的博客园的 RSS:http://feed.cnblogs.com/blog/…,有意思的是博客园网站的 logo 其实就是个 RSS 图标。

对于构建博客零碎而言,你通常不会再专门做个手机 App,用户也不会为每一个博客都独自下载一个 App,并且博客零碎与其余博客、网站之间仍然须要同步,不可能为每个合作伙伴都开发一套同步协定,大家仍然都用曾经是公认规范的 RSS,因而 RSS 在 2020 年仍然是博客零碎推送文章的最佳路径。

参考链接:

https://en.wikipedia.org/wiki…

5.2 丨 ATOM

ATOM 和 RSS 的作用简直一样,但 ATOM 的呈现是为了补救 RSS 的一些设计缺点。例如对于文章发表日期,ATOM 采纳 RFC 3339 的工夫戳,而 RSS 采纳的是 RFC 822 规范。ATOM 也能够标识文章的语言、容许 payload 中呈现 RSS 不容许的 XHTML、XML 和 Base64 编码内容等。

许多博客零碎(包含我的 Moonglade)同时提供 RSS 及 ATOM 源。

参考链接:

https://en.wikipedia.org/wiki…(Web_standard)

5.3 丨 OPML

“OPML(概述处理器标记语言)是用于轮廓的 XML 格局(定义为“一棵树,其中每个节点蕴含一组具备字符串值的命名属性”)。它最后由 UserLand 在其 Radio UserLand 产品中作为纲要应用程序的本机文件格式开发,尔后已被用于其余用处,最常见的是在 Web Feed 聚合器之间替换 Web Feed 列表。

OPML 标准将纲要定义为任意元素的层次结构,有序列表。该标准相当凋谢,因而实用于多种类型的列表数据。

Mozilla Thunderbird 和许多其余 RSS 阅读器网站和应用程序都反对以 OPML 格局导入和导出 RSS feed 列表。”

参考链接:

https://en.wikipedia.org/wiki…

通俗易懂的说,OPML 对于博客来说,就是通知阅读器,这个博客一共有哪些订阅源以及他们各自的订阅地址,通常就是每个文章分类是一个订阅源,全副文章又是一个订阅源。

(图:Moonglade 的 OPML)

5.4 丨 APML

APML 即 Attention Profiling Mark-up Language,它比 OPML 更鲜为人知。APML 目前在互联网上曾经十分少见了,比 WP 还惨。作为博客行业的历史陈迹之一,抱着情怀简短介绍一下。

与 OPML 相似,它也是一种 XML 格局的申明文件,用来形容集体感兴趣的事物或话题,并分享给其余读者或博主,以帮忙阅读器或者博客零碎自身针对用户感兴趣的内容提供服务或更有针对性的广告。

参考链接:

https://en.wikipedia.org/wiki…

WordPress 能够通过插件实现 APML,BlogEngine 则自带 APML,我的 Moonglade 不反对 APML。

5.5 丨 FOAF

FOAF 即 Friend of a Friend,也是个写给机器看的文件,形容了一个人类的社交关系,通常在博客中能够用 FOAF 示意博主和其余博客之间的“友情链接”,只不过这个友情链接是写给机器看的。好让机器明确,谁才是你的基友,从而给读者举荐基友博客里的内容。

WordPress 能够通过插件实现 FOAF,BlogEngine 自带 FOAF,我的 Moonglade 不反对 FOAF。FOAF 和 APML 的现状差不多,已快绝迹。

参考链接:

https://en.wikipedia.org/wiki…(ontology)

5.6 丨 BlogML

BlogML 是一套跨博客零碎的数据规范,但凡实现了 BlogML 的博客零碎,就算语言、平台不一样,也都能够相互导入、导出文章等数据。就好比 HTML5 是个规范,Edge、Chrome、Firefox 是浏览器,只有针对 HTML5 写的网页都能跨这些浏览器运行。

BlogML 也诞生于.NET 社区之中,随后倒退成了规范。除了自身就是.NET 的 BlogEngine 等零碎以外,PHP 写的 WordPress 都反对 BlogML。当年反对 BlogML 的还有 Windows Live Spaces,Subtext,DasBlog 等。我的 Moonglade 不反对 BlogML。

以后 BlogML 的规范 schema 是 2.0,更新于 2006 年 11 月 25 日。看起来这个规范也曾经……

参考链接:

https://en.wikipedia.org/wiki…

5.7 丨 Open Search

如果博客实现了 Open Search 标准,那么博客的搜寻性能就可能主动整合到用户的浏览器里,从而便于用户间接在浏览器地址栏应用你博客的搜寻服务作为搜索引擎(就像必应、谷歌那样)。

实现 Open Search 只需两部,首先在网页的 head 里退出指向 opensearch 定义文件的 link。

<link type="application/opensearchdescription+xml" rel="search" title="Edi Wang" href="/opensearch" />

而后输入 opensearch 文件即可。

<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
<ShortName>Edi Wang</ShortName>
<Description>Latest posts from Edi Wang</Description>
<Image height="16" width="16" type="image/vnd.microsoft.icon">https://edi.wang/favicon.ico</Image>
<Url type="text/html" template="https://edi.wang/search/{searchTerms}"/>
</OpenSearchDescription>

文件形容了博客的名称、简介、图标以及搜寻内容的 URL pattern。浏览器一旦辨认这个文件,会主动将你的博客注册到搜索引擎列表里去。而后读者就能够间接在浏览器地址栏里搜寻关键词,并显示博客本人的搜寻后果页面。

(图:在地址栏中搜寻我博客的内容)


(图:搜寻后果页面)

Open Search 的具体标准和规范可参:

https://en.wikipedia.org/wiki…

5.8 丨 Pingback

Pingback 用于博客零碎之间通信,一旦本人的文章被别人援用就会收到 pingback 申请,而本人援用了别人的文章就会向对方博客发送一个 pingback 申请,因而实现一次 Pingback 须要己方和对方的博客独特反对 pingback 协定。因为是标准协议,所以 pingback 并不要求单方的博客应用同一款博客产品,例如我用.NET Core 写的 Moonglade 能够完满和 PHP 写的 WordPress 相互 ping。Pingback 也并不限度网站类型肯定得是博客,任何 CMS 或内容网站想要反对 Pingback 都没问题。

Pingback 的技术原理也不简单。

发送 Pingback 申请:

失去本人文章的 URL A、对面被援用文章的 URL B,申请 B,看看它有没有 pingback 终端,如果有,构建一个 HTTP Request,内容是一段 XML:

<methodCall>
       <methodName>pingback.ping</methodName>
       <param>
              <param><value><string>A</string></value></param>
              <param><value><string>B</string></value></param>
       </param>
</methodCall>

这样 B 所在的网站就晓得 A 文章援用了 B 文章,解决 pingback 后,会给 A 所在的网站一个胜利与否的响应。

(图:Moonglade 的 pingback 终端)

承受 Pingback 申请:

本人的文章 URL A 被别人文章 B 援用,并收到了一个 pingback XML。首先本人要验证他人的 pingback 申请长得是否奇怪,以保障安全性,例如有没有失常的 methodName、有没有非法的单方 URL、URL 是否能失常拜访、是否有奇怪的 URL(例如 localhost 或有潜在攻击行为的非凡结构)。保障 pingback 申请没问题后,申请 B 的页面,抓取 B 网页的 title 内容、B 的 IP 地址,记录到本人的数据库中,并和 A 文章关联。

收到的 Pingback 通常以零碎身份主动在文章下加评论,但这个设计不是标准之一,你能够自由发挥,例如 Moonglade 把 pingback 集中起来在后盾给博客管理员查看。


(图:Moonglade 后盾治理中查看哪些网站援用了本人博客的文章)

参考链接:

https://en.wikipedia.org/wiki…

5.9 丨 Trackback

Trackback 容许一个网站将更新告诉给另一个网站。这是网站作者在有人链接到其文档之一时申请告诉的四种类型的链接办法之一。这使作者能够跟踪谁链接到他们的文章。

参考链接:

https://en.wikipedia.org/wiki…

只管性能和 Pingback 相似,但 Trackback 通常须要手工发送,并须要给对方提供一篇文章的摘要。而 Pingback 的过程是又单方博客零碎共同完成的全自动操作。

5.10 丨 MetaWeblog

MetaWeblog 是一套基于 XML-RPC 的 Web Service,这套 API 定义了几个标准接口,用于文章、分类、标签等博客惯例内容的 CRUD。只有实现了这些接口的博客零碎,就能够让博主不必通过浏览器登录博客后盾写文章,而应用计算机上安装的客户端去写博客。支流的客户端包含 Windows Live Writer、Microsoft Word。在客户端里能够残缺的编辑文章、插入图片、设置分类,甚至能够将博客的主题同步到客户端中。

可能它看起来也像是过期的博客协定之一,但直到 2020 年的明天,最新版的 Microsoft 365 套件仍然残缺反对实现了 MetaWeblog API 的博客零碎。


(图:Microsoft Word 的博客反对)

相似 MetaWeblog 的博客 API 还有 Blogger API, Atom Publishing Protocol, Micropub。

参考链接:

https://en.wikipedia.org/wiki…

我的博客在 2012 年已经 996 007 残缺实现了 MetaWeblog + RSD,但现在 30 岁了,在.NET Core 里临时不打算实现这个了,毕竟有多少人还在用 Live Writer 和 Word 写博客(哭。

5.11 丨 RSD

Really Simple Discovery(RSD)是 XML 格局和一种公布约定,用于使博客或其余 Web 软件公开的服务可由客户端软件发现。这是一种将设置编辑 / 博客软件所需的信息缩小到三个家喻户晓的元素的办法:用户名,明码和主页 URL。任何其余要害设置都应该在与网站相干的 RSD 文件中定义,或者能够应用提供的信息来发现。

为了应用 RSD,网站的所有者在首页的 head 里搁置了一个链接标记,用于批示 RSD 文件的地位。MediaWiki 应用的一个示例是:

<link rel="EditURI" type="application/rsd+xml" href="https://en.wikipedia.org/w/api.php?action=rsd" />

而后用 RSD 文件去示意各种 API 的接口。

<?xml version="1.0"?>
<rsd version="1.0" xmlns="http://archipelago.phrasewise.com/rsd">
    <service>
        <apis>
            <api name="MediaWiki" preferred="true" apiLink="http://en.wikipedia.org/w/api.php" blogID="">
                <settings>
                    <docs xml:space="preserve">http://mediawiki.org/wiki/API</docs>
                    <setting name="OAuth" xml:space="preserve">false</setting>
                </settings>
            </api>
        </apis>
        <engineName xml:space="preserve">MediaWiki</engineName>
        <engineLink xml:space="preserve">http://www.mediawiki.org/</engineLink>
    </service>
</rsd>

参考链接:

https://en.wikipedia.org/wiki…

RSD 也简直和下面的 MetaWeblog 接口一起应用。这样 Windows Live Writer、Microsoft Word 等工具才能够主动发现博客的 MetaWeblog 服务,而不须要手工去输 URL。

5.12 阅读器视图

大部分浏览器和客户端都有阅读器视图,能够让读者在与博客网站页面格调齐全不一样的视图中阅读文章。例如,我博客某篇文章的失常页面长这样:

(图:Moonglade 非阅读器视图文章页)

浏览器辨认到我的博客反对阅读器视图,就会亮起沉迷式浏览按钮。

(图:Microsoft Edge 浏览器沉迷式浏览按钮)

进入沉迷式浏览界面后,浏览器会主动提取文章的内容,辨认文章的题目、章节、图片,去掉导航栏、侧边栏等与文章无关的元素,并可让用户管制文本大小、背景色,甚至朗诵文章内容。


(图:Moonglade 的文章进入沉迷式浏览界面)

不仅我的博客有阅读器视图,设计良好的博客、新闻内容站都有,例如 Azure 的:


(图:Azure 官网博客阅读器视图)

另外,反对阅读器视图的网站,SEO 肯定不会差。因而设计博客零碎时,请思考反对阅读器视图。

今天将次要介绍 【设计博客零碎有哪些知识点】
请持续锁定咱们!


扫码关注微软中国 MSDN,获取更多微软一手技术信息和官网学习材料!

正文完
 0