Microsoft Stack 仍然是可行选择的八个原因
已发表: 2022-03-1110 年前,微软开发人员的生活是美好的。 公司对他们的开发项目 100% 使用 Microsoft 感到满意。 使用前端的 ASP.NET、.NET 中间层和后端的 SQL Server,大部分情况下工作得很好。 当他们不这样做时,开发人员只是将其视为领土附带的东西。 微软几乎是在做这个节目。 然后,在过去十年末,微软重达 800 磅的大猩猩地位开始瓦解。 可能是因为 iPhone 的推出和微软错过了向移动设备的转变,也可能是因为开源项目的激增,但事情发生了变化,今天需要说服那些相同的公司,使用 Microsoft Stack 是一个好主意。 本文介绍了支持坚持使用 Microsoft 软件堆栈的八个理由。
原因 #1:.NET 仍然是最好的之一
.NET Framework 于 10 多年前推出,功能丰富且经过全面的实战测试。 虽然在 .NET 早期必须将本机开发与托管代码结合起来是司空见惯的,但如今绝大多数开发任务都得到了开箱即用的支持。 甚至像 Oracle 这样的公司也发布了 100% 为 .NET 托管代码(即 ODP.NET 托管驱动程序)的组件来与他们的产品进行交互。 .NET API 是一致的、有据可查的并被数百万人使用。
通过 MSDN、StackOverflow 和数以千计的论坛和博客获得的知识库非常庞大。 在我使用 .NET 开发的这些年中,我不记得有一个实例会在框架错误上卡住很长时间。 每次,有人已经体验过、研究过并发布了一个答案,这并不总是我希望的答案,但仍然是推动我前进的东西。 随着即将发布的 2015 版本,.NET Core 将是开源的,并且可以在非 Windows 系统上使用。
原因 #2:ASP.NET 已经发展
回顾 10 年前传统的 Web 到数据库 Microsoft 堆栈,有趣的是看看哪些部分经受住了时间的考验,哪些部分逐渐消失。 虽然 Microsoft 堆栈的后端几乎没有变化(我们仍然使用相同的模式和组件集,例如依赖注入、任务、Linq、EF 或 ADO),但前端,即 ASP.NET 部分,看到从“按照微软的方式做”(即 Web 表单)到“按照自己的方式做并使用 ASP.NET 作为平台”的根本转变。 今天,ASP.NET 是一个基于 MVC 的框架,具有用于身份验证、捆绑和路由的强大基础架构,它与许多非 Microsoft 技术(如 Bootstrap 和 AngularJS)集成。 ASP.NET 站点在从手机到台式机的各种外形尺寸上看起来都不错,而且它的 Web API 功能使公开 Web 服务变得轻而易举。 该框架已开源多年,因此如果您遇到问题,可以在 GitHub 上找到源代码。 ASP.NET 发生了变化,并且变得更好了。
原因 #3:Web API 的简单性和 WCF 的强大功能
我一直最喜欢的名言来自艾伦凯,他说:“简单的事情应该简单; 复杂的事情应该是可能的”。 当 Windows Communication Foundation (WCF) 于 2006 年首次问世时,它绝非简单。 行为、端点和绑定是压倒性的。 因此,Microsoft 发布了 Web API,这是一个易于使用的框架,使公开 HTTP Web 服务变得轻而易举。 只需几行配置,您的 API 就会变成一个安全的“行业标准”Web 服务。
如果您的用例不符合“标准”模式,并且您需要完全控制您的 API 如何通过网络公开,您总是可以求助于 WCF。 凭借无数的配置选项和挂钩,WCF 允许您自定义序列化数据、记录、拦截、路由消息、使用对等和排队等等。 Web API 与 WCF 一起实现了 Kay 引用的两条原则:如果您需要一个简单的 Web 服务,您可以在几分钟内完成 Web API; 如果您的服务要求很复杂,那么使用 WCF 可以实现“全部”。 这两种技术提供了对服务场景的全面覆盖,并与 .NET 框架一起预打包。
原因 #4:SQL Server 一如既往的稳固
多年来,新开发语言、框架和模式的浪潮似乎从前端和中间层传来,并没有影响数据库后端。 毕竟,古老的“SELECT”在今天仍然像 20 年前一样被广泛使用。 我想这是因为许多公司将他们的数据视为其业务的核心,并且保持该核心的完整性远远超过在数据库层尝试“新事物”的兴奋。
SQL Server 擅长其作为数据管理员的主要角色,具有事务、参照完整性、备份、镜像和复制等众多功能,但 SQL Server 与竞争对手的不同之处在于它与 Microsoft 堆栈的其余部分的集成程度。 为了快速开发,有实体框架,目前版本 6,已经过了青春期,并很好地兑现了其简化数据访问的承诺。 如果您需要计算能力,.NET Framework 与 SQL Server 一起在进程内加载,这意味着您可以将 .NET 代码嵌入为存储过程、函数或聚合,而不会牺牲性能。 再加上 SQL Server 2014 带有内存表这一事实,您可以想出一些非常巧妙的实时解决方案,这些解决方案仅靠 SQL 和常规表是不够快的。 经过多年的行业发展,SQL Server 仍然在我的 RDBMS 列表中名列前茅。

