【Rust日報】 2019-06-05:actix-web 1.0 正式版發布

2021-02-13 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的示例),參考下圖:

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)共同寫作,介紹了如何設計和實現(包含了兩個版本的實現,每人實現了一個版本)用於跨線程通信的高性能無鎖環緩衝器。

Read More

Andrea實現的spsc-bip-buffer

James實現的bbqueue

Reddit 討論

From 日報小組 @Chaos

日報訂閱地址:

獨立日報訂閱地址:

Telgram Channel

阿里雲語雀訂閱

Steemit

GitHub

社區學習交流平臺訂閱:

Rust.cc論壇: 支持rss

Rust Force: 支持rss

微信公眾號:Rust語言學習交流

相關焦點