我可以在共享的Web服务器上使用go来生成HTML吗?

时间:2014-09-11 13:20:47

标签: go hosting

通常我会将C#用于所有内容,我可以使用C#创建桌面应用程序,并在我的共享托管Web服务器上的dll中放置许多相同的c#代码。这节省了大量的编码时间。

有没有办法解决这个问题? 例如在托管的Web服务器上放置某种go dll来生成HTML。

我知道go并没有做dll,我也知道创建一个带有go 80端口的web服务器是直截了当的。但这不是共享Web服务器的解决方案。

这似乎是一个很好的用途,让我感到惊讶的是,这可能是不可能的。

我应该提一下,如果go代码不必重新启动每个http请求,那就太好了。

这是我用C#做的: 在Web服务器上,我添加了一个这样的aspx页面:

<%@ Page Language="C#" %>
<%@ Register TagPrefix="MyDLL" Namespace="MyDLL" Assembly="MyDLL"%>
<MyDLL:Web Runat="Server"/>

它只是加载基于http请求生成HTML的C#dll。

1 个答案:

答案 0 :(得分:1)

首先你必须设置IIS才能使用fastcgi(instructions),然后你可以像往常一样构建一个go web应用程序,但不是使用http.ListenAndServe而是使用fcgi.Serve

Example

func hello(w http.ResponseWriter, r *http.Request) {
    io.WriteString(w, "Hello, world of FCGI!")
}

func main() {
    http.HandleFunc("/hello/", hello)

    if err := fcgi.Serve(nil, nil); err != nil {
        log.Fatal("fcgi.Serve: ", err)
    }
}

但请记住,可能有多个编程实例一直在运行/销毁,因此任何临时数据(内存中会话等)都应存储在磁盘或数据库上的memcache或临时文件中。 / p>