Design

Design
asp.net mvc

2017年11月14日 星期二

2017/11/14 近況

因為工作的關系 一直在寫前端,已經好一陣子沒回去碰.Net的東西,也很久沒更新blogger,雖然前端變強了...哈哈,回頭翻發現自己之前寫了很多code 原本要拿來寫文章的都難產了,近期應該會想慢慢再去回顧一下並開始寫一些相關blog.

其實前端我也想寫,不過近期前端各種framework版本變化太快,要寫的話可能就後面再來處理,目前還是想惡補一下.net的部分 很多東西以前寫過 現在想講卻一時沒辦法講出很好的解釋.

其實滿有趣的.前端後端 我到底比較偏好哪邊,我是哪邊都無法割捨
回顧的話自己也算有進步了,更多解釋更多邏輯,現在比較能從以前經驗裡找到答案
我很佩服固定在寫blog的各位微軟MVP始終保持熱情,甚至是當作人生中的一個不可或缺的部分,我想朝著你們邁進,也給自己一個期許.

Mars 
2017/11/14



處理好我們每次的Web Api吧 Web Api Handlers Message

什麼是Handlers Message?
message handler is a class that receives an HTTP request and returns an HTTP response.
Typically, a series of message handlers are chained together. The first handler receives an HTTP request, does some processing, and gives the request to the next handler. At some point, the response is created and goes back up the chain. This pattern is called a delegating handler.

這樣做有什麼好處呢
我們從中處理拿到的資料 或是紀錄我們之間傳輸的值 我們就不必傻傻的在每個controller或是其他地方寫相同的邏輯 這時候我們就可以透過這種方式做處理

簡單說如下圖

public class RequestAndResponseLoggerDelegatingHandler : DelegatingHandler
{
    public IDataAccess Data { get; set; }

    protected override async Task SendAsync(
                            HttpRequestMessage request, 
                                 CancellationToken cancellationToken)
    {
        var started = DateTime.UtcNow;
        var requestContent = await request.Content.ReadAsStringAsync();

        var response = await base.SendAsync(request, cancellationToken);

        var responseContent = await response.Content.ReadAsStringAsync();
        await Log(started, request, response, requestContent, responseContent);
        return response;
    }

    private async Task Log(DateTime start, HttpRequestMessage request, 
                             HttpResponseMessage response, string requestContent, 
                                string responseContent)
    {
        var finished = DateTime.UtcNow;           
        var info = new ApiLogEntry(start, finished, requestContent, responseContent, 
                                        request, response);
        Data.Log(info);
    }
}
最後我們在註冊到我剛剛所寫的方法 當然也可以註冊很多層
public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MessageHandlers.Add(new RequestAndResponseLoggerDelegatingHandler1());
        config.MessageHandlers.Add(new RequestAndResponseLoggerDelegatingHandler2());

        // Other code not shown...
    }
}
或者是我們在WebApiConfig綁定 特定的路徑 這都是不錯的處理方式
public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "Route1",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        config.Routes.MapHttpRoute(
            name: "Route2",
            routeTemplate: "api2/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional },
            constraints: null,
            handler: new MessageHandler2()  // per-route message handler
        );

        config.MessageHandlers.Add(new MessageHandler1());  // global message handler
    }
}
參考連結
https://stackoverflow.com/questions/27176329/web-api-request-content-empty 
https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/http-message-handlers

2017年6月11日 星期日

Google Cloud Platform VM 申請

Google Cloud Platform 也有段時間了,一直沒機會體驗它的強大

手邊剛好想做點東西需要架台虛擬機,但是又不想花錢

Google Cloud Platform 現在提供了一整年免費的試用,還包括註冊送你300美金做使用

根本佛心

就選擇最低效能的機器類型

0.6GB記憶體 1個CPU  每個月大概5塊美金 也夠你用很久了

2017年6月1日 星期四

C# Simple Factory Pattern簡單工廠

之前有提到Interface C#

再來我們進階提到 簡單工廠 這還滿常用到的

主要是建立個類別去負責分配要到哪個工廠做事情

我們可以在主邏輯分配 次要邏輯 要處理的事情

一方面可以增加可讀性 功能也不會雜亂的都寫在一起

2017年5月31日 星期三

C# Email Send SmtpClient

簡單郵件傳輸協定[編輯]

