自製ActionFilter小鋼炮:MVC/WebAPI程式效能計時器

自製ActionFilter小鋼炮:MVC/WebAPI程式效能計時器

炮

最近進行一些ASP.NET MVC/ASP.NET Web API系統效能改善的工作,改善之初當然是找出最耗效能(或是說較耗效能)的程式碼來下手改善。找出吃資源程式碼的方式很多,第三方有許多不錯的選擇,不過我需求真的很簡單,只想得到一個數字,在 .NET Framework 最簡單是用的System.Diagnostics.Stopwatch 類別進行耗用時間的測量。

單一程式段落效能計時器

我們先從最簡單的開始,計算一段程式碼的執行時間。

ASP.NET MVC - Action段落效能計時器

 public ActionResult InActionTimer()                                                              
 {                                                                                                
     System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();                 
     stopWatch.Start();                                                                           
     // 模擬程式執行                                                                                
     System.Threading.Thread.Sleep(1527);                                                         
     stopWatch.Stop();                                                                            
     TimeSpan ts = stopWatch.Elapsed;                                                             
                                                                                                  
     System.Diagnostics.Debug.WriteLine($"ActionTimer: {ts.ToString()} from Foo/InActionTimer");  
                                                                                                  
     return Content($"ActionTimer: {ts.ToString()} from Foo/InActionTimer");                      
 }                                                                                                  
 
MVC stopWatch

可以看到.Start().Stop()之間的程碼計算出耗費時間。

解決使用Certreq.exe取得SSL憑證發生0x80092004錯誤

解決使用Certreq.exe取得SSL憑證發生0x80092004錯誤

自從G大(谷歌)說,我要提升使用HTTPS網站排名之後,慢慢網站的世界有了改變。啟用HTTPS的網站比例不斷升高。例如,kkbruce.tw就啟用了HTTPS。這裡感謝DigiCert提供免費的SSL憑證。

更新SSL憑證

kkbruce.tw是建置在Microsoft Azure之上,而且現在Microsoft Azure上的文件寫的還不錯,新的一年到來,也到了要更新kkbruce.tw的SSL憑證時間,要更新SSL憑證可以參考針對 Azure App Service 中的 App 啟用 HTTPS的內容。在取得SSL憑證,我採用的是使用 Certreq.exe 取得憑證

  1. 參考產生 kkbruce.csr
  2. 將 kkbruce.csr 上傳(或copy內容) 至 CA 單位。(選擇所使用者網頁伺服器,這裡我選IIS 8)
  3. 下載 *.cer 檔進行匯入作業。
  4. certreq -accept -user www_kkbruce_tw.cer
certreq-0x80092004-error

如圖,我在第四步碰到些問題:

VS2015使用NUnit 3.0進行測試 - 2016新年快樂

VS2015使用NUnit 3.0進行測試 - 2016新年快樂

洪師博 - 為了生活,我可以忍

來源:網路

前一篇「使用VS2015建立單元測試專案」介紹VS2015的單元測試(Unit Test)建立與NUnit 2.6.x的使用方式。而NUnit 3在2015/11/16終於release了。這一篇是說要說明Visual Studio 2015與NUnit 3的整合使用方式。

Azure Table Storage API 泛型設計

Azure Table Storage API 泛型設計

最近有機會使用到Azure Table Storage服務,Table Storage是早期Azure儲存體一種NoSQL儲存方式,程式開發上花點時間看看官網的文件,跟著範例做一下,大致上不會有太大問題。不過等真的要使用時會發現,如果按照範例程式的寫法,基本上是一整個寫死,沒有彈性可言。

建立Entity(實體)

Table Storage 的 SDK 設計是你在呼叫 Table API 之前必須傳入要儲存的 Entity(實體),如果讀者熟悉 Entity Framework 的話,可以想成 Entity Framework 的 Entity,如官網範例的 CustomerEntity

 public class CustomerEntity : TableEntity
 {
     public CustomerEntity(string lastName, string firstName)
     {
         this.PartitionKey = lastName;
         this.RowKey = firstName;
     }

     public CustomerEntity() { }
     public string Email { get; set; }
     public string PhoneNumber { get; set; }
 }  
 

然後進行CRUD操作時都是以 Entity 為單位,例如查詢:

 // Create a new customer entity.
 CustomerEntity customer1 = new CustomerEntity("Harp", "Walter");
 customer1.Email = "Walter@contoso.com";
 customer1.PhoneNumber = "425-555-0101";

 // Create the TableOperation object that inserts the customer entity.
 TableOperation insertOperation = TableOperation.Insert(customer1);

 // Execute the insert operation.
 table.Execute(insertOperation);  
 

在正式使用碰到的問題就是,我們通常針對這類操作的 API 會先抽離出來給大家共用,但問題是,此 Table Storage API 並不會事前知道你所要操作的 Entity 格式,Entity 格式應是留給使用端去定義,這樣才能發揮 NoSQL 的長處,如果一開始定義寫死了,那就和關連式資料庫沒有差別了。

Visual Studio裡偽前端開發神器Reload,讓你也擁有即開發即所見功能

Visual Studio裡偽前端開發神器Reload,讓你也擁有即開發即所見功能

好早以前,我介紹過在Sublime Text 3下的「前端開發神器 - Emmet LiveStyle 」,前端還有另一套有名的LiveReload都是很棒即開發即所見的開發方式。難到我們寫伺服器端的開發人員們,只能看著前端耍炫、耍酷、流著口水羨慕嗎?