ASP.NET MVC快速產生SiteMap的擴充程式 - MvcSiteMapProvider

WebForm有,MVC有沒有

在 WebForm 拜控制項所賜,讓我們可以快速且容易去設置與產出網頁的 SiteMap(中文稱巡覽列、導覽列),不過在 ASP.NET MVC 之下一開始並無控制項觀念,也經常碰到有 WebForm 經驗正在學習 ASP.NET MVC 的新手常問說:WebForm 有什麼控制項的功能,ASP.NET MVC 有沒有。SiteMap 就是常被問到的一項。

說實話,剛接觸 ASP.NET MVC 2 時是比較辛苦,因為沒提供的功能都必須自己手工刻。隨著時間的經過,後來有了 NuGet 的加持直到現在 ASP.NET MVC 4,整個 ASP.NET MVC 上的擴充套件(擴充程式)已經非常完整,今天要介紹的 MvcSiteMapProvider 都一套快速提供 MVC 專案使用的 Sitemap 擴充套件。

安裝與設置MvcSiteMapProvider擴充套件

首先我們先開一個測試用的 MVC - 網際網路專案,然後開啟【套件管理器主控台】:

PM> Install-Package MvcSiteMapProvider

安裝之後,會開啟一個 Mvc.sitemap 的檔案,如果讀者看過 Webform 的 SiteMap 設置檔會有相似的感覺。

開課招生 - ASP.NET Web API四週實戰課程

什麼是ASP.NET Web API?

比較 WCF 與 Web API

圖片來源:http://thedatafarm.com/blog/asp-net/how-i-see-web-api/

在 ASP.NET Web API(以下簡稱 Web API)出現之前,我們要開發 Service 之類應用,大多只有兩種選擇:

  • Web Service
  • WCF

而 Web API 基本上是一個化繁為簡的 Framework,它輕量化而高效率,讓我們非常簡易的就能建置一個 HTTP Service,因為 Web API 是以 HTTP 為基礎,從上圖我們來看設備上面的 <-- 符號,Web API 是目前不需要多餘處理一種。Web API 用於 HTTP 也存活於 HTTP,因為這樣單純的特性,Web API 可以輕鬆提供 HTTP Service 給各種裝置、設備、應用程式等各種支援 HTTP 的軟硬體來使用。這方面而言,Web Service / WCF 要達成這樣的目標,難度就提高很多。

上課是最好的進修方式

ASP.NET Web API CORS預覽功能完整剖析

Cross-origin resource sharing(CORS)

Cross-origin resource sharing (跨來源資源分享,以下稱CORS)是W3C 提案的技術標準,定義伺服器與用瀏覽器在跨來源(即cross domain,跨網域)呼叫時的互動方式。CORS標準允許網頁發出跨網域的AJAX請求,讓實作了同源策略(same-origin)的瀏覽器在安全條件下去呼叫進行有限制的跨網域AJAX請求。

CORS透過設定HTTP Header(標頭)設置那些網域的網站可以跨網域存取,目前W3C定義九個Response Header(回應標頭)可以設置:

Response Header說明
Access-Control-Allow-Origin 指示是否基於共享資源透過回傳來源請求標頭、“*”或“null”在回應裡。
Access-Control-Allow-Credentials 指示當省略憑證標誌(Credentials flag)未設置時,是否公開請求的回應。當檢查請求(preflight request)的回應一部分,它表明實際的請求可以包含用戶端憑證。
Access-Control-Expose-Headers 指示那些標頭是安全公開在CORS API規範的API。
Access-Control-Max-Age 指示檢查請求可以快取多久時間在快取結果裡。
Access-Control-Allow-Methods 指示實際請求期間,可以使用那些方法做為請求回應的一部分。
Access-Control-Allow-Headers 指示實際請求期間,可以使用那些標頭名稱做為請求回應的一部分。
Origin 指示跨來源請求或檢查請求來自於。
Access-Control-Request-Method 指示那種方法在實際請求中做為檢查請求的一部分。
Access-Control-Request-Headers 指示那種標頭在實際請求中做為檢查請求的一部分。

例如,我們可以設置以下CORS標頭:

 Access-Control-Allow-Origin: http://kkbruce.net
 Access-Control-Allow-Methods: PUT, DELETE
 

這表示,除了網站本身以外,還允許kkbruce.net網域進行跨網域的AJAX請求且只允許PUT和DELETE方法的請求。允許的網域可以設定多組,也能設定為“*”代表不設限。