維基百科,自由的百科全書
簡單郵件傳輸協定 (Simple Mail Transfer Protocol, SMTP) 是事實上的在Internet傳輸email的標準。
SMTP是一個相對簡單的基於文字協定。在其之上指定了一條訊息的一個或多個接收者(在大多數情況下被確認是存在的),然後訊息文字會被傳輸。可以很簡單地通過telnet程式來測試一個SMTP伺服器。SMTP使用TCP埠25。要為一個給定的域名決定一個SMTP伺服器,需要使用MX (Mail eXchange) DNS
在八十年代早期SMTP開始被廣泛地使用。當時,它只是作為UUCP的補充,UUCP更適合於處理在間歇連線的機器間傳送郵件。相反,SMTP在傳送和接收的機器在持續連線的網路情況下工作得最好。
Sendmail是最早使用SMTP的郵件傳輸代理之一。到2001年至少有50個程式將SMTP實現為一個用戶端(訊息的傳送者)或一個伺服器(訊息的接收者)。一些其他的流行的SMTP伺服器程式包括了Philip Hazel的exim,IBM的Postfix, D. J. BernsteinQmail,以及Microsoft Exchange Server
由於這個協定開始是基於純ASCII文字的,它在二進位檔案上處理得並不好。諸如MIME的標準被開發來編碼二進位檔案以使其通過SMTP來傳輸。今天,大多數SMTP伺服器都支援8位元MIME擴充功能,它使二進位檔案的傳輸變得幾乎和純文字一樣簡單。
SMTP是一個「推」的協定,它不允許根據需要從遠端伺服器上「拉」來訊息。要做到這點,郵件用戶端必須使用POP3IMAP。另一個SMTP伺服器可以使用ETRN在SMTP上觸發一個傳送。


C# SmtpClient 透過smtp 寄信的功能 詳細功能如下紀錄一下 這邊已Gmail為例
 紀錄一下

2017年5月27日 星期六

Nlog trace code 追蹤你的code

Nlog?

一個非常好用的code trace library 怎樣好用呢
往往我們專案Debug 會去需要看我們的錯誤 localhost Deubg 當然沒什麼問題
但是如果我們網站已經上線或是已經在server的測試階段,我們後端引發前端的錯誤
你很難依照當前頁面去判斷,而且很常就是我localhost 沒問題啊 怎上server 就有問題.
這時候我們就需要去在我們的程式碼加上記錄錯誤訊息的方法 這時候就需要用到我們的nlog
不只記錄exception,你也可以當作操作紀錄去分析client端的操作.
而且我們不只本機可以記錄 還可以連接我們的db 或是連接例如slack,exceptionless

2017年5月26日 星期五

.NET Web API 入門

Web API 介紹
ASP.NET Web API 是一個架構,可輕易建置 HTTP 服務並擴及廣大的用戶端範圍,包括瀏覽器和行動裝置。 ASP.NET Web API 是一個想理平台,用以 .NET Framework 基礎建置 RESTful 應用程式。

至於什麼是RESTful ,我們要REST說起
REST(英文:Representational State Transfer,又稱具象狀態傳輸 or 具象狀態轉化)是Roy Thomas Fielding博士於2000年在他的博士論文[1] 中提出來的一種全球資訊網軟體架構風格,目的是便於不同軟體/程序在網絡(例如網際網路)中互相傳遞信息。

具象狀態傳輸 轉化?? 不禁冒出黑人問號
Representational State Transfer  我們可以拆開來解釋

2017年5月25日 星期四

Hubot 來玩玩機器人吧 Windows環境

Hubot 
Hubot 是一套Github開源的機器人的Framework
主要是透過adapter 做跟各種通訊軟體的介接 如:line Slack QQ skype  這些網路上都有人開源adapter,我們就只要安裝好環境就可以開始寫我們scirpt玩弄我們的奴隸機器人

2017年5月23日 星期二

Redis Server & Redis desktop Windows環境安裝

Redis[編輯]

維基百科,自由的百科全書
Redis是一個使用ANSI C編寫的開源、支援網路、基於記憶體、可選永續性鍵值對儲存資料庫。從2015年6月開始,Redis的開發由Redis Labs贊助,而2013年5月至2015年6月期間,其開發由Pivotal贊助。[1]在2013年5月之前,其開發由VMware贊助。[2][3]根據月度排行網站DB-Engines.com的資料顯示,Redis是最流行的鍵值對儲存資料庫。

