2
头图

In our age, blogs are not uncommon, and they can even be seen everywhere. From the earliest Sohu and Sina blogs, to the Qzone where everyone recorded their youth, to the current Vlog and Plog, it seems that it is not difficult to have a blog of your own. However, it is not that simple to build an excellent blog system from scratch. Some tech-savvy friends may say that it seems to be just a simple CRUD of the article, and it is not that complicated. However, is this really the case? There may be more mysteries waiting for us to dig behind it. By the way, I have built my own blog for 11 years, and I have seen many programmers write their own blog system, but there are very few blogs with complete functions designed according to specifications and standards. In this article, I will share my experience accumulated in the design of blog system, introduce some little-known blog technology, and help those who want to build a blog to further understand how to design an excellent blog system.

Due to the length of the article, this article will be divided into 4 articles, the directory is as follows:

  1. Past and Present of "Blog"
  2. My Blog Story
  3. Who is the audience of the blog?
  4. Essentials of the design of the basic functions of the blog
    4.1 Article (Post)
    4.2 Comment
    4.3 Category
    4.4 Tag
    4.5 Archive
    4.6 Page
    4.7 Subscription
    4.8 Version control
    4.9 Theme and personalization
    4.10 Users and permissions
    4.11 Plugin
    4.12 Processing of pictures and attachments
    4.13 dirty word filtering and review review
    4.14 Static
    4.15 Notification system
  5. Blog protocol or standard
    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 Reader view
  6. What are the knowledge points of designing a blog system
    6.1 Really use UTC for all time zones?
    6.2 HTML or Markdown
    6.3 MVC or SPA
    6.4 Security
  7. Concluding remarks

The past and present of "blog"

The blog was not called Blog at the beginning, but called Weblog. What may surprise many people is that it was not born in the Web 2.0 era, but had already come out as early as 1997. From the earliest single user (single author), the blog has gradually developed into a multi-user (a team), that is, a blog platform. In the Web 2.0 era, blogs have been given social attributes, allowing readers to comment and subscribe (RSS/ATOM), and blog authors can hold each other (FOAF) and quote articles (Pingback), so that blogs gradually become popular.

Blog systems have their own merits, PHP has WordPress, and .NET has BlogEngine. In the end, WordPress has almost become the de facto standard of the blog system. It also has some CMS functions. The blog of Microsoft's official .NET team is also built using WordPress.


Figure | Network

In addition to a browser, users who read blogs also use RSS/Atom readers. In the early days of the iPad, reader apps were all the rage. Once a subscribed blog has a new article, the reader will automatically receive it, and readers do not need to check whether there is a new article published every day. Microsoft 365 Outlook still retains the function of RSS reader.

Blogging is still one of the best ways to express yourself, spread information, and interact with the community. Even if microblogging appeared, it did not make blogs unpopular. Therefore, blogs are to the Internet, just like e-mails, "ginger is still hot". As a cultural carrier, blogs are always new and radiant.

My blog story

My blog project can be traced back to 2003, when I was in junior high school, I taught myself ASP and Access in my spare time, and built my first personal website. The theme was hacker technology (I was young and ignorant, thought it was very cool) . In addition to original and reprinted technical articles, it also provides services such as downloading common software tools. Sometimes it pretends that college students help others to complete the ASP graduation design (after all, no one would believe that I am a junior high school student) in exchange for Q coins, QQ show, etc. (too There is a sense of age...). This system has been maintained until 2007 when I was a sophomore in high school. It looks like this:
image.png

(Picture: Personal website from 2003-2007)

After the college entrance examination, I finally have a lot of time to learn the technology I want to know, and I don't have to worry about being complained by my parents for not studying well. At that time, I taught ASP.NET (VB) by myself and built my second-generation personal website. The theme was no longer hacking technology, but regular computer technology sharing, focusing on original technical articles (logs), and also developed a photo album. SNS functions such as, podcasts, etc. were launched in 2009. It has been like this and has been maintained until 2011.
image.png

(Picture: Personal website from 2009 to 2011)

After graduating in 2012, I became an engineer (program ape) and did not have the energy to maintain software downloads, photo albums, and podcasts, so I decided to only write technical articles, drastically revised my website, and the prototype of the blog came out. In order to build a blog, I refer to the BlogEngine project which is also .NET. In fact, a well-known .NET blog platform in China used the BlogEngine project for the first time, and it even had a Chinese version called Boyi back then. However, instead of directly modifying other people's projects, I chose to implement it in a different way after I understood the code. Much of the content to be introduced after this article also comes from the study during this period.
image.png

Seven years after graduating, I found that various technologies have developed rapidly. The competition between .NET technology and other mainstream technologies is very fierce, and I mainly use .NET technology in foreign companies for a long time. At this time I made up my mind to rewrite my blog system with .NET Core in my spare time, named it Moonglade, and open it to GitHub ( https://github.com/EdiWang/Moonglade). The current blog address is https ://edi.wang. The content is oriented to foreign communities and deployed on Microsoft Azure's overseas servers (domestic access may be slower).


Excluding the ASP of the junior high school era, not to mention, from 2009 to 2020 in the 11 years, my blog code spans more than ten years of .NET development, from ASP.NET WebForm 2.0 VB.NET + Access to the current ASP.NET MVC Core, C# 8 and Azure SQL Database also integrate technologies such as Azure App Service, Azure DNS, Azure DevOps, Azure Active Directory, Azure Blob, Azure AD, Azure CDN and Application Insights.
image.png

(Picture: Azure service used by Moonglade blog system)

Who is the audience of the blog?

Before talking about designing a blog, we must first make it clear, where do your readers come from? After you figure this out, you can think of how users will use your product. This is exactly the blog design method and key points that this article will introduce.

11 years of experience in developing and operating blogs and statistics tell me that for a regular technical blog, comes from search engines, and in most cases, readers only view this article they need, and readers are fixed. Or the proportion of subscribers to total traffic is quite small . This is because most of the content shared by technical blogs is to solve a specific technical problem. The first reaction of a technician encountering a technical problem is to go to the search engine to find out if anyone has encountered it before and has solved it. It is possible to copy and paste the code in the article to solve the problem in the project, and then forget the blogger’s exist. Only if you really feel that the blogger’s articles have a certain level, will you start to browse other content in the blog.

It is not difficult to find that our user portal is almost a search engine. is an excellent blog system. It is not just a good text effort. It requires a lot of consideration for SEO and other blog protocols for the interaction between machines and systems. SEO is also always considered. The key point throughout this article is .
This article does not teach you the design and technical implementation of the code, but teaches you the design ideas and key points of the blog system. As for the technology, the famous WordPress, the predecessors' BlogEngine.NET, and my Moonglade are all open source and available for your research at any time.

tomorrow I will introduce [the basic function design points of the blog] so stay tuned!


Scan the QR code to follow Microsoft MSDN to get more first-hand technical information and official learning materials from Microsoft!
image.png


微软技术栈
423 声望996 粉丝

微软技术生态官方平台。予力众生,成就不凡!微软致力于用技术改变世界,助力企业实现数字化转型。