原因 #5:它很容易测试
很多次,在企业 IT 部门工作时,我看到软件变成了这些无法触及的黑匣子,因为没有测试,没有人愿意因为害怕“破坏其他东西”而弄乱代码。 然后,我在拥有数千次测试的系统上工作,在软件发布多年后,能够告诉企业“是的,我们可以做出这些改变”,这是一种很棒的感觉。 Microsoft 堆栈的设计考虑了可测试性。 ASP.NET MVC 有依赖注入的钩子,在版本 5 中,依赖注入将包含在框架本身中。 在中间层,情况类似:我们使用依赖注入将实现与接口分离,这使我们可以在测试时将生产类型与模拟交换。 即使在数据库方面,也有带有用于针对存储过程层进行测试的模板的 SQL Server Data Tools。 测试是当今软件开发过程中不可分割的一部分,Microsoft 堆栈为这一新现实做好了充分准备。
原因#6:精心设计的支持生态系统
在支持方面,最好有多种选择,从社区论坛开始,到在您的服务器上现场工作的真人结束。 Microsoft 产品的在线生态系统是业内最大的生态系统之一。 毕竟,微软是由软件开发人员比尔盖茨创立的,他认为开发人员的广泛采用是微软产品扩散的关键。 这意味着为这些开发人员提供大量支持。
微软是最先鼓励员工在博客上介绍他们正在研究的技术的公司之一,虽然行业的其他公司肯定已经赶上了,但今天直接来自微软的教学视频、指南和文章的数量和质量仍然非常令人印象深刻。 大量基于社区的支持生态系统(例如 StackOverflow)补充了这一层高质量的在线内容,这些生态系统在内容质量方面并不一致,但总比不提供帮助要大得多。
最后,始终可以选择拿起电话并致电 Microsoft 支持。 我很少需要使用它,但是当让 Microsoft 开发人员分析核心转储时,出现了一些生产紧急情况,从而挽救了局面。 支持选项的范围显然是支持使用 Microsoft 堆栈的一个因素。
原因 #7:微软坚持他们的产品
几年前,选择 Microsoft Silverlight 作为应用程序的前端似乎是一个有效的选择,但现在已经不是这样了。 随着移动趋势的全面展开和 JavaScript 框架主导前端领域,Silverlight 不再是一个可行的选择; 尽管如此,它仍然得到微软的支持,直到 2021 年。微软坚持自己的立场,这对于我们这些必须做出技术选择而没有魔术八球告诉我们未来将主导软件领域的技术趋势的人来说是件好事。 与 Microsoft 堆栈一起使用可确保将时间和金钱投入到将得到支持的技术上,即使它在行业中失宠。
原因 #8:Visual Studio 伞
十年前,我大约 50% 的时间在 Visual Studio 上工作,大约 50% 的时间在其他工具上。 今天,这种分裂压倒性地有利于 Visual Studio。 Microsoft 将 Visual Studio 视为托管 IDE 的一站式解决方案的愿景正在实现,许多 Microsoft 和非 Microsoft 产品都提供了与 Visual Studio 的某种程度的集成。 从使用 SQL Server Data Tools 进行数据库开发到使用 Xamarin 编写 iPad 和 Android 应用程序,Visual Studio 通过一致的用户界面提供熟悉的开发人员体验。 使用 Microsoft Azure 也是如此,这是一个包含从数据库托管到移动服务的各种服务的云平台。
Visual Studio 混淆了分布式云基础架构的复杂性,使开发云应用程序的体验与开发非云托管应用程序的体验一致。 在 Visual Studio 的保护下,所有部分似乎都很好地结合在一起,从而使整个开发过程非常高效。
Microsoft Stack - 两全其美
今天,与 10 年前相比,编写高质量软件的选择要多得多。 这当然是一件好事,因为竞争迫使谷歌、苹果、亚马逊和微软等大公司继续创新,而不是自满。 虽然微软在过去十年的技术发展中被推上山顶,但该公司已经表明它愿意适应并适应当前技术趋势的现实。 ASP.NET 采用了其他技术和方法,其中许多是开源的,而最初的 Web 窗体已逐渐淡出历史。 .NET 框架不断发展,通过用于多线程和众核计算的库打破了新领域。 随着即将发布的 2015 年版本,该框架的核心将是开源的并且可移植到非 Windows 平台,这是朝着包容性和透明性方向迈出的一步。
这些受欢迎的改进来自一家公司,该公司拥有长期建立的发布经过测试、记录和支持的软件的流程。 与 Microsoft 堆栈一起使用会带来使用现代语言和框架的兴奋以及由在开发行业拥有数十年经验的软件巨头支持的稳定性。 这就是我今天推荐微软堆栈的原因。