【免费下载链接】VedAstroA non-profit, open source project to make Vedic Astrology easily available to all.项目地址https://gitcode.com/gh_mirrors/ve/VedAstro点击查看免费下载VedAstro 是一个免费开源的吠陀占星Vedic Astrology项目本文带你拆解它的部署架构前端采用Blazor WebAssembly单页应用托管在Azure Static Web App静态存储上再由Azure CDN 规则引擎解决 SPA 路由 404 与 SEO 静态页问题计算密集的 API 则运行在 Azure Functions。整套架构几乎零服务器成本非常适合想要前端重、后端轻的开源项目参考。一、整体架构一张图看懂 VedAstro 部署分层VedAstro 把项目拆成四个相互独立的部分核心计算库Core Library、API 库API Library、客户端Client以及面向各平台的分发形式。占星计算逻辑全部集中在 .NET 核心库中Web 端只是一个调用者。官方 README 中用一张 ASCII 图概括了线上请求流向-------- ------------------------ ------------------ | User | ------ | Website | ------------- | API | | | ------ | - Blazor WebAssembly | ------------- | - Azure Functions| -------- GUI | - Azure Static WebApp | XML | | ------------------------ ------------------可以看到三个关键点WebsiteBlazor WebAssembly 前端 Azure Static Web App 静态托管APIAzure Functions 无服务器计算服务User 浏览器直接运行 .NET 代码WebAssembly与 API 通信二、前端实战为什么选 Blazor WebAssembly打开 Website/Website.csproj可以看到几个关键配置Microsoft.NET.Sdk.BlazorWebAssembly标准 Blazor WASM 项目模板TargetFramework为net8.0开启PublishTrimmed裁剪减小 .wasm 体积通过Flavor区分AOT_ON/AOT_OFF两种构建注释里坦诚写着 AOT 在 Android Chrome 上存在问题可随时切换启动入口 Website/Program.cs 做了两件与部署相关的事注册一个Timeout设为无限的HttpClient因为占星计算耗时较长不能靠默认超时注入自定义的UnhandledExceptionSender把未处理异常上报到服务端日志——官方注释说这确保地球上任何一次崩溃都不会被忽视而 Website/wwwroot/index.html 是整个 SPA 的外壳它先显示一个加载动画挂好#blazor-error-ui错误兜底 UI最后才以defer方式加载_framework/blazor.webassembly.js启动应用。所有 CSS/JS 第三方库Bootstrap、Chart.js、Tabulator 等都走公共 CDN。 这套结构意味着服务器上根本没有 .NET 进程。所有 C# 代码都在浏览器里运行静态资源放 Blob Storage 即可。三、一键部署到 Azure Static Web App最快发布步骤发布流程被压缩在一个脚本里——Website/Start.ps1dotnet run swa deploy ./bin/Release/net7.0/publish/wwwroot --deployment-token第一行本地调试第二行用swaCLI 把wwwroot发布目录上传到 Azure Static Web App通过 deployment-token 免登录认证发布后资源落在 Azure 的 Blob Storage前端由 Azure CDN 加速分发配合 Website/staticwebapp.config.json 里的navigationFallback所有未命中文件的路径 rewrite 到/index.htmlStatic Web App 层先做第一轮 SPA 兜底。四、CDN 规则引擎实战Blazor 直接访问页面不 404Blazor SPA 部署在静态存储上有个经典难题用户直接输入/LifePredictor.html这类深层链接时服务器上并没有这个文件直接 404。VedAstro 的解法是在 Azure CDN 规则引擎Rules Engine里加一条精确的 URL 重写规则只放行真正的页面导航请求匹配条件说明Request method GET只处理 GETURL path 不以/api/开头不碰 API 流量Sec-Fetch-Mode包含navigate是浏览器地址栏/链接跳转Sec-Fetch-Dest包含document目标是文档而非 JS/CSS/图片命中后执行两个动作把路径重写rewrite回/让 Blazor 前端接管路由并在响应头追加rule-engine: StopBlazorDirectPage404便于排查。规则引擎的原始截图如下README 的 Design Decision Notes 里还提到另一类规则用途Handling SEO bots via Rules——搜索引擎爬虫访问时返回干净、静态的 HTML 而不是 JS 应用。仓库里Website/wwwroot/seo/目录正是一套为此准备的纯 HTML 页面Website/wwwroot/seo/index.html、Horoscope、LifePredictor 等工具页各有一份配合sitemap.xml做 SEO 收录。缓存怎么刷项目把 CDN 刷新命令也存成了文件——Website/CDNPurge.txtaz cdn endpoint purge --resource-group VedAstro --profile-name CDNProfile --name vedastro --content-paths /*五、域名与路由一条 CDN 如何分出 Web 和两套 APIREADME 记录了 2023 年 3 月的域名转发设计三条链路全部走 Azure DNS Azure CDNWebvedastro.org→ 域名注册商 → Azure DNS → Azure CDN → Web Blob StorageAPI 稳定版api.vedastro.org→ Azure DNS → Azure CDN → 稳定版 API 服务器API Beta 版beta.api.vedastro.org→ Azure DNS → Azure CDN → Azure 上的 Beta API也就是说同一个 CDN 端点通过规则引擎把不同的子域/路径路由到不同后端api.vedastro.org/...与/nlp/...走 API其余走静态站证书则由 Lets Encrypt ACME 机器人Azure Function自动续期管理。六、后端 APIAzure Functions 隔离模式 Docker 自托管API 项目API/Program.cs只有十几行代码核心是ConfigureFunctionsWorkerDefaults()说明它运行在Azure Functions 隔离宿主isolated worker上无服务器按需计费。API/Dockerfile 则提供本地/自建部署路径基于azure-functions/dotnet-isolated官方镜像用sdk镜像做 build → publish 多阶段构建最终复制到final阶段。Dockerfile 注释特别强调路径值至关重要因为它们是大多数失败的原因。七、关键文件清单按这张表就能找到架构证据架构环节文件路径WASM 前端工程裁剪/AOT 开关Website/Website.csproj前端启动与异常上报Website/Program.csSPA 外壳与第三方 CDN 加载Website/wwwroot/index.html一键 swa deploy 脚本Website/Start.ps1Static Web App 路由兜底配置Website/staticwebapp.config.jsonCDN 全量刷新命令Website/CDNPurge.txtSEO 静态 HTML 页Website/wwwroot/seo/index.htmlFunctions 隔离宿主入口API/Program.csFunctions Docker 多阶段构建API/Dockerfile架构设计决策笔记README.md八、总结这套架构值得借鉴的 3 个点计算下沉到浏览器占星计算跑在 Blazor WebAssembly 里静态托管即可服务全球用户成本极低规则引擎替代网关用 CDN Rules Engine 同时完成 SPA 防 404、API 子域路由、SEO 爬虫处理三件事省掉一层反向代理命令即文档部署脚本、CDN 刷新命令、设计决策全部以文件形式留在仓库里新人接手一眼就能看懂如果你想亲自体验可以 clone 仓库后按 Website/Start.ps1 的两行命令本地跑通前端再对照上表逐一查看各模块源码。赞分享【免费下载链接】VedAstroA non-profit, open source project to make Vedic Astrology easily available to all.项目地址https://gitcode.com/gh_mirrors/ve/VedAstro点击查看免费下载相关推荐owllook 小说搜索引擎实战指南架构设计、解析规则、安装部署与运维排障owllook 小说搜索引擎实战指南架构设计、解析规则、安装部署与运维排障 owllook 是一个基于百度、360、Bing、DuckDuckGo 等通用搜索搜索引擎网页爬虫后端xlwings Server深度解析无需本地Python即可运行Excel自动化xlwings Server深度解析无需本地Python即可运行Excel自动化 在数据处理和办公自动化领域Excel与Python的结合一直是提升效率的关后端Java规则引擎实战指南Easy Rules模块化架构深度解析Java规则引擎实战指南Easy Rules模块化架构深度解析 你是否曾经面对复杂的业务逻辑感到束手无策当if else语句层层嵌套代码变得越来越难以维护后端工作流自动化上一篇GNU Emacs多平台部署Windows、macOS、Linux的完整安装指南下一篇Yuxi-Know智能体中间件开发动态工具加载与上下文管理终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考