.NET平臺上的分布式編程框架MBrace發布1.0版本
英文原文:Release of MBrace 1.0, a Distributed Programming Framework for .NET
在經過數年的開發之后,MBrace 1.0 終于在上周正式發布了。MBrace 是一種使用F#及 C# 進行腳本編寫與編程,適用于高伸縮性的云數據應用的編程模型。該項目主要包含了各種代碼類庫以及適配各種云供應商的運行時。
該項目的關鍵組件是 MBrace.Core,這是一個獨立的類庫,包含了核心 MBrace 編程模型。它提供了一種基于 API 的計算表達式,調用者既可以直接使用這種表達式,也可以通過它創建其他類庫,例如 MBrace.Flow。以下示例將使用云工作流,展現如何通過 HTTP 調用獲取遠程內容。
let urls = [| ("bing", " more urls/ |]let download (name: string, uri: string) = cloud { let webClient = new WebClient () let! text = webClient.AsyncDownloadString (Uri (uri)) |> Cloud.OfAsync do! CloudFile.Delete (sprintf "pages/%s.html" name) let! file = CloudFile.WriteAllText (path = sprintf "pages/%s.html" name, text = text) return file }
let filesTask = urls |> Array.map download |> Cloud.Parallel |> cluster.CreateProcess</pre>
MBrace.Flow 是一個基于 MBrace.Core 創建的分布式流(Streaming)類庫,該類庫使用了函數式的管道聲明。下面的示例展示了如何通過云流查找在多個 CSV 文件中出現重復字符串的次數。
let numberOfDuplicates = CloudFlow.OfCloudFilesByLine ["container/data0.csv" ; "container/data1.csv"] |> CloudFlow.map (fun line -> line.Split (',')) |> CloudFlow.map (fun tokens -> int tokens.[0], Array.map int tokens.[1 ..]) |> CloudFlow.groupBy (fun (id,_) -> id) |> CloudFlow.filter (fun (_,values) -> Seq.length values > 1) |> CloudFlow.length |> cluster.Run除了代碼類庫之外,MBrace 中還包括了其他的主要組件,即 MBrace 運行時實現。目前該實現只支持 Azure 這一種云提供商,不過對 AWS 的支持已經在開發當中了。Azure 運行時實現包括對 MBrace.Core 編程模型的完整支持,以及用于集群管理的輔助工具。以下代碼展示了如何創建一個基于 Azure 平臺上的四個 A3 實例的集群:
let pubSettingsFile = @"... path to your downloaded publication settings file ... " let config = DeploymentManager.BeginDeploy (pubSettingsFile, Regions.North_Europe, VMSizes.A3, vmCount = 4)為了幫助使用者快速上手,MBrace 提供了兩個學習工具包:一個工具包對應 Azure 平臺,而另一個工具包則對應一個模擬的集群。模擬集群可運行在一臺單獨的機器上,通過這種方式,就可以在某個開發者的機器上直接運行與調試分布式的代碼,而無需依賴任何額外的基礎設施了
MBrace 是一個托管在 GitHub 平臺上的開源項目,可以通過多種方式為該項目貢獻你的力量:包括對類庫的貢獻、對云提供商運行時的貢獻、以及對示例和文檔的貢獻。
來自: InfoQ本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!