< 返回版块

ZhangHanDong 发表于 2019-06-05 14:12

Tags: rust

actix-web 1.0 正式版发布

#actix

actix-web 1.0对于0.7来说,是一次比较彻底的重构。涉及架构重新设计、抽象也由Actor进一步升级到了Service。对于代码层面而言,就是用Service替代了之前的Handler。 1.0的代码也完成遵循Rust惯例,组件化开发,相比于0.7版本的一大坨代码,清爽了很多。

重点说一下Service抽象,它是来自于领域驱动设计(DDD,Domain Derive Development)的概念。DDD要求开发者,构建软件的时候是以领域模型为基本单位。领域模型无关技术,具有高度的业务抽象性,它能够精确的描述领域中的知识体系。开发者需要学会如何让领域模型之间彼此之间建立关系,形成完整的领域架构。而Service就是专门为领域模型提供的外层服务层。服务是无状态的,它只拥有行为。

actix-web这样进行重构,可以方便开发者更好地进行分层设计。相比于之前的actor抽象,更加符合直觉。当然,如果你还喜欢之前的actor抽象,可以通过actix_web_actors组件获得支持。

actix-web组件的依赖层次应该是这样的: 「 (tokio && futures) -> actix-net/actix-rt -> acitx-net/其他子crate -> actix-web」。0.7的actix-web是基于actix实现的web抽象,1.0 的actix-web,是直接取消了actix的抽象,换成了基于actix-rt的Service抽象,提升了性能。但是你如果想用actix也可以,通过actix-web里支持的一个actor组件应该可以(目测,参考example中webscoket的示例),参考下图:

img

Read More


dargo: 一个类似于cargo-edit的工具

#cargo #tool

由国内社区DCjanus实现,和cargo-edit相比,特色在于:dargo基于查本地crates index,基本是瞬间可以完成整个workspace的升级。而cargo-edit之类的工具则是通过HTTP请求(直接访问crates.io)去检查最新版本。

所以使用dargo的时候,需要更新本地index才能保证获得最新版本。而更新本地index则比http速度要快很多,也有国内镜像可用。比较适合国情。

dargo


来自MIT数字货币计划Rust工作室的分享幻灯片 Day 1

#MIT #DigitalCurrencyInitiative


mft: 解析NTFS主文件的库

#NTFS

mft


Sluice: 一个用于并发I/O编程的异步字节缓冲区和管道

#IO #async

sluice目前发布了 0.4 alpha 版本,基于Rust的async/await语法

Sluice


在Rust中使用FlatBuffers

#flatbuffers

FlatBuffers是Google的序列化格式。它在读取和编写数据方面非常快:比JSON或XML快得多,并且通常比Google的其他格式(比如Protobuf)更快。目前有十三种编程语言支持它,包括Rust。

FB在计算时间上占优势,而PB则在内存空间上占优(相比FB,这也正是它计算时间比较慢的原因)。Google宣称FB适合游戏开发是有道理的,如果在乎计算时间它也适用于后台开发。protobuf更适用于分布式计算领域。 参考来源

感兴趣的可以看看这篇教程,了解FlatBuffer以及如何在Rust中使用它。

Read More


构建无锁连续环形缓冲区

#lockFree #ringBuffer

本文由Andrea Lattuada(苏黎世联邦理工学院博士生, ETH Zurich)和James Munns(来自Ferrous Systems)共同写作,介绍了如何设计和实现(包含了两个版本的实现,每人实现了一个版本)用于跨线程通信的高性能无锁环缓冲器。


From 日报小组 @Chaos

日报订阅地址:

独立日报订阅地址:

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页