BurnRate 正在使用 Blazor 推动营收成功
认识一下 Robert McLaws,他是一名 .NET 老手和经验丰富的企业家,他对帮助其他人取得成功充满热情。在他的整个职业生涯中,McLaws 见证了风险投资家 (VC) 和他们数千亿的投资如何未能显著提高创业成功率。甚至经过 50 年的 VC 投资后,至少有 70% 的公司仍然在每个发展阶段都失败了。
这一统计信息让 McLaws 感到震惊。因此,他开始帮助创始人和收入负责人将他们的招聘流程系统化,并在没有电子表格公式困扰的情况下制定自己的发展道路。他看到了利用技术来进行一些有价值的具体计算的机会,这使得能够更轻松、更精确地规划可扩展增长。
构建人类算法
几年前,McLaws 使用 ASP.NET 构建了一个应用程序框架,用于在商业房地产领域构建财务分析产品。通过为公寓大楼构建容纳能力模型,他开始深入研究 SaaS 销售能力模型以及人类的工作能力如何影响公司创收的能力。
就在那时,他提出了 BurnRate 的想法,这是一个面向营销团队的收入需求和人员编制计划系统。McLaws 认为,依靠直觉和猜测来决定营销、销售和客户成功等关键收入团队的人员配备水平并不是一条可持续发展道路。
相反,他相信这是一门科学: 一种可使用他称为“人类算法”的东西帮助公司更智能地发展的算法。就像他说的,“这些 [客户成功、营销和销售] 团队首先要负责带来资金,因此必须正确计算,并且让这些计算足够简单,便于收入团队直观地使用。”
选择适当的技术堆栈
McLaws 在财务数学方面的经验告诉他,使用浮点运算的编程语言(例如 JavaScript)不足以构建财务系统。此算法的基础需要是在 C# 中,才能提供可信赖且可一致验证的结果。
在他离开他之前的公司来开创 BurnRate 时,他不得不放弃自己的应用程序框架,并从头开始重新设计。.NET Core 的第一版刚刚上线,所以这是为现代重新构建它的绝佳时机。
后端足够简单,Azure SQL 和 Microsoft Restier 完全能够处理项目的可查询 API 需求。在 .NET Core 上,他快速发展的“人类算法”非常迅速,而且几分之一秒内即可处理高度结构化数据中的深度复杂计算。
但是,如果用一种让公司能够创建多种方案并在这些方案之间进行切换的方式来整理公司财务数据,则需要一个他没有预料到的架构深度。
“将场景、父场景、时间尺度、计划的结果和实际 [结果] 一起分层到一个模型中,这足以让我头晕目眩。我花了几个月的时间高强度工作和重复尝试才使它成功。”McLaws 表示,BurnRate 在其算法上使用来确保正确功能的单元测试数“可能比其他大多数公司使用其应用程序构建的要高度几个数量级。我们要求公司对他们在该平台上的整体业务的未来做出决定。我们承担不起出错的后果。”
BurnRate 构建了名为 Breakdance 的开源测试框架来提高单元测试工作效率并在更短的时间里编写更一致的测试。
前端出现了不同的挑战。McLaws 最初使用 Webpack、TypeScript 和 Knockout 的组合来创建 BurnRate UI 的原型,但他遇到很多障碍。当时,Webpack 还没有 TypeScript 定义来帮助更轻松地配置生成项。
“JavaScript 是一种语言,在该语言中可包含任何内容,并且可在运行时交换出任何内容。使用该语言时,必定会失败。成功是需要争取的,通常要承受巨大的精神考验。”McLaws 说道。
当他终于将一切都搞定并有了第一个功能齐全的原型后,团队却遇到了缩放问题,尤其是在为有几百名员工的公司生成雇佣计划时。
“当我们尝试弄清楚如何使其缩放和处理 UI 更新,并弄清楚重新计算和服务器端时,我们在倒退,”他说道,“当你尝试渲染内容时,浏览器中会变得越来越不稳定。”
Blazor 如何开启可伸缩性之路
Blazor 大约在这个时候进入了市场,它是一种新的前端技术。
“用最小的 JavaScript 在浏览器中实现端到端 C# 的承诺太棒了,不容忽视。”McLaws 说,
McLaws 指出,在客户端与服务器端之间使用 C# 不仅让应用程序开发变得“简单得多”,而且在让 BurnRate 的 UI 与其计算一样可靠方面起着关键作用。
我们可以用编写后端代码时使用的相同语言来编写单元测试。工作量很大! 你为什么不想这样构建呢? 它省去了几千行代码,而且对于在 WPF 世界待过 5 秒的任何人来说,它都是如此的直观。”
有了 Blazor,BurnRate 能够“非常快地”移动。团队只用了几周(而不是三年)就构建一个正常工作的 Blazor 原型,而且不到一年时间就完全移植了数十万行代码。
其中很大一部分时间用来构建新的开源工具,以便其他公司也能够更快地构建 Blazor 应用,这种方法与 McLaws 助人为乐的精神很契合。
“人们往往会忘记,当创建像 BurnRate 这样的平台时,并不只需要面向客户的应用,还需要该应用背后用于数据库更改和系统管理的应用。”他说道。
“所以,我们构建了 BlazorEssentials,通过这个库可从 Blazor 中的 XAML 启用模型-视图-视图模型(MVVM)架构风格。它让我们能够在应用中将数据获取与数据显示清晰地分离开来。这为我们的应用程序体系结构带来了一定程度的简化和一致性。现在,我们 100% 的代码库都能使用可预测的模式用单个语言进行测试。”
利用 Azure DevOps 进行高度自动化的持续集成和持续交付 (CI/CD),让 BurnRate 团队能够更快地向前推进。
“无论是新应用还是现有应用的新实用工具,我们都能在几小时内投入生产。”McLaws 说。
随着 BurnRate 的缩放,它需要确保其产品的稳定性,以便更多地融入到其客户的核心日常操作中。McLaws 信任 Microsoft。
交付解决方案而无妥协
“我在很久之前都选择了 Microsoft,Microsoft 从未让我失望。”他说道。
McLaws 是一名有 23 年经验的 .NET 老手,5 次荣获 Microsoft MVP,他的开源贡献总计超过 14 亿下载。直到今天,他仍然继续与 Microsoft 一起开发,他知道那里有资源和社区,可以一起创造伟大的东西。有了 Blazor,BurnRate 团队能够构建应用实现 McLaws 的愿景,而没有妥协。
在他看来,除了 .NET,从未有“任何平台能够支持这种 [级别] 的稳定可伸缩性”。据他说,Blazor 让他的精益团队能够更快、更智能地进行构建。
我在整个职业生涯中都在等待这种级别的工作效率。有了 .NET Core 和 Blazor,将我的梦想变为现实从未如此简单。”
准备好开始使用了吗?
分步教程将帮助你在计算机上运行 Blazor。