2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

使用 F# Azure Storage Type Provider 探索 Azure

  • 2016-05-17
  • 本文字数:1397 字

    阅读完需:约 5 分钟

Azure Storage Type Provider 提供对 Azure 存储数据资源的静态类型访问: BLOB 以及队列。项目的维护者Isaac Abraham 最近和大家交流了如何使用type provider和这些数据资源交互

对于所有数据资源来说,对type provider 的设置都是相同的:

复制代码
open FSharp.Azure.StorageTypeProvider
// Connect to a live account using a two-part name and key.
type Storage = AzureTypeProvider<"name", "key">

Blob

Azure Blob storage 是将文件数据存储在云端的一项服务。storage type provider 通过下面的示例提供对容器和文件的静态类型访问:

复制代码
let container = Storage.Containers.samples
let theBlob = container.``folder/``.``childFile.txt``
printfn "Blob '%s' is %d bytes big." theBlob.Name theBlob.Size
let totalSize =
[ container.``file1.txt``
container.``file2.txt``
container.``file3.txt``
container.``sample.txt`` ]
|> List.sumBy(fun blob -> blob.Size)
printfn "These files take up %d bytes." totalSize


Azure Table storage 将 NoSQL 键值存储托管于 Azure 上。NoSQL 数据库是无模式的,表的行不需要包含相同属性。Azure Table storage 支持在有限范围内的查询,可以通过查询键或者属性来得到相对应的行。它实现了OData 协议,这对查询非常重要。

storage type provider 可以提供基础的 CRUD 操作,对管理数据很有必要。有几种办法进行查询,以下的例子是一个简单的键查询:

复制代码
let employeeTable = Storage.Tables.employee
let firstEmployee = employeeTable.Get(Row "1", Partition "women")
let allWomen = employeeTable.GetPartition("women")

type provider 提供了 IQueryable 实现来满足属性查询。然而,由于 Azure Table 支持的查询操作受限,这个解决方案也是有限制的。一种可能的选择是使用 type provider 自动生成的条件:

复制代码
let longerQuery = employeeTable.Query()
.``Where Years Working Is``.``Greater Than``(14)
.``Where Name Is``.``Equal To``(“Fred”)
.``Where Is Manager Is``.True()

队列
Azure Queue storage 是消息服务,基于 REST 方式访问。Queue storage 还支持管理异步任务和搭建过程工作流。

相比较于一个传统的队列 API,type provider 并没有太多优势,它不能提供模式或是拓展查询。然而,它为开发和调试提供了几个功能。使用 F# Interactive 就可以直接从 IDE 实现查询。

复制代码
let queue = Azure.Queues.``sample-queue``
async {
printfn "Enqueuing a message!"
do! queue.Enqueue("Hello from Azure Type Provider")
printfn "Queue length is %d." (queue.GetCurrentLength())
// Get the message back off the queue
let dequeuedMessage = (queue.Dequeue() |> Async.RunSynchronously).Value
printfn "%A" dequeuedMessage
printfn "Deleting the message."
do! queue.DeleteMessage dequeuedMessage.Id
printfn "Queue length is %d." (queue.GetCurrentLength())
} |> Async.RunSynchronously

Azure Storage Type Provider 是一个开源的项目,可以在GitHub 上获得。

查看英文原文 Exploring Azure with F# Azure Storage Type Provider


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-05-17 19:001478
用户头像

发布了 218 篇内容, 共 79.4 次阅读, 收获喜欢 76 次。

关注

评论

发布
暂无评论
发现更多内容

全能电子书阅读管理工具 OmniReader Pro for Mac

兮兮立立

北京市科委发布《北京市加快人工智能赋能科学研究高质量发展行动计划》

ModelWhale

政策 科学智能 北京市科委

用多Agent“组团开挂”是一种什么体验?

BetterYeah AI

文件快捷拖放管理工具Dropzone 4 for Mac

兮兮立立

DS豆包通义BTY王炸组合,我做了个元宵AI视频小程序

BetterYeah AI

BetterYeah 上线自定义MCP | 轻松拓展企业Agent无限边界

BetterYeah AI

表单文本框里写太多字就出 404 了?原因和解决办法都在这儿!

不在线第一只蜗牛

表单

Kimi K2开源炸场,1万亿参数碾压GPT-4.1,成本仅Claude 4的1/5!

测试人

EdgeView for Mac 图片浏览查看编辑软件

兮兮立立

专业远程桌面连接工具Microsoft Remote Desktop

Geek贝

Alfred 5 for Mac(苹果效率提升工具)

Geek贝

亲历者复盘:快手前端工程质量诊断平台建设与演进之路

快手技术

前端

视频画质无损修复软件Aiarty Video Enhancer for Mac

兮兮立立

MacCleanse for Mac 系统垃圾清理软件

兮兮立立

【华为云MySQL技术专栏】TaurusDB增备功能介绍

华为云开发者联盟

WiFi无线网络管理工具 WiFi Explorer Pro for Mac

兮兮立立

安全加密的即时通讯软件,统一门户高效互联

BeeWorks

即时通讯 IM 私有化部署

如何用DeepSeek让你的营销、开发、客服Agent更强大?

BetterYeah AI

音频元数据编辑器Tagr for Mac v5.8.1

兮兮立立

Tagr下载 Tagr mac Tagr破解版

Dynamic Wallpaper for Mac 精美动态壁纸下载器

兮兮立立

Docker容器访问挂载文件权限问题

电子尖叫食人鱼

Docker 容器 运维

回归开源,两位 Java 和 Go 程序员分享的开源贡献指引

阿里巴巴云原生

阿里云 云原生 Higress

BetterTouchTool for Mac(触控板增强神器)

Geek贝

低代码:深度切入制造业软件系统需求的实践路径

秃头小帅oi

妙笔写作软件WonderPen for Mac v2.6.9

兮兮立立

WonderPen妙笔 WonderPen下载 WonderPen中文版 WonderPen激活版

Mac系统设置维护工具TinkerTool System for Mac

兮兮立立

干货分享!MCP 实现原理,小白也能看懂

不在线第一只蜗牛

MCP

MySQL 逻辑架构说明

量贩潮汐·WholesaleTide

MySQL

内网即时通讯软件BeeWorks,支持私有化局域网使用

BeeWorks

即时通讯 IM 私有化部署

SMART Utility for mac (磁盘诊断工具)

Geek贝

使用F# Azure Storage Type Provider探索Azure_.NET_Pierre-Luc Maheu_InfoQ精选文章