当前位置: 首页 > news >正文

苏州市建设厅网站首页环保设备东莞网站建设

苏州市建设厅网站首页,环保设备东莞网站建设,图书馆门户网站建设总结,莒县城阳网站建设Web和云开发#xff0c;Rust会起飞#xff1f; 一、前言 二、大厂偏爱#xff0c;Rust的未来 三、Rust做Web的雄心 四、有必要换Rust做Web#xff1f; 1.效率和性能 2.可靠性和可维护性 五、Rust先苦后甜 六、用Rust前的几个问题 七、开发界的强者 一、前言 去年…Web和云开发Rust会起飞 一、前言 二、大厂偏爱Rust的未来 三、Rust做Web的雄心 四、有必要换Rust做Web 1.效率和性能 2.可靠性和可维护性 五、Rust先苦后甜 六、用Rust前的几个问题 七、开发界的强者 一、前言 去年Web开发公司Mainmatter对Web版 Rust 进行了战略押注并发起了 EuroRust 会议加入了 Rust 基金会同时正在内部以及开源领域从事许多 Rust 项目。 Mainmatter非常乐观地认为 Rust 将在未来几个月和几年内在Web和云空间中起飞并认为Rust 是迈向 Web 开发新时代的第一步开发人员可以利用这项技术在不放弃开发人员经验和生产力的情况下达到更高的、以前难以想象的效率、稳定性、可靠性和可维护性水平。 这篇文章意在分享为什么Mainmatter有信心作这一押注以及为什么我们相信 Rust 在Web和云领域拥有美好的未来。 二、大厂偏爱Rust的未来 Rust 自从大约十年前登台以来就受到了很多开发人员的关注和喜爱。不仅开发人员喜欢这门语言大公司的决策者也认为 Rust 是一项伟大的技术并且在过去几年里该语言在整个行业得到了广泛采用。 AWS在其平台上大量使用 Rust Google在 Android 中使用它Microsoft在 Windows 中使用它。从本质上讲Rust 有望在以前使用的许多领域取代 C 和 C系统编程、操作系统、各种嵌入式系统、低级工具以及游戏和游戏引擎。 当然除了以上这些未来具有更大潜力的领域是Web和云。Rust给这两个领域带来了无限想象的后端提升空间。一旦后端的开发提升到一个新的水平就能让团队能够访问以前无法实现的功能。 尽管 Rust 还很年轻但已经看到很多公司在Web和云中成功使用 Rust比如Truelayer、Discord、Temporal、Nandos、svix、Wingback等等。 值得一提的是谷歌多年来也一直大力采用 Rust最近表示与他们使用的任何其他语言相比他们并没有真正看到 Rust 的生产力损失。 三、Rust做Web的雄心 虽然相对年轻毕竟距离1.0 发布Rust的生态系统也只走过了 8 年。但Rust以及其Web生态已经达到了一定的成熟度足够使其成为构建真实应用程序的可行选择。 正如arewewebyet.org所证实的Rust 显然已经为Web做好了准备 首先有tokio一个异步运行时它是Web应用程序的坚实且高性能的基础其次最重要的是Rust已经有了成熟且维护良好的 Web 框架例如axum和actix-web。所有相关数据存储以及 ORM 都有成熟的驱动程序最后可以找到涵盖构建 Web 应用程序的所有其他相关方面的库例如反序列化、国际化、模板化、可观察性等。 总的来说Rust的雄心勃勃构建 Web 后端提供了坚实而稳定的构建块。 四、有必要换Rust做Web 当然有人可能会问我为什么要换Rust对于已经使用 Ruby、Java、Elixir、TypeScript、Go 或其他任何语言的团队而言换 Rust有哪些好处吗 有两个关键方面使 Rust 成为 Web 构建的绝佳选择一是它的效率和性能二是其类型系统带来的可靠性和可维护性带来的好处。 1.效率和性能 Rust 以其高效和高性能而闻名。它将轻松超越 Web 应用程序常用的 JavaScript、Ruby、Python 等语言几个数量级。其他语言可能具有更高的性能上限例如 Java 或 C# 或 Go但你需要投入大量的工程精力才能接近 Rust 工具包开箱即用提供的性能水平。 此外Rust 还有一个关键优势它不捆绑垃圾收集器。垃圾收集语言可以很快但它们不能始终一致性地表现出色。垃圾收集器将引入暂停pause以释放未使用的内存从而对应用程序的尾部延迟产生负面影响。而Rust 不存在这个问题它可以提供一致的性能而不会出现这些峰值。 C 和 C 是唯一能够实现如此稳定和一致性能的其他语言。不幸的是这两种语言往往搬起石头砸自己脚处处是陷阱特别是在手动内存管理时。正如 Linux 的创始人 Linus Torvalds 所说 “它离硬件太近了你可以用它做任何事情。这很危险。就像玩杂耍电锯一样。我还发现它确实有很多陷阱而且很容易被忽视。 由于 C 和 C 的这些危险除了这两种语言的专家或拥有专家团队时才能使用。否则你得到的就是一个不稳定且充满安全漏洞的系统。 同时别忘了在 Web 领域很少人具备这种专业知识因为每个人大多都使用非常不同的语言如 JavaScript、Python、Ruby、Elixir 等。反而Rust 就不会遇到同样的陷阱使开发人员能够以以前的效率水平构建软件。 Rust 通常会比用于构建 Web 后端的其他技术的性能好几个数量级同时保持显着较低的内存占用。 当然如果与其他技术相比 Rust Web 服务器可以在一小部分时间内响应请求这也意味着它可以用更少的服务器响应相同数量的请求这又意味着更少的托管成本。 这对于中小型产品和公司来说减少托管的云服务器数量就意味每月就可以轻松减少不菲的费用。 我们的 Python 服务平均约为 50 个请求/秒NodeJS 约为 100 个请求/秒Rust 约为 690 个请求/秒。我们可以在通常托管单个 Python 服务的 k8 EKS 节点上安装 4 个 Rust 服务。——Reddit某用户这样说 然而成本节省还只是好处之一使用更少的服务器也意味着使用更少的能源。尽管使用可再生能源运行数据中心固然很好但最绿色的能源仍然是我们不使用的能源。Rust 或许不能解决气候危机但这里要承认的是运行我们编写的软件也会真真切切地消耗资源从而对现实世界产生影响。软件行业往往会忘记这一点——如果我们能够更有效地利用资源并以更少的投入获得相同的产出这是选择技术时的一个重要考虑。 2.可靠性和可维护性 虽然性能和效率很重要但在许多情况下可能更相关的原因则是 Rust 的强类型系统所带来的可靠性和可维护性收益。 像这样的代码片段对于 Web 应用程序Ruby on Rails来说是相当典型的 class Userattr :nameattr :activeattr :activation_datedef activate(activation_date)self.active trueself.activation_date activation_datesaveenddef save…end end…user.activate(Time.now) 虽然这段代码非常简洁且易于阅读并且编写这样的代码可以让你快速实现目标但也存在问题。在这个的示例中虽然我们可以看到用户的属性但我们不知道这些属性周围可能有什么规则例如如果active是true则activation_date可能也必须设置如果active是false则大概activation_date应该是nil。为了验证这些假设我们必须研究该activate方法的实现这意味着需要付出相对较高的努力才能获取信息。 查看该activate方法的调用我们无法知道它是否会引发错误或者我们应该在哪个时区中度过时间。虽然 Ruby 可能有点极端但考虑到其众所周知的灵活性许多这些问题在其他语言中也存在。让我们以 Java 为例。我们仍然无法在类型系统中对围绕active和activation_date属性的规则进行编码即使可以null我们也有NullPointerException在运行时获取 s 的风险。 随着代码库的增长和开发团队的壮大或者只是随着一些人离开和加入而发生变化。从事代码库工作的每个人都对整个应用程序以及整个代码库中所做的所有隐式假设都有一个完美的心智模型但这很难做到相反理解这些概念需要人们认真阅读遗留代码。这不仅降低了效率而且还可能导致生产中的错误率增加。 与上面相同的代码片段但在 Rust 中更加清晰和富有表现力 enum User {Inactive {name: String,},Active {name: String,active: bool,activation_date: DateTimeUtc,}, }impl User {fn activate(self, activation_date: DateTimeUtc) - Result(), DBError {match self {User::Inactive { name } {let new_user User::Active {name: name.clone(),active: true,activation_date: activation_date,};new_user.save()}User::Active { .. } Err(Error::default()),}}fn save(self) - Result(), DBError {…} } 首先对于用户模型我们可以使用 Rust 的enum关联数据。这样就可以完全清楚非活跃用户和活跃用户是什么样子以及在什么场景下可以设置哪些属性——事实上活跃用户和非活跃用户甚至不具有相同的属性但每个用户都只具有对其有意义的属性。它们代表各自的用户状态。此外属性的类型也被明确定义——不仅 Rust 是类型化的而 Ruby 显然是非类型化的而且类型也非常精确例如对于字段activation_date预期的时区在类型中也是正确的。 该函数的签名activate还显式地编码了 Rails 示例中隐含的许多信息。同样预期的时区activation_date在类型中是正确的并且该函数返回Rust 的时区Result这清楚地表明调用它时可能会发生错误。Result事实上Rust 编译器将要求处理的成功和错误变体以便不会发生未处理的运行时异常。 此外activation_date当调用函数时函数的参数总是保证有一个值因为 Rust 没有隐式可空性的概念与 Java 不同。如果activation_date 可能在其计算位置没有值则它可能无法OptionDateTimeUtc传递给函数activate因为它的类型与预期的不同DateTimeUtc。Rust 编译器只允许Some其变体的代码路径Option导致方法的调用activate以便activation_date保证在函数运行时有一个值。 虽然这显然是一个相当简单的示例但它很好地说明了 Rust 的两个主要优点 1Rails 示例中隐含的许多概念和规则都是通过 Rust 代码中的类型显式传达的。可以清楚地区分活跃用户和非活跃用户对于日期字段甚至预期的时区也被编码在类型中。这种表现力使代码更容易理解特别是对于代码库的新手来说从而提高了可维护性。 2Rust 还大大提高了可靠性因为其他语言包括 Java 或 Go 等类型化语言中常见的整类错误将在编译时而不是运行时检测到。编译器保证函数activation_date的参数activate具有值以及要处理的函数可能返回的任何错误。 总体而言当每个人都关注 Rust 的性能时Rust 带来的可靠性和可维护性方面的改进常常被忽视。然而这些好处对于项目的长期成功可能比纯粹的绩效数字更相关。 五、Rust先苦后甜 由于 Rust 的主要优点是可靠性、可维护性、效率和性能因此该语言的用例显然是与这四个方面特别相关的用例。但是好处的代价是需要考虑在内。 总体而言Rust 仍然需要比其他技术更高的前期投资特别是与 Web 项目中常用的技术相比 虽然像 JavaScript 和 Ruby 这样的语言是为了快速获得结果而设计的但 Rust 则没有留下太多的自由度并且要求程序在获得工作结果之前通过所有编译器的检查。与这些语言相比使用 Rust 就需要付出更多的初始工作。此外人们在使用 Rust 之前还需要翻越一座山——那就是掌握 Rust 独特的所有权系统。 然而当跨过项目的初始阶段并将视野扩展到更长的时间范围时可维护性、可靠性和稳定性等方面变得极其重要一开始使用 Rust 时进行的额外投资会随着时间的推移而带来回报—— Rust 应用程序更可靠因此需要更少的时间投入到错误修复上并且更易于维护因此更容易与不断增长和变化的团队一起有效地工作。 最后就会呈现出Rust工作量先大后小先苦后甜。对于其他语言来说情况往往是相反的随着时间的推移随着团队的成长可靠性和可维护性挑战的影响变得更大、成本更高工作量也会增加。 六、用Rust前的几个问题 根据 Rust 的优势和投入曲线每当评估是否针对特定情况选择 Rust 时需要回答的主要问题是 1团队是否已经具备 Rust 专业知识许多不使用 Rust 的团队实际上已经拥有专业知识因为很多开发人员在空闲时间使用 Rust 编写代码 2可靠性方面有哪些要求 3长期维护计划是什么 4系统构建的规模有多大Rust 在托管方面可以节省多少钱 5根据以上问题的答案额外的初始投资值得吗 虽然在某些情况下结论是额外的初始投资不值得但在某些情况下评估显然对 Rust 有利。我们看到的一些典型用例包括 1对于实现产品关键业务逻辑的核心业务系统来说可靠性、长期可维护性等方面是首要考虑的问题。 2对于金融系统来说通常对错误的容忍度很低而 Rust 带来的稳定性的提高可能是一个决定性因素。另外性能是一项关键要求在特定场景例如交易系统中具有明显的财务影响。 3任何必须能够提供高吞吐量和性能的系统显然都会从 Rust 中受益。位于多个微服务前面的代理服务器等系统必须具有最小的开销和一致的性能。在这些情况下垃圾收集语言及其不可靠的性能特征通常不是一个选择。 4最后对于任何大规模运行的系统在托管成本方面都有很大的节省潜力。 一旦做出了使用 Rust 的决定就有两种主要的采用路径——要么用 Rust 从头开始重新编写整个应用程序要么考虑与其他技术一起逐步采用。篇幅原因就不再展开了。 七、开发界的强者 JNPF很多人都尝试用过它它是功能的集大成者任何信息化系统都可以基于它开发出来。 低代码是将开发过程中某些重复出现的场景、流程具象化成一个个组件、api、数据库接口避免了重复造轮子。因而极大的提高了程序员的生产效率。 官网www.jnpfsoft.com/?csdn 如果你有闲暇时间可以做个知识拓展。 采用业内领先的SpringBoot微服务架构、支持SpringCloud模式完善的平台扩增基础满足了系统快速开发、灵活拓展、无缝集成和高性能应用等综合能力采用前后端分离模式前端和后端的开发人员可分工合作负责不同板块。 为了支撑更高技术要求的应用开发从数据库建模、Web API构建到页面设计与传统软件开发几乎没有差异只是通过低代码可视化模式减少了构建“增删改查”功能的重复劳动
http://www.w-s-a.com/news/632437/

