Benutzer mit den meisten Antworten
AJAX direkt, ohne WebMethod

Frage
-
Hallo,
möchte folgendes erreichen: Ein ASP-Projekt besteht aus einer einzigen ASPX-Seite. Diese enthält AJAX Anfragen die per GET (mit Search-Parameter) oder POST (Formularfelder) übermittelt werden. Der Webserver sollte diese Requests verarbeiten und Daten (XML usw.) zurücksenden. Wie entwickle ich so was möglichst ressourcenschonend. Im Prinzip bräuchte ich nur ein Event welches gefeuert wird wenn eine Anfrage rein kommt und in der ich auf die GET/POST Parameter zugreifen kann. Die Antwort-Daten werden hier aufbereitet und zurückgesendet. Session-Verwaltung wäre noch angenehm, mehr brauche ich nicht. Wie legt man so ein Projekt an?
Viele Grüße
W. Wolf
Antworten
-
Ich denke, was Du willst, ist ein generischer Handler (ASHX). Da sparst Du dir den kompletten ASP.NET-Page-Framework-Overhead und bist ganz unten an der Basis, was der Performance zu Gute kommen dürfte.
Alternativ sieh Dir ASP.NET MVC an, dort kannst Du dann eine XML-Ausgabeseite basteln.
Anlegen? Als ASP.NET- oder ASP.NET-MVC-Webseite, und dann entweder einen generischen Handler hinzufügen oder eben einen ASP.NET-MVC-Controller samt View.
Karsten Samaschke
Entwickler, Trainer, Autor, Coach
wpzone.de - Community rund um die WP7-Entwicklung
aspnetzone.de - Community rund um die ASP.NET-Entwicklung
karsan.de - mein Weblog
familyblogger.de - mein Haus, mein Auto, meine Kinder- Als Antwort markiert Stefan FalzModerator Donnerstag, 4. August 2011 17:23
- Tag als Antwort aufgehoben Stefan FalzModerator Donnerstag, 4. August 2011 17:23
- Als Antwort vorgeschlagen Stefan FalzModerator Donnerstag, 4. August 2011 17:23
- Als Antwort markiert W. Wolf Montag, 8. August 2011 05:35
-
Hi,
im einfachsten Fall sieht so ein Handler bspw. so aus:
Innerhalb des Handlers kannst Du dann über Context.Session( "..." ) auf die Sessionvariablen zugreifen.<%@ WebHandler Language="VB" Class="XmlDownload" %> Imports System Imports System.Web Public Class XmlDownload Implements IHttpHandler, IRequiresSessionState Private Context As HttpContext Public Sub ProcessRequest(ByVal ctx As HttpContext) Implements IHttpHandler.ProcessRequest Me.Context = ctx Dim Result As String Result = "<xml ...><Data>...</Data>" ctx.Response.Clear() ctx.Response.ContentType = "text/xml" ctx.Response.AddHeader( "Content-Disposition","inline;filename=data.xml" ) ctx.Response.Write( Result ) ctx.Response.End () End Sub Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable Get Return False End Get End Property End Class
HTH
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert W. Wolf Montag, 8. August 2011 05:35
Alle Antworten
-
Ich denke, was Du willst, ist ein generischer Handler (ASHX). Da sparst Du dir den kompletten ASP.NET-Page-Framework-Overhead und bist ganz unten an der Basis, was der Performance zu Gute kommen dürfte.
Alternativ sieh Dir ASP.NET MVC an, dort kannst Du dann eine XML-Ausgabeseite basteln.
Anlegen? Als ASP.NET- oder ASP.NET-MVC-Webseite, und dann entweder einen generischen Handler hinzufügen oder eben einen ASP.NET-MVC-Controller samt View.
Karsten Samaschke
Entwickler, Trainer, Autor, Coach
wpzone.de - Community rund um die WP7-Entwicklung
aspnetzone.de - Community rund um die ASP.NET-Entwicklung
karsan.de - mein Weblog
familyblogger.de - mein Haus, mein Auto, meine Kinder- Als Antwort markiert Stefan FalzModerator Donnerstag, 4. August 2011 17:23
- Tag als Antwort aufgehoben Stefan FalzModerator Donnerstag, 4. August 2011 17:23
- Als Antwort vorgeschlagen Stefan FalzModerator Donnerstag, 4. August 2011 17:23
- Als Antwort markiert W. Wolf Montag, 8. August 2011 05:35
-
Bzgl. "Antwort, keine Antwort, doch Antwort". Ich hab mich nur verklickt und wollte das Posting erstmal nur als Antwort vorschlagen. Sorry.
@W. Ein generischer Handler dürfte wie von Karsten vorgeschlagen, das richtige für dich sein. Um dort auch mit der Session arbeiten zu können, musst Du noch ein Interface implementieren.
Für reine Session-Lesezugriffe: IReadOnlySessionState
Für Lese und Schreibzugriffe auf die Session: IRequiresSessionState
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo,
Danke für den Ansatz. Ich betrete damit Neuland und werde mich in das Thema erst einarbeiten müssen. Ich lasse mal den Thread noch ein paar Tage offen, zum einmem habe ich eventuell noch Fragen die im Kontext bleiben sollten, zum anderen gibt es vielleicht noch erläuternde Zusatz-Meldungen, die mir weiterhelfen.
Vor allem das Zusammenspiel ohne ASP.NET-Page-Framework-Overhead und den Session-Klassen durch Interface Impementation ist mir momentan noch völlig unklar. Mal sehen ob ich dazu noch was finden kann. Die nötigen Stichwörter habe ich ja nun...
Schönen Gruß
W. Wolf
-
Hi,
im einfachsten Fall sieht so ein Handler bspw. so aus:
Innerhalb des Handlers kannst Du dann über Context.Session( "..." ) auf die Sessionvariablen zugreifen.<%@ WebHandler Language="VB" Class="XmlDownload" %> Imports System Imports System.Web Public Class XmlDownload Implements IHttpHandler, IRequiresSessionState Private Context As HttpContext Public Sub ProcessRequest(ByVal ctx As HttpContext) Implements IHttpHandler.ProcessRequest Me.Context = ctx Dim Result As String Result = "<xml ...><Data>...</Data>" ctx.Response.Clear() ctx.Response.ContentType = "text/xml" ctx.Response.AddHeader( "Content-Disposition","inline;filename=data.xml" ) ctx.Response.Write( Result ) ctx.Response.End () End Sub Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable Get Return False End Get End Property End Class
HTH
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert W. Wolf Montag, 8. August 2011 05:35