Foundations for Professionals .NET Professionals im Profil guide to C# guidgen.de

Blog

Nutze den Augenblick
und teile der Welt mit, was Du zu sagen hast.

Was ist die Aufgabe eines CMS?

Freitag, 10. Oktober 2008, 16:04 Uhr
Permalink | Kommentare (5) | Kommentare als RSSRSS

Vor einigen Tagen habe ich einen Blogeintrag über Umbraco, ein CMS auf Basis von ASP.NET, geschrieben. Seither bin ich von einigen Personen gefragt worden, warum ich ausgerechnet Umbraco als verhältnismäßig unbekanntes CMS präferiere, und was aus meiner Sicht gegen den Einsatz eines deutlich bekannteren Systems wie beispielsweise DotNetNuke spricht.

Das Interessante an dieser Frage ist, dass ich sie nicht aus dem Stegreif beantworten konnte, sondern lediglich auf mein Gefühl verweisen konnte, dass Umbraco das bessere System sei. Nachdem mich diese Frage nun in den vergangenen Tagen immer wieder beschäftigt hat, bin ich inzwischen zu einer Antwort gekommen, die ich rational begründen kann.

Zunächst muss jedoch eine andere Frage beantwortet werden, nämlich, was die grundlegende Aufgabe eines CMS ist. Vertraut man auf Wikipedia, so lautet die Antwort:

Ein Content-Management-System (kurz CMS [...]) ist ein Anwendungsprogramm, das die gemeinschaftliche Erstellung und Bearbeitung des Inhalts von Text- und Multimediadokumenten ermöglicht und organisiert, [...] Der darzustellende Informationsgehalt wird in diesem Zusammenhang als Content (Inhalt) bezeichnet.

Relevant ist dabei meiner Meinung nach insbesondere weniger das, was in dieser Definition genannt wird, als vielmehr das, was in dieser Definition nicht genannt wird. Folgt man nämlich strikt dieser Definition eines CMS, so beschäftigt sich ein CMS ausschließlich mit dem reinen Inhalt, aber nicht mit der grafischen Repräsentation oder den zugehörigen Workflows - genau dies besagt schließlich auch der Begriff CMS.

Die gängigen Content Management Systeme am Markt erfüllen diese Definition jedoch nicht. Zwar ist es mit allen Systemen möglich, Content zu verwalten, aber die meisten Systeme liefern darüber hinaus noch eine Unmenge an Modulen mit, die für die grafische Repräsentation oder für Workflows zuständig sind. Sobald man versucht, sich außerhalb der Grenzen dieser Module zu bewegen, wird der Weg sofort steinig und häufig auch unnötig schwer.

An dieser Stelle weicht Umbraco ganz eklatant von dem für Content Management Systeme üblichen Weg ab: Die grafische Darstellung obliegt vollständig dem Designer der Lösung, insbesondere verändert Umbraco die vorgegebene Darstellung in keiner Weise. Das System beschränkt sich darauf, seine Kernaufgabe zu erfüllen, nämlich das Verwalten des Contents - aber nicht mehr.

Diese strikte Trennung von Content und Darstellung, die sich bei Umbraco direkt im System findet, hat zur Folge, dass es zwar zunächst ein wenig aufwändiger ist, eine Lösung zu erstellen, dass der eigenen Kreativität aber zugleich auch keinerlei Schranken auferlegt werden. Und genau dieser Fakt ist es, was mir an Umbraco wesentlich besser gefällt als an den meisten anderen Content Management Systemen: Die Konzentration auf das Wesentliche.

Ein CMS auf Basis von ASP.NET

Samstag, 4. Oktober 2008, 12:43 Uhr
Permalink | Kommentare (1) | Kommentare als RSSRSS

Schon seit geraumer Zeit bin ich auf der Suche nach einem Content Management System (CMS), das auf ASP.NET basiert, kostenfrei und idealerweise Opensource wie auch leistungsfähig und skalierbar ist. Zugleich darf die Einarbeitung in ein entsprechendes System aber auch nicht zu aufwändig und kompliziert sein, schließlich geht es mir ausschließlich um den privaten und KMU-Einsatz.

Aus verschiedenen Gründen scheiden die Platzhirsche der Branche leider aus, allen voran AxCMS.net der Firma Axinom, das zwar so wohl kostenfrei wie auch ausgesprochen leistungsfähig ist, für das genannte Einsatzgebiet aber leider zu umfangreich ist, wodurch der notwendige Einarbeitungs- und Wartungsaufwand in nicht mehr zu vertretende Höhen schießt.

