云计算依赖于利用多种集成服务. 使用多种服务需要一套独特的技术和功能,而F#在这一领域表现出色. 随着近来云解决方案的兴起,"在云中"部署多种服务变得越来越容易,通过存储大量数据以及运行分布在计算机集群中的大量计算,扩展了可能的范围.

对异步工作流的内置支持,数据处理能力,计算表达式,可扩展语法,可组合性,数字代码的表达能力等等,使得F#特别适合有效地开发可伸缩的云解决方案.

本指南概述了使用F#进行可伸缩的计算,消息传递,存储和数据处理的软件包和工具,尤其是利用云计算资源的软件包和工具.

有关云托管的Web编程和服务,请参阅《 Web编程指南》 .

本指南包括与使用F#进行云编程有关的资源. 要贡献本指南,请登录GitHub, 编辑此页面并发送拉取请求.


请注意,下面列出的资源仅用于与F#编程语言相关的教育目的. F#软件基金会不认可或推荐任何商业产品,过程或服务. 因此,提及商业产品,过程或服务不应理解为认可或推荐.

Resources for Cloud Programming

Cloud Platforms

Microsoft Azure

Microsoft Azure通过服务(包括虚拟机,地理冗余存储,数据库群集,网站部署和其他服务)提供对Microsoft全球数据中心的访问.

Amazon Web Services

Amazon Web Services(AWS)提供大量按需和托管的计算和托管服务. AWS包括按需和保留的虚拟机实例,各种存储选项,内容交付网络(CDN),DNS功能以及许多其他功能. 亚马逊提供来自全球多个数据中心的服务.

亚马逊提供了.NET SDK来管理AWS服务,如此处所述 . 该SDK提供了用于管理存储,计算实例和其他Amazon服务的工具.

在Amazon的AWS服务上使用F#和.NET的一些其他资源:

Containers

Docker

Docker通过在Linux上提供操作系统级虚拟化的附加抽象和自动化层,实现了软件容器内部应用程序的自动化部署.

F#在Mono的Docker官方映像中默认可用. 还有一个用于F#官方Docker镜像来源 .

Scalable Distributed Programming and Messaging

分布式计算问题需要广泛的通信功能,范围从简单的命令行参数传递到高度优化的低延迟进程间通信. 本节列出了F#可用的各种通信库.

FSharp.CloudAgent and F# Mailbox Processor

F#邮箱处理器直接在核心F#库中提供用于线程间通信的代理模式.

FSharp.CloudAgent是一个易于使用的框架,它允许使用F#的本机MailboxProcessor代理框架,使用Azure Service Bus提供便宜且可靠的消息总线来轻松创建工作人员或代理的可分发池.

Akka.NET

Akka.NET框架是一个开源工具包和运行时,用于在.NET和Mono上构建高度并发,分布式和容错的事件驱动的应用程序. 它由自己的贡献者用于生产系统.

MBrace

MBrace框架是一个开放源代码编程模型和分布式运行时,可为.NET / mono框架实现可伸缩的,容错的计算和数据处理.

Orleans

Orleans框架提供了一种直接的方法来构建分布式大规模计算应用程序,而无需学习和应用复杂的并发或其他扩展模式. 它专为在云中使用而设计,并已在Microsoft Azure中广泛使用. 还提供了一个简单的" Hello World" F#示例 .

Kafka

ZeroMQ

MPI

Ractor.CLR

Ractor.CLR是基于Redis的分布式actor系统.

Scalable Data Programming and NoSQL Databases

F#可以与许多可伸缩的数据存储系统一起使用. 可以通过上面概述的Cloud SDK进行访问. 特定系统的其他一些资源是:

Hadoop

Hadoop支持在大型商用硬件群集上运行的数据密集型分布式应用程序. Hadoop源自Google的MapReduce和Google File System论文.

Storm

Storm是实时分析,在线机器学习,连续计算,分布式RPC,ETL等平台. 它能够与Hadoop集群在相同的基础架构上运行,具有可扩展性,容错性,确保您的数据将得到处理,并且易于设置和操作.

Riak

Riak是NoSQL数据库,实现了Amazon Dynamo论文中的原理:

Cassandra

Cassandra是一个分布式数据库管理系统,旨在处理许多商用服务器上的大量数据,提供高可用性而没有单点故障.

RavenDB

RavenDB是可扩展的面向文档的数据库.

MongoDB

MongoDB是一个跨平台的面向文档的NoSQL数据库系统.

Neo4j

Neo4j是一个嵌入式的,基于磁盘的,完全事务的持久性引擎,该引擎存储以图而不是表结构化的数据.

by  ICOPY.SITE