Windows/IIS 是 RhinoCompute 生产部署的主线。IIS 位于最前面,负责接收请求并启动/托管 rhino.compute.exe。rhino.compute 再启动一个或多个 compute.geometry 子进程执行实际求解。
典型链路:
客户端 / Hops / 业务后端 | v IIS | v rhino.compute.exe | v compute.geometry.exe 子进程 | v Rhino.Inside + Rhino + Grasshopper
直接启动 rhino.compute.exe technically 可行,但生产环境还需要:
因此生产环境建议按官方 IIS 部署指南执行。
官方部署流程使用 PowerShell bootstrap 脚本安装 Rhino、IIS、Compute,并配置 IIS 站点。教学中应强调:
不要把生产 token 或 API key 写进教学截图、共享文档或代码仓库。
IIS 通过 web.config 启动 ASP.NET Core 应用。部署后常见路径:
C:\inetpub\wwwroot\aspnet_client\system_web\4_0_30319\rhino.compute\web.config
其中 aspNetCore 节点的 arguments 可配置 RhinoCompute 启动参数,例如:
<aspNetCore processPath=".\rhino.compute.exe" arguments="--port 80 --childcount 4" stdoutLogEnabled="true" stdoutLogFile="..\..\..\..\..\logs\LogFiles\W3SVC1\" hostingModel="InProcess" />
修改前建议备份 web.config。修改后重启 IIS 或回收应用池。
| 参数 | 推荐理解 |
|---|---|
–port 80 | IIS/Compute 监听端口。除非清楚网络配置,不要随意改。 |
–childcount 4 | 子进程数量。提高并发,但增加内存和授权占用。 |
–idlespan 3600 | 子进程空闲关闭时间,单位秒。默认常见为 1 小时。 |
–spawn-on-startup | 启动 Compute 时立即拉起子进程。生产常保持 false,按请求唤醒。 |
–load-grasshopper false | 不需要 GH 求解时可关闭 Grasshopper 加载,缩短启动。 |
–max-request-size N | 调整最大请求体。大模型或大 DataTree 可能需要提高。 |
–timeout N | 调整服务端超时。长耗时 Grasshopper 定义可能需要提高。 |
–apikey KEY | 会覆盖环境变量中的 API Key。生产更推荐环境变量或部署脚本管理。 |
–block-private-urls | 公网服务建议启用,防止服务端 URL 抓取访问云元数据或内网资源。 |
idlespan 控制 compute.geometry 子进程空闲多久后关闭。IIS 应用池也有自己的 Idle Timeout。两者要配合:
idlespan。rhino.compute,导致子进程管理和日志不清晰。在客户端机器上测试:
http://server-ip:80/version http://server-ip:80/healthcheck http://server-ip:80/activechildren http://server-ip:80/sdk
然后在 Hops 中配置:
http://server-ip:80/最后运行一个最小 Hops 定义,而不是直接运行完整业务定义。
公网服务建议使用 HTTPS。可以按官方“Configure Compute to use HTTPS”流程配置,也可以在企业架构中把 HTTPS 终止放到更前面的负载均衡或网关层。
基本原则:
生产服务器更新分两类:
更新前应:
web.config 和部署脚本配置。/healthcheck 和 /sdk 是否能从客户端访问?