Nach einiger Suche bin ich nun, wie es scheint, auf ein System gestoßen, das alle meine Anforderungen erfüllt und zudem äußerst flexibel und zudem erweiterbar ist: Die Rede ist von Umbraco. Dieses System basiert auf ASP.NET 2.0, unterstützt verschiedene Datenbanken, unter anderem auch SQL Server 2005 und 2008, und legt dem Webdesigner keinerlei Einschränkungen auf, wenn es um das Design der Webseite geht.

Auch wenn der erste Anfang ein wenig mühsam ist, so ist das Konzept von Umbraco doch letztlich sehr durchdacht und übersichtlich, wenn man sich erst einmal an die Terminologie gewöhnt hat:

  • Das grundlegende Element in Umbraco sind sogenannte Document Types, die analog zu einer Tabellenbeschreibung in einer Datenbank vorgeben, aus welchen Element ein einzelnes Objekt bestehen kann - im einfachsten Fall wird durch einen Document Type eine ganze Seite beschrieben, die beispielsweise aus einer Überschrift, einem Bild und einer Textbox für Richtext besteht. Ein Document Type muss aber nicht zwingendermaßen eine ganze Seite beschreiben, auch der Teil einer Seite ist abbildbar.
  • Passend zu jedem Document Type gibt es ein sogenanntes Template, das als beliebiger Code in HTML oder XHTML definiert sein kann, und welches die optische Darstellung des Document Types definiert. Auch hier gilt wiederum, dass ein Template im einfachsten Fall die ganze Seite beschreibt, in komplexeren Szenarien durchaus aber nur einen Ausschnitt der Seite beschreibt. Da sich so wohl Document Types wie auch Templates ineinander verschachteln lassen, ist es problemlos möglich, hierarchische Strukturen zu erstellen, die dem Konzept der Masterseiten in ASP.NET ähneln.
  • Gefüllt wird die Kombination aus Document Type und Template nun mit Leben, indem der Benutzer Content zur Verfügung stellt, der sich von seiner Struktur an den Document Type und von seiner Optik an dem passenden Template orientiert.
  • Ergänzt wird das ganze durch die Möglichkeit, dynamischen Content in ein Template einbinden zu können - dies geschieht über sogenannte Makros, wobei ein Makro im Grunde genommen nichts anderes als ein Wrapper um ein Stück Code ist. Dieser Code wiederum kann in verschiedenen Sprachen angebunden werden, beispielsweise in XSLT, C# oder Python.
  • Ein XSLT-Makro bietet sich immer dann an, wenn Daten verarbeitet werden sollen, die bereits in Umbraco vorliegen - intern bildet Umbraco sämtlichen Content und sämtliche Strukturen nämlich als XML ab, so dass sich der Einsatz von XSLT anbietet. Sollen hingegen externe Inhalte wie beispielsweise Datenbank- oder Webserviceabfragen eingebunden werden, so bietet sich der Einsatz von C# an. In Umbraco ist es sogar möglich, ASP.NET-Webcontrols direkt als Makro einzubinden, so dass keine spezielle Vererbungshierarchie notwendig ist.

Aktuell ist derzeit noch die Umbraco-Version 3, Version 4 ist aber bereits für Ende des Jahres angekündigt. Diese Version wird dann die Fähigkeiten von ASP.NET noch deutlich besser ausnutzen, da zahlreiche Konzepte nicht mehr proprietär umgesetzt werden, sondern so, wie man es in ASP.NET auch machen würde - begonnen bei Masterseiten für Templates über die Verwendung von ASP.NET-Membership- und -Role-Providern bis hin zu einer Überarbeitung aller Umbraco-eigenen Schlüsselworte auf eine Syntax, die der von ASP.NET entspricht.

Alles in allem bietet das System zwar nicht so viel out of the box wie manch kommerzielles oder größeres System, dafür bietet es dem Entwickler aber alle Freiheiten, seine Wünsche und Ideen umzusetzen, ohne ihm irgendwelche Einschränkungen aufzuerlegen.

Als einziger Wermutstropfen bleibt derzeit eigentlich nur, dass sich ein Einstieg in Version 3 derzeit nicht mehr wirklich lohnt, da Version 4 dermaßen viele Neuerungen mitbringt, dass man dann lieber direkt auf dieser Version aufsetzen sollte. Wem es aber nicht auf ein paar Monate ankommt, dem sei dieses System uneingeschränkt empfohlen.