通常我使用 C# 来处理所有事情,我可以使用 C# 创建桌面应用程序,并将许多相同的 C# 代码放在我共享的托管 Web 服务器上的 dll 中。这为我节省了大量编码时间。
go 有什么办法吗? 例如在我托管的 Web 服务器上放置某种 go dll 以生成 HTML。
我知道 go 不执行 dll,我也知道创建一个 go 监听端口 80 的 Web 服务器很简单。但这不是共享 Web 服务器的解决方案。
这似乎是 go 的绝妙用法,但令我惊讶的是这可能是不可能的。
我应该提一下,如果 go 代码不必在每次 http 请求时都重新启动,那就太好了。
这是我用 C# 做的: 在 Web 服务器上,我添加了一个像这样的 aspx 页面:
<%@ Page Language="C#" %>
<%@ Register TagPrefix="MyDLL" Namespace="MyDLL" Assembly="MyDLL"%>
<MyDLL:Web Runat="Server"/>
它只是加载基于 http 请求生成 HTML 的 C# dll。
最佳答案
首先,您必须设置 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)
}
}
但请记住,可能有多个程序实例一直在运行/销毁,因此任何临时数据(内存中 session 等)都应存储在内存缓存或磁盘或数据库上的临时文件中。
关于go - 我可以在共享网络服务器上使用 go 来生成 HTML 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25788585/