通常我会将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。
答案 0 :(得分:1)
首先你必须设置IIS才能使用fastcgi(instructions),然后你可以像往常一样构建一个go web应用程序,但不是使用http.ListenAndServe而是使用fcgi.Serve
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>