ASP.NET MVC裡Model使用ADO.NET來開發

MVC Model只能使用Entity Framework?

關於MVC裡的Model是否只能使用Entity Framework,答案是否定的。會這樣自問自答是因為有讀者問說,怎麼所有寫ASP.NET MVC的書都是用Entity Framework。MVC裡的Model根本不關心你用什麼技術,例如我們在書裡2.2節就例了一大堆的Model可用技術。在早期ASP.NET MVC 2的書,Model大概都是用LINQ to SQL,那個時候的讀者應該也是會問一樣的問題吧。時代會進步,技術也沒有停過,會選擇Entity Framework我是很單純,我是學習與推廣微軟技術的人,ORM技術對於範例程式碼有較好的可讀性,撰寫與偵錯速度也快,在非特別環境(或特別限制)下,就我而言,我是個懶人,我會選擇讓我可以最懶的技術。

建立組織與Windows Azure Virtual Network之間VPN連線

Windows Azure for Virtual Network

Windows Azure Virtual Network Dashboard - Connection

Virtual Network是Windows Azure的IaaS(基礎架構即服務)部分,為何會介紹這個呢?這是因為小朱前輩剛好在試這一段內容,但苦於沒有設備,剛好我們家就是Router製造商,一時心癢,就把Create a Virtual Network for Cross-Premises Connectivity的內容給做幾次,順便做個筆記,結論是:不用Cisco、Juniper這些高貴的設備,我們家的Router也可以和Windows Azure建VPN連線。

建立虛擬網路(Virtual Network)

這裡的目標是在Windows Azure與公司網路透過VPN建立連線。另外在撰寫這篇文章時,Windows Azure的VPN設置與流程已經與教學文章不同(其實也只是昨天睡前和今早起床…),由此可知,未來流程或設置如有與本文不同,不是我教錯,請以官方為主。@_@

即時監控、自動調整與擴充Windows Azure資源的好工具 - AzureWatch

雲端上的Scale-out與Scale-in

Scale-out與Scale-in中文不好翻譯,大意就即自動化擴充資源與降低資源。這是我自己在使用雲端或在雲端的研討會常聽到的問題。「自動化」是指不必人為操作,如果還要進管理介面(像HiCloud)去進行資源的分配,那就不是自動化。「使用雲端」是指有在使用雲端服務的人(或公司),使用雲端技術其中一個重要目標就是想要能動態調整資源,以網站而言,平常低流量時,使用最少資源即可,當有行銷活動或某個話題吸引大量流量進入時,希望服務器能自動提高使用資源。

自動化資源調配在雲端上是非常重要的,不可能說等伺服器爆了在來調整,那種雲就不合適拿來應付可能有突發狀況的服務

AzureWatch服務簡介

針對Windwos Azure的自動化資源調配,國外有一些廠商推出不錯的產品,有的要安裝代理程式,有的不需要,今天要介紹的AzureWatch是不需要安裝代理程式的。

AzureWatch服務截圖

AzureWatch(14天免費試用):https://www.paraleap.com/

上圖是AzureWatch網站首頁上一小個截圖,不過用來說明這個服務已經非常夠了。AzureWatch主要進行三件事:

  • Azure Monitoring - 雲端服務即時監控
  • Auto-Scaling - 自動資源調整
  • Real-time customizable alerts - 即時且客製化的通知

也就是圖片上半部,圖片下半部是細項,常用的Web Role / Worker Role、Websites、Storage…都支援。註冊送14天免費試用,GWAB活動有送一組Promo Code,可延長至30天。

Global Windows Azure BootCamp 2013課後實作心得

GWAB 2013 - 台灣台北場

很高興有機會參與到2013年台灣GWAB(Global Windows Azure BootCamp)這一個全球性活動,當天全球有91處同時進行(不計時差)這個GWAB,台灣由朱明中Sky董大偉三位Windows Auzre方面資深MVP帶領學員說明Windows Azure與實作。課中收獲許多,真是上一天課,比K一個月的書還有效。

GWAB投影片、教材與影片

第一堂是由小朱前輩進行Windows Azure Cloud Service的說明與實作,相關資料都可以到「[Windows Azure] Global Windows Azure Bootcamp取得。

第二堂是由Sky前輩進行Windows Azure WebStei Service說明與實作。

第三堂是由董大偉前輩進行Widnows Azure Mobile Service的說明與實作,相關資料與影片可以到「[研討會] GAWB 2013 Hands on lab slides and video取得。