我的编程空间,编程开发者的网络收藏夹
学习永远不晚

在私有的IIS 服务器上能否托管 Golang REST Web 应用程序?

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

在私有的IIS 服务器上能否托管 Golang REST Web 应用程序?

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《在私有的IIS 服务器上能否托管 Golang REST Web 应用程序?》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


问题内容

我想使用 GoLang 创建一个在 IIS(7、8 或 10)或 Tomcat 7.0 上运行的 Web 服务。我们有多个环境,每个环境都有多个服务器,都是 Windows 2008 R2、2012 或 2016。所有服务器都是私有的 (10.x)。我的目标是向同时使用 IIS 和 Tomcat 的 COTS 产品添加一些 REST 服务。我宁愿避免将 nginx 或其他东西粘贴到任一服务器上,以免损害 COTS 产品或让他们的技术支持人员不接听电话。再次强调......服务器只能通过公司 VPN 访问,并且不面向公共互联网。

哪种服务器可以提供最简单的方法来让某些东西正常工作 - Tomcat 还是 IIS?


解决方案


这与 Go 无关,但我能想到至少有两种解决方案:

  • HTTP 请求的反向代理。

    1. 编写一个普通的 Go 服务器,通过 HTTP 处理请求。

      也许可以使用 golang.org/x/sys/windows/svc 将其转换为正确的 Windows 服务。

    2. 部署它。

      如果要托管在运行 IIS 的同一台计算机上,则可以让它仅侦听 localhost。请注意,它需要一个专用的 TCP 端口来侦听,并且您需要使您的服务器能够在这方面以某种方式进行配置。

    3. 设置 reverse proxying in your IIS,以便它将来自您想要的任何网址(部分)的请求转发到 Go 服务器。
  • 使用 FastCGI。

    Go 支持通过 FastCGI 处理请求 协议by means of its standard library, 和IIS suports FastCGI workers。

    因此可以(重新)编写 Go 服务器以使用 FastCGI 而不是 HTTP,然后通过此协议将其挂接到 IIS。

在我看来,这些解决方案的优点和缺点是:

  • 开发人员更熟悉通过纯 HTTP 提供服务,并且 使服务器更加“便携”——从某种意义上说,如果/当您需要它时,将更容易更改其部署方案。 直接将其提供给互联网的权利。

    相反,使用 FastCGI,您始终需要一个 FastCGI 主机作为“中间件”。

  • 有传言称 HTTP 代码在方面进行了更精细的调整 性能优于 FastCGI。

    不过,这只会对相当硬核的负载造成影响。

  • FastCGI over HTTP 的一个可能的优点是它可以 通过管道而不是 TCP 提供服务。例如,您可能 通过命名管道提供服务,因为它受 IIS 的 FastCGI 模块支持,并且存在 3rd-party packages for Go implementing support for them (甚至包括来自 Microsoft® 的一项)。

    这样做的好处是,管道被认为会产生较少的数据传输开销(基本上,它只是在属于两个进程的内核缓冲区之间铲入字节,而不是将它们推送到整个 TCP/IP 堆栈),并且使用管道使您无需将 TCP 端口专用于 Go 服务器。

    不过,我对这种设置及其性能权衡没有个人经验。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《在私有的IIS 服务器上能否托管 Golang REST Web 应用程序?》文章吧,也可关注编程网公众号了解相关技术文章。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

在私有的IIS 服务器上能否托管 Golang REST Web 应用程序?

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

在私有的IIS 服务器上能否托管 Golang REST Web 应用程序?

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《在私有的IIS 服务器上能否托管 Golang REST Web 应用程序?》带大家来了解一下##content_title##
在私有的IIS 服务器上能否托管 Golang REST Web 应用程序?
2024-04-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录