Original von altertoby
Dann will ich mal :)
Also grundsätzlich gibt es 2 mir bekannte Wege mit c# eine Webseite zu erstellen. Der erste ist der bereits genannte eigene Webserver (da empfehle ich dir mal den Blog von Undead zu durchstöbern, der hat nen eigenes Ding in Betrieb und es soll auch garnicht so schwer/viel sein). Ich kann dir aber mehr über die Erstellung mit Asp.net erzählen:
Webserver will ich wie gesagt vermeiden, da ich es als unnötiger Overhead empfinde was die Entwicklungszeit betrifft.
Also das grundlegende Prinzip ist, dass du verschiedene Controls (Button, Textbox,...oder sogar eigene) auf die Seite packst und dann auf entsprechende Events (Click, TextChange,...) reagierst. (Das dabei ein Postback ausgeführt wird ist logisch, also wenn der User den Button klickt werden die Daten dabei zum Server geschickt). Dabei kannst du in dem Event genauso wie in jeder WindowsForms-Anwendung mit den Controls über "Control"."Eigenschaft" "sprechen". Also den ganzen Krams wie Postvariablen usw. übernimmt .Net für dich. (natürlich kannst du die auch noch gezielt selber ansprechen).
Zu dem "Template-System". Wie bereits erwähnt gibt es die Möglichkeit eigene Controls zu schreiben (z.B. Loginmaske samt Funktionalität auszulagern) und diese dann einzubinden. Dies nutzten wir z.B. zur Darstellung von Karten-Koordianten (sind anklickbar und noch nen bissel was anderes) oder allgemein für kleinere, öftere wiederkehrende, in sich geschlossene Dinge. Für größere gibt es das Prinzip der MasterPages. Da definierst du den Rahmen (das ganze Html-Asp.net-Zeugs) und einen/mehrere Platzhalter, die du dann auf deinen Seiten füllen kannst (oder eben nicht, dann wird ein von dir definierter Standardinhalt angezeigt).
Ich hab mal wegen MasterPages unter folgender Adresse geschaut:
http://msdn.microsoft.com/de-de/library/wtxbf3hh(VS.80).aspx
Wie mir scheint gibt es also eine/mehrere MasterPage und die verschiedenen Inhaltsseiten. Aber in dem Beispiel definiert die Inhaltsseite alle Platzhalter der MasterPage. Muss das immer so sein? Oder kann ich die Platzhalter in verschiedenen Dateien definieren?
Vielleicht als Hintergrund wie meine bisherige Vorgehensweise in PHP war, das mir recht gut gefallen hat:
- Die Seite wird in drei Ebenen gegliedert, die unterste Ebene ist bei mir das Grundgerüst der Seite, welches für jeden Seitenaufruf gleich ist und Platzhalter definiert (head, left, right, bottom zum Beispiel für ein zwei Spaltenlayout)
- In die Platzhalter werden Module wie Navigation und Inhaltsbereich eingesetzt. Pro Platzhalter können beliebig viele Module definiert werden
- Eines der Module (das für den Inhaltsbereich) fordert vom Front Controller die (anhand der GET Parameter) aktuelle Inhaltsseite an und nimmt deren Ausgabe als Ausgabe für das Modul (daher für den Platzhalter,in welchem das Modul gelegt wurde)
Das Grundgerüst dürften dann die MasterPages sein und die Inhaltsseiten die Detailsseiten, aber so Sachen wie Navigation hätte ich gerne vom Grundgerüst getrennt, sodass ich Module beliebig auf andere Platzhalter verschieben kann oder erweitern/entfernen kann und doch für alle Seiten gleich, also nicht in der Detailsseite definiert.
Zum Vergleich zu anderem Sprachen kann ich leider nix sagen (außer du willst meine Meinung nach ca. 10 Std. Programmieren in php im Vergleich zu c# wissen...ich denke aber die Anzahl der Stunden gibt einen kleinen Hinweis auf meine "Beziehung" zu php). Aber was ich da kennen gelernt hab ist grundlegend anders als der Asp.Net-Weg. Es wird also eine nicht minder kleine Umstellung für dich :)
Vergleich interessiert mich eher in Richtung was brauche ich als Arbeitsumgebung. Bei PHP weiß ich es läuft bei fast jedem Hoster auf einem Webspace, benötigt lediglich einen Webserver wie Apache und PHP Modul. Java benötigt einen Container für Servlets und JSP wie zum Beispiel Tomcat.
Nur bei C# weiß ich nicht genau was ich da brauche. Soweit ich weiß brauche ich zum Beispiel für ASP.NET Seiten den IIS und somit als Betriebssystem Windows Server. Dies dürfte ja dann auch einen vserver oder rootserver benötigen.
Original von TheUndeadable
Ich persönlich habe den HttpListener genutzt und eine eigene HTTP-Verarbeitung geschrieben. Hält sich mit wenigen Klassen in Grenzen. Die Implementierung findest du im Quellcode, den du über http://fbk.depon.net erreichen kannst. Beachte: AGPL. Anschauen und Ideen sammeln ist OK, aber Quellcode übernehmen nicht (es sei denn du möchtest dein BG unter die AGPL-Lizenz stellen).
Schaue ich mir dann auch mal an. Übernehmen würde ich ungern, da ich schon alles soweit wie möglich selbst machen will (gerade am Anfang wenn ich die Sprache noch lerne). AGPL dürfte es am Ende aber vielleicht sogar werden.
PS: Ich habe mir derzeit den Visual C# Express runtergeladen, für ASP.NET benötige ich ja dann den Visual Web Developer Express, oder?
Achso, was auch interessant wäre, gibt es keine Zwischenstufe zwischen eigenen Webserver und ASP.NET, also wie bei Java die Servlets, dass ich Seiten rein per C# schreiben kann, aber alles HTTP spezifische ein Container/Basisklasse übernimmt?