go - 我可以在共享网络服务器上使用 go 来生成 HTML 吗?

标签 go hosting

通常我使用 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/

相关文章:

linux - 在哪个文件夹中放置站点在 linux 主机上?

mysql - 如何连接docker与compose、mysql、golang

hosting - wordpress.com 和其他类似服务如何立即创建一个子域,并立即可用?

sockets - 许多客户端连接到 Go 服务器时出错

go - 单核上的goroutine是否更快?

javascript - HTML/CSS/JS 图像未在线加载

c# - 检查什么需要完全信任

.net - 云端桌面WPF应用程序部署

json - 如何使用 Go 后端和 ReactJS 前端在 MongoDB 中插入 markdown 代码

golang.org/x/crypto/bcrypt 生成哈希时的错误案例