2017年5月21日 星期日

ASP.NET MVC 三層架構Three tier

Q 什麼是三層架構
A: 簡單說就是把開發專案分為三大區塊
Controlle:負責導覽資料的責任 我資料該去哪裡 我頁面該怎走,盡量避免把較複雜邏輯寫在這.
Service:資料處理的位置 也算是code可能會最多的地方,例如我想要把A資料跟B資料作處理完再傳給Controller.
Repository:接受DB的資料位置這這部分往往就是要開始定義資料格式的位置然後再把資料傳給Service做處理.

2017年5月19日 星期五

Unity DI 注入方法


底下為較常用到的Unity注入方法 單一介面
container.RegisterType<ICookService, CookService>();

如果同一介面下 有很多不一樣的Service 只需要後面給他個名稱就好了 用以辨識實作時用
如本篇interface
container.RegisterType<ICookService, FoodService>("FoodService");
container.RegisterType<ICookService, DrinkService>("DrinkService");

當我們實作時需要 後面也是一樣要加上要Resolve的service名稱 這
樣他才知道我是要實作ICookService介面的FoodService 不然他會FoodService DrinkService傻傻分不清楚
var service = container.Resolve("FoodService");
還有非常炫砲的寫法 自動搜尋所有class跟Interface 做注入
            container.RegisterTypes(
            //針對所有class Service名稱後有做注入
            AllClasses.FromLoadedAssemblies()
           .Where(t => t.Name.EndsWith("Service")),
            //搜尋所有Interface做Mapping
            WithMappings.FromAllInterfaces,
            //可以定義註冊名稱
            WithName.Default,
            //指定註冊的生命週期 說明
            WithLifetime.ContainerControlled);

Interface C#

以往我們寫code總是會這樣 new一個新的物件 直接依賴但是當我們在較複雜的架構時,我們就需要一直去重構方法
 
class Program
{
    static void Main(string[] args)
    {
         Dosomething do = new Dosomething();
          do.Write("Hello World");
    }
}
  
class Dosomething
{
    public void Write(string msg)
    {
        Console.WriteLine(msg);
    }
}

後續衍伸出interface 定義個實作的介面 我們是先定義好實作 後續才是去針對判斷去new 出我們想實作的辦法 這樣好處是程式更有規範更方便理解,統一 一個接口方法最後看你想實作哪個部分
 
  class Program
    {
       
        static void Main(string[] args)
        {
            ICooking cooking;
            //我決定要做三杯雞 來吧!
            var food = "三杯雞";
            if (food == "三杯雞")
            {
                cooking = new FoodService();
                Console.WriteLine(cooking.Make());
            }
            else {
                cooking = new DrinkService();
                Console.WriteLine(cooking.Make());
            }
            Console.Read();
        }

    }

    interface ICooking
    {
        string Make();
    }

    class FoodService : ICooking
    {
        public string Make()
        {

            return "紅燒牛肉";
        }
    }

    class DrinkService : ICooking
    {
        public string Make()
        {
            return "珍珠奶茶";
        }
    }

2017年5月18日 星期四

.NET SignalR 初級引用

What is SignalR?

相信你會看到我的文章也有大概想做的事情了

ASP.NET SignalR是一個用於ASP.NET開發人員的library ,簡化了web 應用程序的功能
讓Server跟Client 達到 Real-Time 的效果

你問我什麼是Real-Time?
簡單講就是類似聊天室的功能,讓網頁上的資訊"即時"達到跟server溝通的橋樑
當然不只聊天功能,能用的應用包含想即時的告訴client做某些指定動作

WebSockets是HTML5提供的新的API,可以在Web網頁與服務器端間建立Socket連接,當WebSockets可用時(即瀏覽器支持Html5)SignalR使用WebSockets,當不支持時SignalR將使用其它技術來保證達到相同效果。

SignalR當然也提供了非常簡單易用的高階API,使服務器端可以單個或批量調用客戶端上的JavaScript函數,並且非常方便地進行連接管理,例如客戶端連接到服務器端,或斷開連接,客戶端分組,以及客戶端授權,使用SignalR都非常容易實現



使用SignalR調用方法

就讓我們開始吧!
我們就來做個雙向的聊天室吧 澳門首家線上聊天室上線拉