相关文章:

  • 企业网站带新闻发布功能的建站皋兰县建设局网站
  • 国内外做gif的网站wordpress数据库教程
  • 成都建站平台自己做一个网站需要多少钱
  • 景区旅游网站平台建设公司企业网站源码
  • 免费高清网站推荐喂来苏州网络科技有限公司
  • php做的大型网站有哪些备案博客域名做视频网站会怎么样
  • 去哪网站备案吗昭通网站建设
  • flash企业网站源码建筑材料采购网站
  • 网站可以换虚拟主机吗部门做网站优点
  • 如何做分类网站信息营销莱芜网页定制
  • 班级网站建设感想中国做视频网站有哪些
  • 做刷票的网站wordpress图片链接插件
  • 给客户做网站图片侵权沈阳做网站的地方
  • 网站开发步骤规划蓝天云免费空间主机
  • 网站字体规范wordpress找不到页面内容编辑
  • 静态网站建设参考文献茂名营销型网站制作公司
  • 君山区建设局网站风铃微网站怎么做
  • 购物网站销售管理合肥网络推广平台
  • 网站建设规划书txt微盘注册帐号
  • 小说网站开发实训报告企业网盘收费标准
  • mvc网站开发医疗医院网站建设
  • 天津市建设厅官方网站wordpress设置404
  • 贵阳好的网站建设免费正能量网站下载ww
  • 免费学习的网站平台自建站seo如何做
  • 海南三亚做网站公众号版面设计创意
  • 学校网站建设目的与意义合肥网页定制
  • 网站查询地址网站建设与维护费用
  • 做网站哪些软件比较好合肥外贸网站建设公司
  • 建网站需要哪些条件专业网站设计报价
  • 定制网站开发技术化妆品的网站布局设计图片大全