Independent technical referenceSystem / content / protocol / route

Field notes / .NET web publishing

.NET Blogging Engines — an independent reference

Entry abstractA map of the architectural choices that shaped self-hosted weblogs on .NET.
Editorial cutaway of a server holding content files and a database connected to published pages

A blog engine looks simple from the outside: entries go in, pages and feeds come out. Inside, it is a compact publishing system where storage, rendering, identity, protocols and URLs have to keep agreeing for years. This reference explains those parts with particular attention to the .NET ecosystem and the file-based approach used by several early engines.

Independent-site notice

This site is an independent reference on .NET blogging engines. It is not affiliated with, endorsed by, or connected to the dasBlog project, DasBlog Core, or its maintainers. The dasBlog project lives at github.com/poppastring/dasblog-core.

A field guide, not a product manual

The subject is bigger than any one codebase. Early ASP.NET weblog engines explored how a small site could publish from XML files, expose RSS, accept posts from desktop software, render a theme and keep old links alive. Later systems brought database-backed content, MVC and Razor views, headless APIs, static generation and federated publishing into the same conversation.

Those changes did not erase the earlier questions. They sharpened them. Should a post be a file that can be copied or a row governed by transactions? Is the canonical record the editor database, the rendered HTML, or an export? Which part of a URL is an implementation detail, and which part is a public promise? The storage comparison and permalink guide treat these as operational decisions rather than fashions.

Read the system in layers

Content and rendering

Start with files versus databases, then move to themes and templates. The storage model determines how backups, edits and migrations behave; the rendering model determines how that content becomes a page.

Distribution and writing

RSS and Atom distribute new entries to readers, while publishing APIs let external editors create them. Both depend on clear identifiers and stable public links.

Operations and continuity

Self-hosting joins application, proxy, TLS, storage and backups. Migration is the test of whether those layers were understood.

Why the history still matters

Blog engines are unusually good architectural case studies because their useful life can exceed the life of their original framework. A post may outlast a server, theme, domain owner, database driver or deployment model. The history of .NET blogging engines follows that continuity from BlogX and classic dasBlog through later .NET publishing projects and the current DasBlog Core codebase.

dasBlog is covered here by name as one project in that history. Its current repository describes a blogging engine built with ASP.NET Core that preserves the essence of the original while using modern cross-platform .NET. Readers looking for the actual project should use the current DasBlog Core repository. This site does not provide project downloads, setup instructions, support or release guidance.

Use the reference as a review tool

Each article includes questions that can be applied to a real publication without prescribing a particular engine. Trace one entry from its canonical source through rendering, its HTML URL, feed item and any federated representation. Then trace the reverse path from a reader's old link back to the current content. Gaps between those views reveal where an upgrade or migration needs explicit mapping.

A useful review ends with a written decision: what is authoritative, which addresses are permanent, which interfaces are supported and how the publication will be restored. That small record turns general architecture into an operating agreement.

Choose a route

If you are preserving an existing site, begin with URLs, exports and backups. If you are studying protocols, begin with feeds, MetaWeblog, WebFinger and ActivityPub. If you are comparing architectures, begin with storage, templates and static output. Every route arrives at the same principle: publishing systems change, but public identifiers should remain understandable and durable.