NuGet 確保底下兩個已先安裝
1.Microsoft.AspNet.SignalR.Core
2.Microsoft.AspNet.SignalR.JS


我們先建立個  Startup.cs
註冊SignalR middleware
主要用於建立Client端連接到Hub的路由 在我們應用程序調用時執行我們的MapSignalR的擴充方法
 
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(MyApplication.Startup))]
namespace MyApplication
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // Any connection or hub wire up and configuration should go here
            app.MapSignalR();
        }

    }
}


然後我們建個HUB的Class 名子就叫ServiceHub.cs吧 如下我們建個SendMessage的方法 然後傳給所有人
 [HubMethodName("")]的作用是如果沒加這段的話 我們javascirpt上的都要以小寫開頭因為我們有加了所以是依照我們定義的名稱就好
 
[HubMethodName("Hub")]
 public class ServiceHub :Hub
    {

        [HubMethodName("SendMessage")]
        public void SendMessage(string msg) {

            Clients.All.addNewMessageToPage(msg);
        }
    }


然後我們頁面上該怎麼接收訊息呢 我們先在這個頁面上建立個click 傳送去呼叫SendMessage這個方法 然後戴上我們定義好的參數 contosoChatHubProxy.on 也監聽addNewMessageToPage Server.cshtml
 

<script src="~/Scripts/jquery-1.10.2.min.js">
<script src="~/Scripts/bootstrap.min.js">
<script src="~/Scripts/jquery.signalR-2.2.2.js">

    var connection = $.hubConnection();
    var contosoChatHubProxy = connection.createHubProxy('serviceHub');
    contosoChatHubProxy.on('addNewMessageToPage', function (message) {
        console.log(message);
    });
    connection.start()
        .done(function () {
     
    
        })
        .fail(function () { console.log('Could not connect'); });



    $('#add').click(function () {
        contosoChatHubProxy.invoke('SendMessage', $('#message').val());
        $('#message').val('').focus();
    });

Client.cshtml 也是一樣作法 監聽 建立連線
 

<script src="~/Scripts/jquery-1.10.2.min.js"&gt
<script src="~/Scripts/bootstrap.min.js">
<script src="~/Scripts/jquery.signalR-2.2.2.js">

    var connection = $.hubConnection();
    var contosoChatHubProxy = connection.createHubProxy('serviceHub');
    contosoChatHubProxy.on('addNewMessageToPage', function (message) {
        console.log(message);
    });
    connection.start()
        .done(function () {
     
    
        })
        .fail(function () { console.log('Could not connect'); });


當我server 這邊送出訊息後 可以發現 兩邊的console.log 都會出現一樣的訊息
當然我們可以客製化的去顯示兩邊不同的內容訊息

 進階的做法可以 創建不同Groups 傳送訊息給指定的Group 或是 單獨的對象
還可以SignalR Scaleout 配合 Redis or SQL Server 加快傳送訊息的速度
很屌的是還可以建立個獨立的SignalR Self-Host 好處是就不用依賴於IIS上面 
我只要啟動應用程序 我整段系統就打開了
中間還包括authentication 跟一些防範漏訓的機制
 以上部分有時間再補上

.Net開源框架列表

API

  • 框架
    • 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。官網
  • 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:一個異步、持久化的鍵值存儲。官網

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)系統。 官網 Github
  • 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 類庫和相關工具。 (分支自 已經不再維護的 DotNetZipDotNetZip.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 反編譯引擎。官網

部署(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 是一個點對點的市場框架。官網 Github
  • 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 倉庫。 官網 Github
  • GitExtensions:GitExtensions 包含資源管理器擴展、Visual Studio 2008/2010/2012/2013 插件和一個獨立的 Git 倉庫工具。 官網Github
  • 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。官網

圖像處理(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 中。官網Github

機器學習和數據科學(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# 客戶端。官網

微框架(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(領域特定語言)。 官網 Github
  • ScriptCS:使用文本編輯器、nuget 和強大的 Roslyn 來編寫 C# 應用!官網

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 倉庫。 官網 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 中便捷的創建應用和服務。官網

響應式編程(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 平臺下免費、開源、專注社區的單元測試框架。官網

交易(Trading)

  • Lean:Lean 引擎是一個開源的,完全由 C# 托管代碼編寫的交易算法引擎,用于桌面和云端。 官網 Github
  • 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通信中間件。官網

其他列表(Other Lists)


文章列表