2010-12-10 9 views
1

Python hat eine minimalistische und elegante Weboberfläche namens WSGI. Die einfachste mögliche Anwendung sieht wie folgt aus:minimalistische Java-Weboberfläche wie Pythons WSGI

def simple_app(environ, start_response): 
    status = '200 OK' 
    response_headers = [('Content-type', 'text/plain')] 
    start_response(status, response_headers) 
    return ['Hello world!\n'] 

environ ist so etwas wie ein Request-Objekt und start_response ist eine Funktion, die resonse Header zu setzen. Der Antworttext ist ein iterierbares Objekt, hier eine Liste mit einem einzelnen String ('Hallo Welt! \ N'). Diese einfache Schnittstelle vereinheitlicht, was in Java mit Servlets und Filtern gemacht wird.

Ich frage mich, ob etwas ähnliches in Java geschrieben werden könnte. Einen Iterator in Java zurückzugeben wäre langsamer als ein Stream, würde ich erwarten. Daher denke ich, dass die Übergabe eines OutputStream (in ein Antwortobjekt eingeschlossen) wie die Servlet-API die beste Lösung ist. Es würde wie folgt aussehen:

public interface Handler { 
    void handle(Request req, Response res); 
} 

aber ich würde es vorziehen, wenn die Antwort zurückgegeben werden würde:

public interface Handler { 
    Response handle(Request req); 
} 

Aber dann die einzige Möglichkeit, in einem Output passieren würde die Anfrage (Request sein # createResponse()).

ASP.NET actions return "Result" Objekte, aber ich weiß nicht viel darüber und habe keine Ahnung, wie das Streaming vom Framework durchgeführt wird. Wie würdest du etwas Ähnliches in Java machen?

Ich freue mich auf Ihre Ideen für eine einfache und elegante Java Web API.

Antwort

0

Mit nativer IO und Netzwerk-API von Java, können wir ServerSocket von java.net Paket erstellen.

+0

Eine rohe Buchse ist ein * Bit * zu niedrig ;-) – deamon