整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          用 Ruby發郵件

          用 Ruby發郵件

          設您有一個可以工作的 Ruby 應用程序,并且需要向其添加電子郵件傳遞功能。這可能與用戶身份驗證或任何其他類型的事務性電子郵件有關,這沒有什么區別。本教程旨在幫助您實現使用 Ruby 發送電子郵件。

          用 Ruby 發送電子郵件的選項

          大多數情況下,你可以從三個選項中選擇一個。

          最簡單的方法是使用 Net: : SMTP 類。它提供了通過 SMTP 發送電子郵件的功能。該選項的缺點是 Net: : SMTP 缺少撰寫電子郵件的功能。你可以自己創建,但這需要時間。

          第二種選擇是使用專用的 Ruby gem,如 Mail、 Pony 或其他。這些解決方案使您能夠以簡單有效的方式處理電子郵件活動。Action Mailer 是一個完美的電子郵件解決方案,通過 Rails 的棱鏡。而且,很有可能,這將是你的選擇。

          第三個選項是類 Socket。通常,這個類允許您設置流程之間或流程內部的通信。因此,電子郵件發送也可以用它來實現。然而,事實是 Socket 并沒有為您提供廣泛的功能,您也不太可能想要使用它。

          現在,讓我們嘗試使用所描述的每個解決方案發送電子郵件。

          如何通過 Net: : SMTP 在 Ruby 中發送電子郵件

          根據我的經驗,在一個普通的 web 應用程序中使用這個選項是不常見的。但是,如果您在某些物聯網設備上使用 mruby (Ruby 語言的一種輕量級實現) ,那么通過 Net: : SMTP 發送電子郵件可能是合適的。此外,如果在無服務器計算中使用,例如 AWS Lambda,它也會這樣做。首先查看這個腳本示例,然后我們將詳細介紹它。

          Ruby 露比

          brrequire 'net/smtp'brmessage=<<END_OF_MESSAGEbrFrom: YourRubyApp <info@yourrubyapp.com>brTo: BestUserEver <your@bestuserever.com>brbrSubject: Any email subject you wantbrbrDate: Tue, 02 Jul 2019 15:00:34 +0800brbrLorem Ipsum

          這是一個通過 SMTP 發送文本電子郵件的簡單示例(可以在這里找到官方文檔)。您可以看到四個標題: 發件人、收件人、主題和日期。請記住,您必須將它們與電子郵件正文中的空行分開。同樣重要的是連接到 SMTP 服務器。

          Net::SMTP.start('your.smtp.server', 25) do |smtp|

          Start (‘ your.smtp.server’,25) do | smtp |

          自然,這里將顯示您的數據,而不是“ your.smtp.server”,并且25是默認端口號。如果需要,可以指定其他詳細信息,如用戶名、密碼或身份驗證方案(普通、登錄和 cram _ md5)。它可能看起來如下:

          `Net::SMTP.start('your.smtp.server', 25, ‘localhost’, ‘username’, ‘password’ :plain) do |smtp|`

          在這里,您將使用純文本格式的用戶名和密碼連接到 SMTP 服務器,客戶機的主機名將被標識為 localhost。

          之后,可以使用 send _ message 方法并將發送方和接收方的地址指定為參數。

          Start (‘ Net: : SMTP.start (‘ your.SMTP.server’,25) do | SMTP |’)的塊形式將自動關閉 SMTP 會話。

          在 Ruby Cookbook 中,使用 Net: : SMTP 庫發送電子郵件被稱為極簡主義,因為您必須手動構建電子郵件字符串。盡管如此,這并不像你想象的那樣沒有希望。讓我們看看如何用 HTML 內容增強電子郵件,甚至添加附件。

          在網上發送 HTML 電子郵件: : SMTP

          查看這個引用消息部分的腳本示例。


          Ruby

          message=<<END_OF_MESSAGEbrFrom: YourRubyApp <info@yourrubyapp.com>brTo: BestUserEver <your@bestuserever.com>brMIME-Version: 1.0brContent-type: text/htmlbrbrSubject: Any email subject you wantbrbrDate: Tue, 02 Jul 2019 15:00:34 +0800brbrA bit of plain text.brbr<strong>The beginning of your HTML content.</strong>brbr<h1>And some headline, as well.</h1>brbrEND_OF_MESSAGE


          除了消息體中的 HTML 標記之外,我們還有兩個額外的頭: MIME-Version 和 Content-type。MIME 指的是 MIME。它是 Internet 電子郵件協議的擴展,允許您在單個消息體中組合不同的內容類型。MIME-Version 的值通常為1.0。它指示消息是 MIME 格式的

          至于 Content-type 頭,一切都很清楚。在我們的示例中,有兩種類型-HTML 和純文本。另外,確保使用定義的邊界分隔這些內容類型。

          除了 MIME-Version 和 Content-type,您可以使用其他 MIME 頭:

          內容-傳輸-編碼-表示二進制到文本的編碼方案(7位、 Quoted-printable、 base64、8位或二進制)。


          在網上發送帶附件的電子郵件: : SMTP

          - Content-Disposition-指定表示樣式(內聯或附件)

          讓我們添加一個附件,例如 PDF 文件。在這種情況下,我們需要將 Content-type 更新為 multipart/mix。另外,使用 pack (“ m”)函數用 base64編碼對附加文件進行編碼。

          Ruby

          require 'net/smtp'brfilename="/tmp/Attachment.pdf"brfile_content=File.read(filename)brencoded_content=[file_content].pack("m")   # base64brmarker="AUNIQUEMARKER"


          之后,你需要定義你的電子郵件的三個部分。

          第1部分-主要標題


          part1=<<END_OF_MESSAGEbrFrom: YourRubyApp <info@yourrubyapp.com>brTo: BestUserEver <your@bestuserever.com>brSubject: Adding attachment to emailbrMIME-Version: 1.0brContent-Type: multipart/mixed; boundary=#{marker}br--#{marker}brEND_OF_MESSAGE


          第2部分-消息行動


          part2=<<END_OF_MESSAGEbrContent-Type: text/htmlbrContent-Transfer-Encoding:8bitbrA bit of plain text.br<strong>The beginning of your HTML content.</strong>br<h1>And some headline, as well.</h1>br--#{marker}brEND_OF_MESSAGE


          第三部分-附件


          part3=<<END_OF_MESSAGEbrContent-Type: multipart/mixed; name="#{filename}"brContent-Transfer-Encoding:base64brContent-Disposition: attachment; filename="#{filename}"br#{encoded_content}br--#{marker}--brEND_OF_MESSAGE

          現在,我們可以把所有的部分放在一起,并最終確定劇本。這就是它看起來的樣子:

          Ruby

          brrequire 'net/smtp'brfilename="/tmp/Attachment.pdf"brfile_content=File.read(filename)brencoded_content=[file_content].pack("m")   # base64brmarker="AUNIQUEMARKER"brpart1=<<END_OF_MESSAGEbrFrom: YourRubyApp <info@yourrubyapp.com>brTo: BestUserEver <your@bestuserever.com>brSubject: Adding attachment to emailbrMIME-Version: 1.0brContent-Type: multipart/mixed; boundary=#{marker}

          我可以發送電子郵件給多個收件人在網絡: : SMTP?


          當然,你可以. send _ message 期望第二個和隨后的參數包含收件人的電子郵件。例如:


          Ruby

          Net::SMTP.start('your.smtp.server', 25) do |smtp|br  smtp.send_message message,br  'info@yourrubyapp.com',br  'your@bestuserever1.com',br  ‘your@bestuserever2.com’,br  ‘your@bestuserever3.combrend


          發送電子郵件的最佳 Ruby Gems

          在 Ruby 生態系統中,您可以找到特定的電子郵件 gems,它們可以改善您的電子郵件發送體驗。

          Ruby Mail


          該庫旨在提供一個單點訪問管理所有電子郵件相關活動,包括發送和接收電子郵件。
          Pony

          您可能聽說過一個關于用一個命令發送電子郵件的童話故事。抓緊你們的帽子,因為它是真的,由小馬寶石提供。

          ActionMailer


          這是最流行的寶石發送電子郵件在 Rails 上。如果你的應用程序寫在上面,ActionMailer 肯定會出現。它允許您使用郵件類和視圖發送電子郵件

          使用郵件陷阱測試使用 Net: : SMTP 的電子郵件發送


          設置非常簡單。進入演示收件箱后,復制 SMTP“設置”選項卡上的 SMTP 憑據并將其插入到代碼中。或者,您可以在 Integrations 部分獲得一個簡單消息的即用模板。只要選擇一種編程語言或框架,你的應用程序是建立。

          Ruby

          require 'net/smtp'brmessage=<<END_OF_MESSAGEbrFrom: YourRubyApp <info@yourrubyapp.com>brTo: BestUserEver <your@bestuserever.com>brSubject: Any email subject you wantbrDate: Tue, 02 Jul 2019 15:00:34 +0800brLorem IpsumbrEND_OF_MESSAGEbrbrNet::SMTP.start('smtp.mailtrap.io', 587, '<username>', '<password>', :cram_md5) do |smtp|br  smtp.send_message message,


          如果一切正常,您將在郵件陷阱演示收件箱中看到您的消息。此外,您可以嘗試檢查您的 HTML 內容和附件的電子郵件。


          您剛剛閱讀了關于如何使用 Ruby 測試和發送電子郵件的完整教程。希望您喜歡!

          PI

          來源:快舔包我很肥

          框架

          • NancyFx:輕量、用于構建 HTTP 基礎服務的非正式(low-ceremony)框架,基于.Net 及 Mono 平臺。
          • ASP.NET WebAPI:快捷創建 HTTP 服務的框架,可以廣泛用于多種不同的客戶端,包括瀏覽器和移動設備。
          • ServiceStack:架構縝密、速度飛快、令人愉悅的 web 服務。
          • Nelibur:Nelibur 是一個使用純 WCF 構建的基于消息的 web 服務框架。Nelibur 可以便捷地創建高性能、基于消息的 web 服務,使得你全面擁有 WCF 的強大能力。


          WebAPI Contrib:幫助你提高 ASP.NET Web API 能力的開源項目集合。

          應用框架(Application Frameworks)

          • ASP.NET Boilerplate:現代 ASP.NET MVC web 應用程序的入門,包含最佳實踐和最流行的工具。
          • Orleans:Orleans 框架提供了直接構建分布式、大規模計算應用的方法,無需學習和使用復雜的并行或擴展模型。
          • CoreFX:corefx 倉庫包含了 .NET 核心功能庫的實現(被稱為“CoreFX”)。包含了 System.Collections、System.IO、System.Xml 以及諸多其它組件。目前構建并運行于 Windows 平臺。你可以關注這個倉庫,了解在未來的幾個月內即將增加的對 Linux 和 Mac 的支持。
          • CSLA .NET:業務層開發框架 http://www.cslanet.com。
          • Mono:Mono 是 ECMA CLI、C# 以及 .NET 的開源實現。
          • Mono-Addins:Mono.Addins 是一個通用框架,用于創建可擴展的應用程序,以及這些應用程序的擴展插件。
          • Spring.Net:Spring.NET 是一個開源的應用程序框架,可以便捷地創建企業級 .NET 項目。


          應用模板(Application Templates)

          • MVC.Template:ASP.NET MVC 5 入門項目模板。
          • ProjectScaffold:F# 基金會推薦的 .NET 解決方案的原型——包括文件系統的搭建、用于管理依賴的 Paket 以及用于自動化構建、測試的 FAKE。默認情況下,構建流程也會對文檔進行編譯,并生成 NuGet 程序包。
          • Side-Waffle :包含大量有用的 Web 和桌面開發模板。Side-Waffle
          • Template10 :帶有設計模式的 Windows 10 模板。Template10


          人工智能(Artificial Intelligence)

          • AIMLBot(Program#):使用 C# 編寫的一個小型、快速、兼容標準、易于定制的聊天機器人,基于 AIML (人工智能標記語言 Artificial Intelligence Markup Language)。
          • SIML:智能綜合智能標記語言(Synthetic Intelligence Markup Language),下一代聊天機器人及數字助手語言。


          程序集處理(Assembly Manipulation)

          • dnSpy:dnSpy 是一個 .NET 程序集編輯器、反編譯器和調試器,來自 ILSpy 分支。
          • Fody:織入(weaving).net 程序集的可擴展工具。
          • Mono.Cecil:Cecil 類庫用于生成和檢查 ECMA CIL 程序和庫。


          資源(Assets)

          • Cassette:管理 .NET web 應用程序資源(腳本、css 和 模板)Cassette
          • NodeAssets:.net 資源管理器,通過 SignalR 實時更新 css,也可以使用 NodeJS 編譯器。
          • Bundler:編譯和最小化 Less、Sass、Stylus、Css、JS、CoffeeScript、LiveScript 文件。MVC集成了 MVC 和 ServiceStack。
          • ClientDependency:壓縮CSS與JS,提供WebForm與MVC版本。
          • SquishIt:讓你輕松合并一些 css 和 javascript。


          認證和授權(Authentication and Authorization)

          • ASP.NET Identity:用于 ASP.NET 應用程序的新身份系統。
          • DotNetOpenAuth:OpenID、OAuth 和 InfoCard 協議的一個 C# 實現。


          • Logibit Hawk:一個 F# Hawk 認證庫。


          • IdentityModel:.NET 4.5 和 MVC4、Web API 身份和訪問控制的輔助庫。
          • IdentityServer:可擴展的 OAuth2 和 OpenID 連接提供程序框架。
          • OAuth:超輕量級 OAuth 1.0a 簽名生成庫,C# 編寫。


          自動構建(Build Automation)

          • Psake:基于 .NET 的自動化構建工具,使用 PowerShell 編寫。
          • FAKE:F# Make,一個跨平臺自動構建系統。
          • Invoke-Build:PowerShell 自動構建和測試工具,靈感來自 Psake。
          • MSBuild:微軟構建引擎(MSBuild)是 .NET 和 Visual Studio 的構建平臺。
          • Cake:Cake(C# Make)使用 C# DSL 的跨平臺自動構建系統。


          緩存(Caching)

          • CacheCow:ASP.NET Web API HTTP 客戶端和服務器端緩存實現。
          • Akavache:一個異步、持久化的鍵值存儲。
          • CacheManager:是用C#為.NET寫的緩存管理抽象層,支持多種緩存工具,可以實現層次化的緩存。


          CLI

          • Command Line Parser:Command Line Parser 類庫為 CLR 應用程序提供了一套簡潔的 API,用于處理命令行參數及相關任務。
          • Fluent Command Line Parser:一個簡單、強類型的 .NET C# 命令行解析庫,交互方式流暢易用。
          • Power Args:PowerArgs 將命令行參數轉換為 .NET 對象,便于程序使用。它還提供了大量可選的擴展,例如參數校驗、自動生成使用幫助、tab 補全等等。
          • UnionArgParser:針對 F# 應用程序的聲明式 CLI 參數和 XML 配置解析器。


          CLR

          • CoreCLR:coreclr repo 包含了完整的 .NET 核心運行時實現(稱為“CoreCLR”)。它包括 RyuJIT、.NET GC、非托管代碼交互(native interop)等諸多組件。它目前構建和運行于 Windows 平臺。你可以關注這個倉庫,了解未來的幾個月內即將增加的對 Linux 和 Mac 的支持。


          CMS

          • Composite C1:一個 web 內容管理系統,著重在用戶體驗及適應性。
          • mojoPortal:MojoPortal 是一個可擴展、跨數據庫、移動友好的 web 內容管理系統(CMS)和 web 應用程序框架,使用 C# ASP.NET 編寫。
          • N2CMS:開源、輕量、代碼優先的 CMS,可以無縫地集成到任何 MVC 項目中。
          • Orchard:免費、開源、專注社區的項目,目標是在 ASP.NET 平臺上提供應用程序和可重用組件。
          • Piranha CMS:Piranha 是一個有趣、快速、輕量級的 .NET 框架,用于開發基于 cms 附帶其它功能的 web 應用程序。它基于 ASP.NET MVC 和 Web 頁面創建,完全兼容 Visual Studio 和 WebMatrix。
          • Umbraco:Umbraco 是一個免費開源的內容管理系統,基于 ASP.NET 平臺構建。


          代碼分析和度量(Code Analysis and Metrics)

          • CodeMaid:Visual studio 擴展,用于清理、挖掘和簡化 C#、C++、F#、VB、PHP、JSON、XAML、XML、ASP、HTML、CSS、LESS、SCSS、JavaScript 和 TypeScript 代碼。
          • StyleCop:StyleCop 使用一組風格和一致性規則,對 C# 源代碼進行分析和強制性檢查。
          • Gendarme:可擴展的、基于規則的工具,用于在 .NET 應用程序和類庫中查找問題。
          • Metrics-Net:捕獲 CLR 和應用程序級別的度量值。所以你知道它的功能。


          編譯器(Compiler)

          • Bridge.NET:將 C# 編譯成 JavaScript 的開源編譯器 http://bridge.net/。
          • ClojureCLR:從 Clojure 到 CLR 的轉換,是 Clojure 項目的一部分。
          • F#:F# 編譯器、核心庫和工具——更安全、更快、代碼更好的函數式編程語言。
          • FunScript:F# 到 JavaScript 的編譯器,可以通過 TypeScript 類型提供程序使用 JQuery 等 JavaScript 庫。
          • JSIL:CIL 到 Javascript 的編譯器 http://jsil.org/。
          • Mono-basic:Visual Basic 編譯器和運行時。
          • Nemerle:Nemerle 是一個 .NET 平臺高級靜態類型編程語言。它提供函數式、面向對象式和命令式編程語言的特性。它擁有一個簡單的類似 C# 的語法和強大的元編程(meta-programming)系統。
          • Netjs:.NET 到 TypeScript 和 JavaScript 編譯器。兼容可移植類庫。你甚至可以使用 EXE 文件。
          • Roslyn:.NET 編譯平臺(“Roslyn”)提供開源的 C# 和 Visual Basic 編譯器,包含豐富的代碼分析 API。它可以使用和 Visual Studio 一樣的 API 來構建代碼分析工具。
          • VisualFSharp:Visual F# 編譯器和工具。


          壓縮(Compression)

          • SharpCompress:SharpCompress 是一個用于 .NET、Mono、Silverlight、WP7 的壓縮類庫,可以解壓rar、7zip、zip、tar、bzip2 和 gzip,提供單向讀取和隨機文件訪問 API。支持對 zip/tar/bzip2/gzip 進行寫入的實現。
          • DotNetZip.Semverd:一個開源項目,提供對 ZIP 文件處理的 .NET 類庫和相關工具。 (分支自 已經不再維護的DotNetZip)DotNetZip.Semverd
          • SharpZipLib:一個 Zip、GZip、Tar 和 BZip2 的類庫,完全由 C# 編寫,面向 .NET 平臺。


          持續集成(Continuous Integration)

          • TeamCity:可以直接使用的,可擴展、面向開發人員友好的構建服務器——開箱即用。
          • CruiseControl.NET:一個自動化持續集成服務器,使用 .NET Framework 實現。
          • MyGet:為NuGet、NPM、Bower 和 VSIX 提供持續集成、部署、宿主程序包倉庫的服務。
          • AppVeyor:.NET 持續構建和部署服務。


          加密(Cryptography)

          • BouncyCastle:和 .Net 的 System.Security.Cryptography 一起,在 CLR 上提供加密算法的實現。
          • HashLib:HashLib 包含了幾乎所有你見過的哈希算法,它幾乎支持所有東西并且非常容易使用。
          • libsodium-net:libsodium for .NET——一個安全加密庫。
          • StreamCryptor:使用 libsodium 和 protobuf 對流進行加密和解密。


          數據庫(Database)

          • BrightstarDb:BrightstarDB 是一個原生的 .NET RDF 三元組數據庫(triple store)。
          • Event Store:開源的功能性數據庫,支持使用 JavaScript 進行復雜事件處理。 https://geteventstore.com
          • LiteDB:一個 .NET 的 NoSQL 單文件文檔數據庫。
          • RavenDB:支持 linq 的 .NET 文檔數據庫。


          數據庫驅動(Database Drivers)

          • MySQL Connector:完全托管的 MySQL ADO.NET 數據庫提供程序、連接器。
          • Npgsql:Postgresql 的 .Net 數據提供程序。
          • MongoDB:MongoDB 官方 C# 驅動。
          • ServiceStack Redis:.NET 領先的 C# Redis 客戶端。
          • StackExchange Redis:來自 StackExchange 的通用 redis 客戶端。
          • Cassandra:DataStax 開發的 Apache Cassandra .NET 驅動程序。
          • Couchbase:couchbase 官方 .NET 客戶端庫,基于 Enyim memcached 客戶端。
          • Firebird.NET:由C# 編寫的 .NET 數據提供程序,提供對 Firebird API 的高性能原生實現。


          反編譯(Decompilation)

          • ILSpy:ILSpy 是一個開源的 .NET 程序集查看器和反編譯器。
          • JustDecompile Engine:JustDecompile 反編譯引擎。
          • de4dot:是一款強大的.NET程序集反混淆和脫殼工具(開源GPLv3)。


          部署(Deployment)

          • Unfold:基于 Powershell 的 .net web 應用程序部署解決方案。


          DirectX

          • SlimDX:為 .NET 應用程序提供的 DirectX 封裝。
          • SharpDX:SharpDX 是一個開源項目,為 .Net 及所有 Windows 平臺提供完整的 DirectX API,可以開發高性能的游戲、2D/3D圖形渲染以及實時音頻應用程序。


          分布式計算(Distributed Computing)

          • Project Orleans:Orleans 框架提供了直接構建分布式、大規模計算應用的方法,無需學習和使用復雜的并行或擴展模型。由微軟研究院開發。
          • Akka.net:Akka.NET 是流行的 Java/Scala 框架 Akka 的 .NET 版本。它由社區提供,與 Typesafe(原始的 Java、Scala 版本的開發商)無關。


          文檔(Documentation)

          • Sandcastle:Sandcastle 幫助文件生成器和 NDoc 類似。
          • SharpDox:一個 c# 文檔工具。
          • Swashbuckle:向 WebApi 項目無縫地添加 swagger 文檔(譯者注:swagger 是一套用于生成、描述、展現 RESTful 風格 web 服務文檔的框架和規范)。
          • NSwag:通過Swagger規范生成.NET、TypeScript的Web API客戶端。
          • F# Formatting:F# 和 C# 項目的文檔工具,文檔生成自 F# 腳本文件、Markdown 文檔、內嵌 XML 或 Markdown評論。


          電子商務和支付(E-Commerce and Payments)

          • Paypal Merchant SDK:Paypal Merchant官方.NET SDK。
          • NopCommerce:nopCommerce。開源的電子商務購物車(ASP.NET MVC)。


          • ServiceStack.Stripe:針對 stripe.com REST API 的強類型 .NET 客戶端。


          • SmartStoreNET:免費 ASP.NET MVC 電子商務購物車解決方案。


          • Stripe.Net:Stripe.net 是針對 http://stripe.com 完整服務的 .net api。


          • BeYourMarket:BeYourMarket 是一個點對點的市場框架。


          • Virto Commerce:Virto Commerce 是第二個版本,也是唯一的開源許可下的企業級別電子商務產品。Virto Commerce 基于 .NET 4.5,使用了 MVC、IoC、EF、Azure、Angular JS 等其他先進技術。它可以在微軟的云平臺(Azure)、亞馬遜云服務(AWS)和企業內部部署。


          環境管理(Environment Management)

          • DNVM:.NET SDK 管理器,一組命令行工具,用于更新和配置需要使用的運行時環境(DNX)。


          ETL

          • Reactive ETL:Reactive ETL 使用 .NET 反應性擴展框架(reactive extensions) 重寫了 Rhino ETL。


          游戲(Game)

          • MonoGame:一個用來創建跨平臺游戲的強大框架。
          • CocosSharp:CocosSharp 是 Cocos2D 和 Cocos3D API 的 C# 實現版本,可以在所有支持 MonoGame 的平臺上運行。
          • Duality:Duality 是一個 2D 游戲開發框架。專注于功能的模塊化,自帶一個可視化編輯器。
          • Paradox:Paradox 游戲引擎。


          地理信息系統(Gis)

          • NetTopologySuite:一個 在 .NET 平臺上實現快速、可靠的 GIS 系統解決方案。
          • SharpMap:一個易于使用的地圖庫,可以用于 web 和桌面應用程序。


          Git工具(Git Tools)

          • Bonobo Git Server:Bonobo Git Server for Windows 是一個 web 應用程序,可以安裝在你自己的 IIS 上,用于管理和連接你的 git 倉庫。
          • GitExtensions:GitExtensions 包含資源管理器擴展、Visual Studio 2008/2010/2012/2013 插件和一個獨立的 Git 倉庫工具。
          • GitLink:讓用戶可以單步調試托管在 GitHub 或 BitBucket 上的代碼。
          • GitVersion:根據你的 Git 倉庫的狀態生成一個語義化版本號(Semantic Version Number)。
          • LibGit2Sharp:LibGit2Sharp 帶來了 libgit2 所有的功能和速度,是一個本地 Git 實現,可以運行在 .Net 和 Mono 平臺。
          • NGit:NGit 是 JGit 移植到 C# 的版本。
          • posh-git:Git 的 PowerShell 環境。


          圖形(Graphics)

          • Oxyplot:OxyPlot 是一個 .NET 跨平臺繪圖庫。
          • OpenTK:Open Toolkit 是一個封裝了 OpenGL、OpenCL 和 OpenAL 的 高級底層 C# 開發庫。
          • NGraphics:NGraphics 是一個 .NET 跨平臺矢量圖形渲染庫。


          GUI

          • MahApps.Metro:用于創建 Metro 風格 WPF 應用的工具箱。
          • Callisto:用于 Windows 8 XAML 應用的控件工具箱。包含若干 UI 控件,讓你更容易地創建符合 Windows UI 風格規范的Windows 商店應用。
          • ObjectListView:ObjectListView 使用 C# 封裝了 .NET 的 ListView 控件。它使得 ListView 更加易用,并且加入了一些新特性。
          • DockPanelSuite:靈感來自 Visual Studio 的停靠窗口(docking)類庫,用于 .NET WinForm 應用。
          • AvalonEdit:在 SharpDevelop 中使用,基于 WPF 的文本編輯器組件。
          • XWT:跨平臺 UI 工具箱,用于創建 .NET 和 Mono 桌面應用程序。
          • Gtk#:Gtk# 是 Gtk+ GUI 工具箱的 Mono/.NET 版本,絕大多數 Mono 中的 GUI 應用都基于它構建。
          • MaterialDesignInXamlToolkit:用于創建 Material Design 風格 WPF 應用的工具箱。
          • Eto.Forms:跨平臺的 GUI 框架,用于 .NET 和 Mono 下的桌面和移動應用程序。
          • Dragablz:可拖拽、可分離(tearable,譯者注:即拖拽標簽頁成為獨立窗口)的 WPF 標簽頁控件(類似 Chrome)。支持布局和主題,包含兼容 MahApps 和 Material Design 的主題。
          • Fluent.Ribbon:Fluent Ribbon Control Suite 是一個在 WPF 中實現 Office 和 Windows 8 風格的 Ribbon 庫。


          HTML 和 CSS(HTML and CSS)

          • AngleSharp:支持構建完整的 HTML5 DOM 和 CSS3 模型。
          • CsQuery:jQuery 風格的HTML5 解析器,可與 DOM 交互。
          • dotless:ruby Less CSS 庫的 .NET 移植版本。
          • ExCSS:C# 的 CSS3 解析器開發庫。
          • FluentBootstrap:讓ASP.NET MVC 和 WebPages 更容易使用 Boostrap CSS 框架。
          • HtmlAgilityPack:一個靈活的 HTML 解析器,可以對 DOM 進行讀寫,支持 XPATH 和 XSLT。
          • Jumony:類似HtmlAgilityPack框架,性能有改善。


          HTTP

          • Http.fs:[F#] 中的一個函數式 HTTP 客戶端。
          • RestSharp:.NET 下簡單的 REST 和 HTTP API 協議客戶端。
          • EasyHttp:C# Http開發庫。
          • Refit:Xamarin 和 .NET 下自動生成強類型的 REST 庫。
          • RestEase:類型安全且易于使用的 REST API 客戶端庫,簡單可定制。大部分靈感來自 Refit。


          IDE

          • SharpDevelop:用于 .NET 編程語言的免費 IDE。
          • MonoDevelop:MonoDevelop 是一個跨平臺的 IDE,主要面向 Mono/.NET 開發者。
          • Visual Studio Express:用于 .NET 開發的免費、輕量版本的 Visual Studio。
          • Visual Studio Community:功能完整的免費 IDE。
          • Waf DotNetPad:簡單快速的代碼編輯器,讓開發 C# 或 Visual Basic 充滿樂趣。
          • Visual Studio Code:非常棒的編輯器,來自微軟,基于 GitHub Atom。


          • Rider:跨平臺.Net IDE。


          圖像處理(Image Processing)

          • ImageResizer:在圖片 URL 后面增加命令,在幾毫秒內獲取修改后的版本,支持實時的對圖片進行縮放、編輯。
          • ImageProcessor:開源 .NET 庫,用于實時處理圖片。
          • DynamicImage:高性能開源圖片處理庫,用于 ASP.NET。
          • MetadataExtractor:從圖片中提取 Exif、IPTC、XMP、ICC 等其它元數據信息。
          • Emgu CV:OpenCV 的 .NET 跨平臺封裝。


          安裝工具(Install Tools)

          • Wix Toolset:強大的工具集,用于創建你自己的 Windows 安裝程序。
          • Squirrel:Squirrel 即是一套工具也是一個類庫,可以無安全管理 Windows 桌面程序的安裝和更新。


          國際化(Internationalization)

          • i18n:ASP.NET MVC 智能國際化工具。


          互操作(Interoperability)

          • CefSharp:Chromium Embedded Framework 的 .NET 支持(WPF 和 WinForm)。
          • CppSharp:在 C# 中平滑使用 C++ API 的工具。
          • Sharpen:Sharpen 是 db4o 編寫的 Eclipse 插件,可以讓你把 Java 項目轉換為 C#。
          • CXXI:C++ 互操作框架。


          IoC

          • Castle Windsor:Castle Windsor 是一個用于 .NET 和 Silverlight 的成熟的 控制反轉(IoC) 容器。
          • Unity:輕量級、可擴展的依賴注入容器,支持構造函數、屬性和方法調用注入。
          • Autofac:令人著迷的 .NET IoC 容器。
          • Ninject:.net 依賴注入的忍者。
          • StructureMap:.Net 最早的 IoC/ID 容器。
          • Spring.Net:Spring.NET 是一個開源應用程序框架,可以便捷地創建企業級 .NET 應用。
          • LightInject:一個超輕量級 IoC 容器。
          • TinyIoC:單文件、簡單、跨平臺的 IoC 容器。


          日志(Logging)

          • Essential Diagnostics:為內置System.Diagnostics 命名空間擴展功能,提供更靈活的日志功能。
          • NLog:先進的 .NET 和 Silverlight 日志工具。
          • ELMAH:ELMAH 官方網站。
          • Elmah MVC:MVC 版 Elmah。
          • Logary:Logary 是一個 mono 和 .Net 平臺下高性能、多目標的日志、度量、追蹤和健康檢查庫。支持多目標,為微服務構建。
          • Log4Net:Apache log4net 工具庫能夠幫助程序員向多種不同的目標輸出日志語句。
          • Serilog:一個 NoSQL 時代下簡單直接的日志庫。將多個優秀的傳統結構化分析日志功能合并到一個易于使用的程序集中。
          • StackExchange.Exceptional:Stack Exchange 網絡使用的錯誤處理程序。
          • Semantic Logging Application Block (SLAB):為內置
          • System.Diagnostics.Tracing 命名空間(EventSource類)擴展功能,支持將日志記錄到多個容器中,包括 Azure 表存儲、數據庫、文件(JSON、XML、文本文件)。通過 ETW 支持進程內和進程外的日志記錄,支持 Rx 進行實時的事件過濾和聚合。
          • Exceptionless:一個免費開源分布式系統的日志收集框架,它可以應用在基于 ASP.NET,ASP.NET Core,Web Api,Web Forms,WPF,Console,MVC 等技術棧的應用程序中,并且提供了Rest接口可以應用在 Javascript,Node.js 中。


          機器學習和數據科學(Machine Learning and Data Science)

          • Accord.NET:機器學習框架,包含了音頻和圖像處理的庫(計算機視覺、計算機聽覺、信號處理和統計)。
          • Accord.NET Extensions:高級圖像處理和計算機視覺算法擴展。
          • AForge.NET:為計算機視覺和人工智能領域的開發者和研究人員提供的框架(包括圖像處理、神經網絡、遺傳算法、機器學習、機器人科學)。
          • Deedle:處理探索性數據的數據幀和時序庫,支持 C# 和 F#。
          • FsLab:數據科學和機器學習庫的集合,支持 F# 和 .NET。
          • numl:包含最流行的監督學習和無監督學習算法,盡量減少創建預測模型時的沖突。
          • R Provider:將 R 語言包和函數封裝為類型安全的類型提供程序供 F# 調用。
          • F# Data:F# 類型提供程序,訪問 XML、JSON、CSV 和 HTML 文件(基于樣例文檔),以及 WorldBank 數據。


          Markdown 處理(Markdown Processors)

          • MarkdownSharp:C# 實現的開源 Markdown 處理器,在 Stack Overflow 中使用。
          • F# Formatting:用于生成 F# 和 C# 項目文檔的工具。該工具庫的核心組件中包含了可擴展的 Markdown 解析器。
          • CommonMark.NET:CommonMark 規范的 C# 實現,用于將 Markdown 文檔轉換為 HTML。為最佳性能和可移植性進行了優化。


          郵件(Mail)

          • FluentEmail:System.Net.Mail 的一個流式(Fluent)封裝,支持 razor 模板引擎。
          • MailKit:完整的跨平臺的郵件協議棧,包括 IMAP、POP3、SMTP,支持驗證等特性。基于 MimeKit 構建。
          • MimeKit:跨平臺 .NET MIME 創建和解析庫,支持 S/MIME、PGP、TNEF 和 Unix mbox spools。
          • PreMailer.Net:一個 C# 開發庫,將你的樣式表嵌入到內置的 style 屬性中,最大限度支持郵件客戶端。


          數學(Mathematics)

          • MathNet:Math.NET 是一個開源項目,旨在創建和維護涵蓋基礎數學在內的工具集,面向高級和日常需要使用此類功能的 .Net 開發人員。


          多媒體(Media)

          • TagLib#:TagLib#(即 taglib-sharp)是一個讀寫媒體文件元數據的庫,支持視頻、音頻和照片格式。


          度量(Metrics)

          • C# StatsD Client:Etsy StatsD 服務器的 C# 客戶端。
          • App Metrics:開源跨平臺 .NET 報表度量開發庫。


          微框架(Micro Framework)

          • .NET Micro Framework Interpreter:Microsoft? .NET Micro Framework(NETMF)是一個在 Visual Studio 中提供為小型設備上編寫嵌入式應用的框架。


          雜項(Misc)

          • .NET Fiddle:在瀏覽器中編寫、編譯并運行 C# 代碼。相當于 C# 版本的 JSFiddle。
          • AzureCrawler:從 Angular、Ember、Durandal 或任何 JavaScript 應用中獲取 HTML 快照。
          • BitSharp:C# 比特幣節點。
          • CSScript:CS-Script 是一個基于 CLR 的腳本系統,使用 C# 作為編程語言。CS-Script 目前針對微軟的 CLR 實現(.NET 2.0/3.0/3.5/4.0/4.5)并完整支持 Mono。附帶很多附加特性,比如腳本宿主。


          • CsvHelper:幫助讀寫 CSV 文件的開發庫。


          • FluentValidation:一個小型的 .NET 校驗庫,使用流式接口和 lambda 表達式構建校驗規則。
          • Humanizer:Humanizer 能夠在 .NET 平臺上滿足所有針對字符串、枚舉、日期、時間、時間范圍、數字等類型數據的操作和顯示要求。
          • LINQPad:一個 C#/VB/F# 的便簽本,能夠立即執行任何表達式、語句塊或程序,帶有富文本顯示等有用的特性。同樣可以讓你使用 LINQ 進行交互性數據庫查詢。 [$](譯者注:也有免費許可,但是功能受限)。
          • Polly:快捷便利的異常處理策略,例如 重試、始終重試、等待并重試或斷路(Circuit Break)等行為。 (.NET 3.5、4.0、4.5、PCL、Xamarin)
          • Rant:Rant 程序文本生成 DSL(領域特定語言)。


          • ScriptCS:使用文本編輯器、nuget 和強大的 Roslyn 來編寫 C# 應用!
          • EntityFramework-Plus:Entity Framework 擴展,提供工具類、Bulk 操作、批處理/批量更新、查詢緩存/過濾器/Future、審計等功能。


          MVVM

          • Caliburn.Micro:小型但功能強大的框架,可以用來給所有 XAML 平臺創建應用。它對 MV* 模式的強大支持可以讓你快速構建你的解決方案,與此同時不必犧牲代碼質量和可測試能力。
          • MVVM Light Toolkit:該工具箱主要是用來加速創建和開發 MVVM 應用,適用于 WPF、Silverlight、Windows Store(RT)和 Windows Phone 平臺。
          • Catel:Catel 是一個應用開發平臺,主要著眼在 MVVM(WPF、Silverlight、Windows Phone 及 WinRT)以及 MVC(ASP.NET MVC)。Catel 的核心部分包含 IoC 容器、模型、校驗、備忘錄模式(memento)、消息中介(message mediator)、參數檢查等。
          • UpdateControls:Update Controls 不需要你實現 INotifyPropertyChanged 接口或聲明一個 DependencyProperty。可以將控件直接關聯到 CLR 屬性,這使得它完美貼合 MVVM 模式。
          • ReactiveUI:一個 .NET 下的 MVVM 框架,集成了反應性擴展框架(Rx),允許開發者使用 WPF、Windows Store Apps、WP8 或 Xamarin 創建優雅的、可測試的應用。
          • Okra App Framework:一個以 app 為中心的 Windows 8.1 MVVM 框架,融合依賴注入,包含一套完整的 Visual Studio MVVM 模板。
          • WPF Application Framework (WAF):一個輕量級的框架,能夠幫助你創建結構優雅的 WPF 應用。支持你使用分層架構和 MVVM 模式。
          • MVVMCross:跨平臺mvvm 移動開發框架,針對 WP7 和 WP8 的 WPF/Silverlight、Android 的 Mono、iOS 的 MonoTouch 以及 WPA8.1/Windows 8.1 商店應用的 Windows Universal 項目。它使用可移植類庫(PCL)來支持可維護的跨平臺 C# 原生應用。
          • Stylet:最小化 MVVM 框架(參考 Caliburn Micro),包含了良好的文檔、高覆蓋率的測試以及自帶的 IoC 容器。
          • Gemini:類似 Visual Studio Shell 的 IDE 框架。基于 WPF、AvalonDock 和 Caliburn Micro 構建。


          Office

          • ClosedXML:ClosedXML 能夠讓開發人員更便捷地創建 Excel 2007、2010 文件。
          • NPOI:該項目是 .NET 版本的 POI 項目,原始的 Java 版本位于http://poi.apache.org/ 。
          • EPPlus:EPPlus 是一個 .net 類庫,用于讀寫 Open Office Xml 格式的 Excel 2007、2010 文件(xlsx)。
          • Open XML SDK:Open XML SDK 是一個開源庫,用于處理 Open XML 文檔(包括 DOCX、XLSX 和 PPTX)。


          ORM

          • Entity Framework:對象關系映射器(ORM)框架,讓 .NET 開發人員使用領域特定的對象來處理關系型數據。
          • BL Toolkit:.NET 平臺的業務邏輯工具箱。
          • Dapper:一個超小型、快捷輕便的 ORM 框架。
          • Dapper Extensions:小型類庫,對 Dapper 的功能進行補充,為你的簡單傳統 CLR 對象提供基礎的 CRUD(Get、Insert、Update、Delete) 操作。
          • NHibernate:NHibernate 對象關系映射器(移植自 Java 平臺的 Hibernate)。
          • Fluent NHibernate:便捷、無需使用 XML、編譯安全、自動化、基于約定命名的 NHibernate 映射庫。
          • FluentMigrator:.net 下的便捷的遷移框架。
          • ServiceStack.OrmLite:輕量、簡單、快速、基于命名約定的 POCO ORM。


          • Massive:小型、令人愉悅的數據訪問工具,始終關愛你直到永遠。


          • LINQ to DB:最快的 LINQ 數據庫訪問庫,簡單、輕量、快速、類型安全,在你的對象(POCO)和數據庫之間搭建橋梁。


          包管理(Package Management)

          • NuGet:.NET 包管理器。
          • MyGet:為 NuGet、NPM、Bower 和 VSIX 提供程序包倉庫宿主,同樣提供 CI 服務。
          • Paket:.NET 的一個包依賴管理器,支持 NuGet 包和 GitHub 倉庫。


          PDF

          • ITextSharp:iText 是一個PDF庫,用于創建、修改、檢查和維護 Portable Document Format(PDF)格式的文檔 [$] 開源軟件免費


          Profiler

          • MiniProfiler:一個簡單但有效的小型 profiler,用于 ASP.NET 網站。
          • Glimpse:開源 web 診斷平臺。


          推送通知(Push Notifications)

          • PushSharp:服務器端的推送通知類庫,支持 iOS、OSX、Android、Chrome、Windows Phone、Windows 8、Backberry 和 Amazon 設備。


          隊列(Queue)

          • NServiceBus:.NET 平臺下最流行的服務總線。
          • RabbitMQ.NET:AMQP 客戶端的 C# 實現,通過 WCF 綁定到已有的 AMQP 服務。
          • NetMQ:NetMQ 是 ZeroMQ 純 C# 移植版本。
          • MassTransit:MassTransit 是一個精簡服務總線(lean service bus)的實現,使用 .NET Framework 來構建松耦合應用程序。
          • Rebus:Rebus 是一個 .NET 平臺的精簡服務總線和 NServiceBus、MassTransit類似,只不過更加精簡。
          • EasyNetQ:易于使用的 RabbitMQ .NET API。
          • Warewolf ESB:易于使用的服務總線和微服務平臺,可以在一個可視化 IDE 中便捷的創建應用和服務。
          • CAP:用于處理分布式事務的 .Net 標準開發庫。支持 EventBus,輕量級、高效且易于使用。


          響應式編程(Reactive Programming)

          • Rx.NET:Reactive Extensions (Rx)庫使用觀察者序列(observable sequences)和 LINQ 風格的查詢操作,來進行異步和基于事件的程序開發。
          • Dynamic Data:用于集合的響應式編程框架。


          計劃調度(Scheduling)

          • QuartzNet:Quartz 是 .NET 平臺的企業級調度器。
          • Hangfire:在 ASP.NET 應用中,超簡單地實現自主引導(fire-and-forget)、延遲和周期重復任務。高級版需要收費。
          • Hangfire.Redis.StackExchange:Hangfire的redis擴展庫,基于StackExchange.Redis的開源實現。
          • Azure WebJobs:Azure WebJobs 是Azure中App Services一個附屬服務,為Azure中運行的Web App提供后臺運行環境(支持多種語言編寫Job),有.NET的SDK開源,并且可以直接添加擴展也開源。


          SDK 和 API 客戶端(SDK and API Clients)

          • AWS SDK:AWS SDK for .NET 讓 .NET 開發者可以便捷地操作 Amazon Web Services。
          • Azure PowerShell:一組 PowerShell 命令行,讓開發者和管理員開發、部署和管理 Microsoft Azure 應用。
          • Octokit.NET:.NET 平臺下的 GitHub API 客戶端庫。
          • DropNet:Dropbox API 客戶端開發庫。


          搜索(Search)

          • Elasticsearch .NET:Elasticsearch.Net & NEST。
          • PlainElastic.Net:ElasticSearch 的一個簡單的 .Net 客戶端。
          • SolrNet:.Net 平臺下的 Solr 客戶端。
          • Lucene.net:Lucene.Net 是 Lucene 搜索引擎庫的移植,使用 C# 編寫,面向 .NET 環境的用戶。


          序列化(Serialization)

          • Protobuf.NET:Protocol buffers 是 Google 使用的二進制序列化格式,在 Google 數據通訊中大量使用。
          • Json.NET:.NET 平臺下流行的、高性能 JSON 框架。
          • ServiceStack.Text:在 servicestack.net 中使用的 JSON、JSV、CSV 文本序列化器。
          • Msgpack-Cli:MessagePack 的 CLI 實現。
          • Jil:.NET 平臺下快速的 JSON 序列化器,基于 Sigil (在 StackOverflow 中使用)。
          • ProtoBuf:根據 .proto 規范,為 protocol buffer 序列化內容生成 C# 代碼。
          • F# Data:F# 類型提供程序,訪問 XML、JSON、CSV 和 HTML 文件(基于樣例文檔),以及訪問 WorldBank 數據。
          • Bond:跨平臺框架,用于處理系統化(schematized)數據。支持跨平臺的序列化、反序列化,以及強大的通用機制來高效處理數據。


          狀態機(State machines)

          • Stateless:直接使用 .NET 代碼創建一個狀態機和輕量的基于狀態機的工作流。
          • Automatonymous:.Net 平臺的狀態機庫,允許你編寫流式API風格的狀態機。

          靜態網站生成(Static Site Generators)

          • Pretzel:.NET 平臺下的網站生成工具(包含后續的一些功能)。
          • Sandra.Snow:.NET 平臺的靜態網站生成工具,借鑒 Jekyll。
          • Wyam:簡單易用、高度模塊化、擁有強大配置能力的靜態網站生成工具。


          風格指南(Style Guide)

          • C# Style Guide:StackOverflow 上的C#風格指南 Q & A。
          • C# Coding Conventions:MSDN 官方的 C# 代碼約定。


          模板引擎(Template Engine)

          • RazorEngine:基于微軟 Razor 解析器引擎的開源模板引擎。
          • Nustache:無邏輯模板的開源庫。
          • DotLiquid:Ruby Liquid 模板語言的 C# 移植版本。


          測試(Testing)

          • AutoFixture:AutoFixture 是一個用于 .NET 的開源框架,用于簡化單元測試中的設置(Arrange)階段。
          • FakeItEasy:.NET 平臺的一個簡單的 mocking 庫。
          • Fluent Assertions:一組 .NET 擴展方法,可以讓你更自然地指定 TDD 或 BDD 風格測試的期望值。
          • Fuchu:F# 的單元測試庫,通過 tests-as-values 機制讓你更容易創建領域特定語言(DSL)。
          • Machine.Specifications:Machine.Specifications (MSpec)是一個上下文、規范框架,忽略了語言本身的干擾,簡化了測試。
          • Moq:.NET 平臺下最流行和友好的 mocking 框架。
          • NBuilder:快速創建測試對象。
          • NSubstitute:一個友好的 .NET mocking 框架。
          • NUnit
          • Rhino Mocks:.NET 平臺的動態 Mocking 框架。
          • Shouldly:Shouldly 是一個斷言(assertion)框架,主要功能是在斷言失敗時,給出簡單明了并且友好的錯誤信息。
          • SpecFlow:將業務需求綁定到 .Net 代碼。
          • xUnit:xUnit.net 是一個 .NET 平臺下免費、開源、專注社區的單元測試框架。
          • BenchmarkDotNet:功能強大的基礎測試 .NET 開發庫。


          交易(Trading)

          • Lean:Lean 引擎是一個開源的,完全由 C# 托管代碼編寫的交易算法引擎,用于桌面和云端。
          • StockSharp:交易和算法交易(algorithmic trading)的開源平臺(用于股票市場、外匯市場、比特幣和期權交易)。


          Visual Studio 插件(Visual Studio Plugins)

          • Web Essentials:Web Essentials 為 Visual Stduio 擴展了大量的特性,提供了 web 開發人員盼望多年的功能。
          • VsVIM:Visual Studio 中的 VIM。
          • Nuget Package Manager:NuGet 是微軟開發平臺(包括 .NET)的包管理器。
          • SideWaffle:Visual Studio 2012、2013 中的一組項目模板集合,讓 web 開發人員更加輕松。


          • Resharper:Visual Studio 開發人員生產力工具 。


          • Refactoring Essentials:開源 C# 和 VB.NET 重構擴展,包括代碼最佳實踐分析器。


          • CodeContracts:.NET CodeContracts 工具源代碼。


          • Git Diff Margin:在 Visual Studio 滾動條區域實時顯示當前文件在 Git 上的差異。


          • Productivity Power Tools:一組 Visual Studio 專業版(及更高版本)的擴展,用于提高開發人員的生產力。


          Web 框架(Web Frameworks)

          • ASP.NET MVC:ASP.NET 是一個免費的 web 框架,用于創建優秀的 web 站點和應用程序。
          • FubuMVC:.NET 平臺下前端控制器(front-controller)風格的 MVC 框架。


          • NancyFx:在 .Net 和 Mono 平臺上創建 HTTP 服務的一個輕量級、非正式的框架。


          • IISNode:在 IIS 中宿主 NodeJS 應用程序。
          • Suave.IO:一個框架/庫/web 服務器,當你看到你使用優美的 F# 編寫的代碼提前完成了你的項目時,它的存在會讓你喜極而泣。(一個用 F# 編寫 Web 應用的框架和服務器端)


          Web 服務器(Web Servers)

          • EmbedIO:基于 Mono 編寫的跨平臺的 Web 服務器。
          • XSP:Mono 中的 ASP.NET 宿主服務器。該模塊包含了 Apache 模塊、FastCGI 模塊,可以用于掛載到其它 web 服務器或是作為一個測試用的獨立服務器存在(類似微軟的 Cassini 項目)。
          • Jexus:強勁、堅固、免費、易用的Linux ASP.NET服務器。


          WebSocket

          • SignalR:ASP.NET 庫,開發者可以通過它在 web 應用程序中非常簡單地實現實時功能。
          • Fleck:Fleck 是一個 C# 實現的 WebSocket 服務器。分支自 Nugget 項目。
          • Websocket-Sharp:WebSocket 協議的 C# 實現,包含客戶端和服務器端。
          • XSockets:提供了一組工具,可以在微軟 .NET 等平臺上構建一個實時應用程序。
          • WebSocket4NET:.NET 2.0+、Xamarin、Mono、Silverlight、Windows Phone 以及 WinRT 下的 WebSocket 客戶端。
          • SuperSocket:一個輕量級, 跨平臺而且可擴展的 .Net/Mono Socket 服務器程序框架。


          Windows 服務(Windows Services)

          • TopShelf:一個簡單的服務宿主框架,使用 .NET 構建 Windows 服務。


          通訊框架(Communication Frameworks)

          • DotNetty:一個快速開發高性能、高可靠性的非阻塞的事件驅動網絡應用框架。
          • Helios:一套高性能的Socket通信中間件。


          • enode: 一個用來開發DDD、CQRS、EDA 以及事件驅動應用程序的框架。


          其他列表(Other Lists)

          • .NET-libraries-that-make-your-life-easier:開源的 .NET 庫,讓你的生活更加輕松。
          • awesome-LINQ:一組精心挑選的超棒的 LINQ 類庫、工具等。


          看完本文有收獲?請轉發分享給更多人!!!歡迎大家點贊,留言討論,喜歡這篇文章可以分享給更多人,關注我每天更新分享有關程序員、科技、編程之類的文章!!!愛你們,,么么噠,,讓我們一起愉快的玩耍把!!!

          文共5560字,預計學習時長14分鐘


          圖源:unsplash


          在使用Ruby編寫web應用程序時,創始人David HeinemeierHansson說,他只不過是將以往應用程序的通用部分復制粘貼到新程序中。


          包括他在內,所有程序員都喜歡解決難題。嘗試解決工作領域內獨有難題的唯一方法,是構建一個抽象層,并清除腦海中所有關于基礎web程序的細節。使用Rails可以專注解決困難部分,消減重復性工作。Rails命令十分神奇,但我們必須了解每個命令的功能和編寫過程。

          Rails是什么?

          Rails是一種web應用框架。根據模型-視圖-控制器(MVC)模式,它包括了創建數據庫支持的web應用程序時所需的所有內容。MVC將應用分為三層:模型、視圖和控制器,每一層都有特定任務。

          模型-視圖-控制器(MVC)結構示意圖


          模型層

          模型層代表領域模型(如Account、Product、Person、Post等),概述應用程序中特有的業務邏輯。

          在Rails中,數據庫支持的模型類源于 ActiveRecord::Base。Active Record支持用戶將數據庫行的數據表示為對象,并使用業務邏輯方法修飾這些數據對象。大多數Rails模型由數據庫支撐,模型也可以是Ruby普通類或實現由 Active Model模塊提供的一組接口的Ruby類。

          控制層

          控制層的功能在于處理傳入的HTTP請求以及給出適當響應。通常這一層意味著返回HTML,但Rails控制器還可以生成XML、JSON、PDF、移動專用視圖及其他格式。

          控制器加載和操作模型,并呈現視圖模板,以便生成適當的HTTP響應。在Rails中,傳入要求由Action Dispatch發送至相應控制器,控制類來自 ActionController::Base。Action Dispatch和Action Controller一起綁定于Action Pack中。

          圖源:unsplash


          視圖層

          視圖層由“模板”組成,主要負責提供應用程序資源的適當描述。模板可以有多種格式,但大多數視圖模板都是帶有內嵌Ruby代碼的HTML(ERB 文件)。視圖通常生成控制器響應,或生成電子郵件正文。在Rails中,視圖生成由Action View處理。

          開發一款新型Rails應用

          首先從頭構建一個應用程序,這步之前要確保系統內裝有Ruby、RubyGems和Bundler。打開終端導航到一個有權限創建文件的目錄。先要做的是安裝Rails并通過運行railsnew <project name>命令構建一個新型Rails應用程序。

          要從頭開始創建只支持API的Rails,創建時--api應在Rails應用程序名稱之后:railsnew <my_app_name> --database=postgresql --api (使用Postgresql數據庫配置應用程序更為容易,但別忘了在運行命令前安裝這一數據庫)。例如:rails new Gallery --database=postgresql –api。

          通過使用 --api 旗標,Rails能夠刪除許多默認功能和中間件(大多是涉及無用的瀏覽器)。控制器繼承ActionController::API而非ActionController::Base,生成器會跳過生成視圖。為只支持API的Rails構建設置資源無須作任何改變。

          將所有所需gem添加至Gemfile中后開始運行bundle install。

          · 初始化數據庫:rails db:create

          · 運行Rails服務器:rails s

          Rails生成


          Rails團隊的首要目標是高效地構建核心應用程序功能。Rails系統擁有大量生成器,能幫助用戶完成一些手動作業。生成器除了節省時間,還有一些其他優點:

          · 生成器能夠為應用程序測試套件設置基本規格。它們會為用戶提供一些基本例子而非編寫復雜的邏輯測試。

          · 經設置,生成器的運行方式保持不變,這樣便能標準化代碼并幫助用戶更有效地開發,原因在于用戶不必過多擔心手寫代碼時可能會出現的拼寫、語法錯誤或其他相關漏洞。

          · 生成器遵循Rails最佳操作,包括使用RESTful命名模式、刪除重復代碼、使用部分和許多其他最佳類型設計模式。

          然而,某些生成器會創建相當多的代碼。如果不使用某個代碼,它就會造成應用程序代碼不必要的混亂,從而給以后的程序員帶來困擾。所以何時使用生成器最好呢?所有Rails生成器作為命令輸入終端,并遵循下列語法:

          rails generate <name of generator> <options>--no-test-framework


          --no-test-framework 是一個旗標,意在提醒生成器不要為新生成模型和控制器等創建任何測試。當用戶運行自己的Rails應用程序時則不需要旗標,這十分有助于快速建立測試套件。

          為了提高效率,Rails將generate 方法簡化為g,因此上述CLI命令可以簡化為:

          rails g <name of generator> <options>--no-test-framework


          圖源:unsplash


          下列是Rails提供的主要生成器。筆者將分別舉例說明:

          遷移生成器

          Rails有一組遵守規范的優質遷移生成器,能夠有效管理數據庫模式。繪制域模型后可以進行下一步。首先使用案例庫應用程序中的數據庫遷移并更新 painters 表。運用下列命令在表中添加一列,將其命名為portrait:

          railsg migration add_portrait_to_painters portrait:string --no-test-framework


          終端顯示創建了遷移文件20200928055457_add_portrait_to_painters.rb.。由于遷移文件名不得重復,生成器會在文件名前加上時間戳。神奇的事情發生了——打開db/migrat 目錄中創建的文件,它現在應該是這樣:

          class AddPortraitToPainters < ActiveRecord::Migration[6.0]
             def change
               add_column :painters, :portrait,:string
             end
          end


          注意到生成器的作用了嗎?它自動感知到用戶想添加一個新的列,構建了add_column 方法調用。這是如何做到的?

          實踐證明,命名遷移文件的方法至關重要。通過在名稱前加上add_文本,它向遷移生成器發送了一個信號,即這種模式更改的目的是向表中添加一列/多列。

          那么它是如何知道用戶想在哪個表上添加的呢?它將_painters 文本附加到遷移名稱的末尾,以此告訴Rails用戶想更改的表格是 painters 表。最后,通過在命令末尾添加 portrait:string 文本告知生成器新的列的名稱為portrait,數據類型為 string。

          用戶可以通過運行rails db:migrate 更新數據庫模式,該模式也會反映出這次變更。

          刪除列則可以運行另外一個遷移:

          railsg migration remove_portrait_from_painters portrait:string


          如果打開此遷移文件則會看到下列代碼:


          class RemovePortraitToPainters < ActiveRecord::Migration[6.0]
             def change
               remove_column :painters, :portrait,:string
             end
          end

          運行rails db:migrate 后,模式也會得到更新。當需要運行任何未決遷移時可以使用這一命令。

          · railsdb:migrate:reset:它會刪除數據庫信息,在新的數據庫運行遷移并重新加載種子數據。

          · railsdb:seed:將數據從文件:db/seeds.rb加載到數據庫中。這種方法對用Rails項目所需的初始數據填充數據庫十分有用。

          · railsdb:rollback:回滾上次執行的遷移。它會撤銷上一次遷移,接著用戶便可編輯文件并重新運行 rails db:migrate 。注意,進行過程中謹慎使用這一命令,因為它極具破壞性,很有可能造成數據丟失。運行時一定確保自己完全清楚運行后的結果。

          模型生成器

          這是一種經常使用的生成器類型。它適用于編寫創建模型和關聯數據庫表所需的核心代碼,且不會使應用程序過于復雜。一般來說需要模型名稱(單數和首字母大寫)和模型參數。

          接下來為帶有 name、bio和 genre列的Painter 應用程序添加一個新模型,可以通過以下CLI命令使用模型生成器:

          railsg model Painter name:string genre:string bio:text


          如果數據類型為字符串,則不需要在列名后指定類型,因為它是默認數據類型。因此如下:

          railsg model Painter name genre bio:text


          因其水平較高,這一步已經創建了:

          · 添加一個表格和name、genre和 bio列的數據庫遷移

          · 繼承ApplicationRecord (自Rails 5起)的模型文件

          我們接下來創建另一個屬于Painter的模型Painting:

          railsg model Painting name image painter:belongs_to


          切記首先生成具有has_many宏命令的代碼;在運行遷移時只有帶有belongs_to 的代碼有用,否則會得到錯誤代碼:


          ActiveRecord::StatementInvalid:PG::UndefinedTable: ERROR: relation "<some table name>" doesnot exist


          運行這一生成器會創建出一個遷移文件和 Painter 和Painting模型。這一特定的生成器創建了一些具有單命令的不同的功能,且僅用最簡單的代碼就生成出來。接著轉向自己的模型,確保建立適當關系(has_many, belongs_to)。

          下一步是創建一個遷移:rails db:create 和 rails db:migrate來遷移表格。用戶可以在控制臺中測試連接,只需要運行rails c并創建一些新的例子,不論正確與否都可以測試驗證;接下來測試關聯度(如Painter.all.first.painting能夠檢查第一個painter的painting)

          圖源:unsplash


          控制生成器

          運行rails g controller 命令會提供一個控制文件(用于添加適當操作)和相應的視圖文件夾:

          railsg controller paintings


          資源生成器

          如果用戶在在創建API過程中使用前端MVC架構,或只想手動創建視圖,resource生成器是編寫代碼的一個優選。創建Painting資源:

          railsg resource Painting name image painter:belongs_to


          因為沒有為name和image 編寫數據類型,因此默認情況下它是一個字符串。添加 painter:belongs_to 來指定兩個表格的關系,并在paintings表格中設置一列 painter_id。也可以使用 references編寫上述命令(結果一樣):

          railsg resource Painting name image painter:references


          這是為不同模型編寫相同命令的另一個例子:

          railsg resource Answer content correct_answer:boolean question:belongs_to

          憑借生成器,目前的應用程序擁有什么?

          · 一個遷移文件,能夠在生成器中為傳遞給它的屬性創建一個新的數據庫表

          · 繼承ApplicationRecord的模型文件(從Rails 5開始,見上述注意事項)

          · 繼承了ApplicationController的控制器文件

          · 不帶有視圖模板文件的視圖目錄

          · 視圖helper文件

          · 用于該控制器的特定JavaScripts的Coffeescript文件

          · 用于控制器樣式的 scss文件

          · routes.rb文件內的完整資源調用

          resource生成器是一種智能生成器,創建全功能資源所需的一些核心功能,同時不會導致過多代碼膨脹。

          路由

          圖源:unsplash


          最后一項可能不太常見。通常resources:paintings被視作為一個“魔法”路由,它包含在應用程序中執行CRUD所需的全部RESTful路由。那么resources:paintings會轉化成什么?用濾波器運行 rake routes 會比較簡單,這樣就只會呈現paintings的路由:

          rake routes | grep painting


          resources自動創建每個路由并使其對控制器可用。打開paintings_controller.rb文件會很有趣:路由列表中出現的操作都不存在。它創建的代碼非常少,只需添加應用程序需要的功能。


          Scaffold生成器

          rails g scaffold User username:string


          正確的命令可以創建有用的文件,設置路由和宏命令。希望本文能讓你理解Rails的神奇之處,MVC的定義和命令執行。

          留言點贊關注

          我們一起分享AI學習與發展的干貨

          如轉載,請后臺留言,遵守轉載規范


          主站蜘蛛池模板: 男人的天堂精品国产一区| 无码视频一区二区三区在线观看| 国产一区二区三区小向美奈子| 国产美女露脸口爆吞精一区二区| 国产精品一区在线播放| 亚洲熟女少妇一区二区| 色一情一乱一伦一区二区三区日本| 无码人妻精品一区二区三区99性| 国产视频一区二区在线播放| 一区二区三区www| 日本一区免费电影| 国产主播福利一区二区| 亚洲一区二区三区无码国产| 国产成人精品无码一区二区 | 亚洲一区二区三区国产精华液| 无码中文人妻在线一区二区三区| 四虎永久在线精品免费一区二区| 日韩免费无码一区二区三区| 天堂不卡一区二区视频在线观看 | 亚洲一区二区三区在线观看蜜桃 | 日韩视频一区二区在线观看| 无码国产精品一区二区免费vr| 国产在线精品一区二区高清不卡 | 亚洲视频在线观看一区| 熟妇人妻一区二区三区四区| 国产在线一区二区在线视频 | 手机看片一区二区| 99久久国产精品免费一区二区| 一区二区三区免费视频观看| 波多野结衣av高清一区二区三区| 一区二区三区福利| 国产在线视频一区二区三区98| 久久综合九九亚洲一区| 亚洲乱码一区av春药高潮| 亚洲日韩国产欧美一区二区三区 | 日韩免费无码一区二区视频| 麻豆视频一区二区三区| 无码人妻精品一区二区三| 亚洲综合色一区二区三区| 亚洲高清成人一区二区三区| 无码国产精品一区二区免费vr|