2013-02-17 8 views
9

Was ist der Unterschied? Wenn ich das net/http/fcgi-Paket verwende, wird jede Anfrage in der neuen goroutine ausgeführt. Es scheint für net/http das gleiche zu sein ListenAndServe ... oder? Welche Vor- und Nachteile?Unterschied zwischen net/http und net/http/fcgi in Golang

+2

Fcgi oder CGI? Um was fragst du wirklich? –

Antwort

12

Die net/http/fcgi ermöglicht es Ihnen, über das FastCGI-Protokoll für neue Verbindungen zu hören, während die net/http ListenAndServe für das Abhören eingehender HTTP-Verbindungen da ist. Bei einem FastCGI-Listener benötigen Sie einen HTTP-Server vor dem Go-Prozess, der eingehende Verbindungen überwacht und Anforderungen über FastCGI an Ihren Go-Prozess sendet.

FastCGi kann nützlich sein, wenn Sie mehrere Dienste haben, die Sie auf demselben Port bereitstellen müssen. Sie können etwas wie Apache oder Nginx als Frontend ausführen und bestimmte URLs über FastCGI Ihrem Go-Prozess zugänglich machen.

Wenn dies nicht der Fall ist und Sie nur einen Go-Webserver auf einem Port ausführen möchten, bleiben Sie bei net/http.

+0

Danke! Und wenn ich Go + nginx benutzen möchte? Ist es besser, net/http/fcgi in Go? ... zu verwenden oder dynamische Anfragen auf den Standard-Go-Webserver umzuleiten? – Tyranron

+0

Sie könnten es so oder so tun. Nginx wird Reverse-HTTP-Proxy-Dienst oder FastCGI ausführen. Da Go bei der Analyse von HTTP-Anfragen bereits sehr schnell ist, ist es einfacher, Nginx's Reverse-HTTP-Proxy zu verwenden, wenn Sie eine mehrstufige Deployment-Option benötigen. – Daniel