ASP.NET 5 by 保哥

完整投影片在這裡

  • ASP.NET 5為新一台ASP.NET,跨平台,Open Source,適合雲端也可在本地跑(未來還會支援Windows Server 2016 Nano Server、Docker),模組化,全新架構
  • 為什麼要砍掉重練?
    • ASP.NET 1.0已有15年歷史,包袱太重
    • 擺脫System.Web.dll,採模組化載入,減少資源使用,雲端執行較省成本(費用與CPU/RAM用量成正比)
    • 可與Apache、Self-Host其他HTTP管道整合,應用範圍變廣
  • .NET Execution Environment(DNX) ,新一代.NET Runtime,跨Win/Mac/Linux
  • 版本選擇:
    • .NET Framework(CLR), 元件完整,發行更新週期長, Windows Only。
    • .NET Core(CoreCLR) 為CLR子集合,元件較少但跨平台。CoreFX透過NuGet下載,有用到才載入,Windows版已好, Linux/OSX仍在開發中
    • Mono: 跟CLR相容,直接丟.EXE就可以跑,非官方解決方案
  • ASP.NET5 Beta8起(10/5 Release, RC 11月)不再加功能,只加文件
  • 開發伺服器:WebListener(Win Only,將來可能被淘汰)、Kestrel(跨平台)
    還是可以跑在IIS,同時支援傳統與新一代的Pipeline,故HttpHandler、HttpModule可以繼續用
  • 示範:
    • 使用CMDER
    • yo aspnet 建立ASP.NET 5專案樣板(此做法跨平台,但便利性不如VS2015)
    • dnu restore 要求NuGet下載用到的套件
    • dnu build 建置專案
    • code . 用Visual Studio Code開啟專案
    • dnx web 執行專案
  • 開發環境的變革
    • 改檔案後不需手動建置(背景偵測檔案改變就觸發編譯,缺點:難以掌握檔案何時Build完)
    • 前端後端分工整合:LESS、Sass、Typescrpit、Bootstrap、KO、NG、ReactJS、Gulp, Grunt, npm, Bower, Yeoman... 延伸閱讀 Gulp, Bower, Grunt是什麼鬼啦?
    • 有些指令如Environment.Machine使用時要小心,DNX 4.5可用、DNX Core 5.0不行,若
      project.json frameworks指定兩種平台要通用,將無法編譯。應改為二者共通的替代做法,或移除DNX Core 5.0
  • ASP.NET專案結構
    • .sln仍在
    • nuget.config指定packageSource(可切換來源改抓新版)
    • global.json projects指定目錄下有src及test兩個目錄,找到的專案將自動匯入sln,但已匯入的專案不會因修改projects消失
    • .xproj(取代.csproj),採用負向表列,排除的才要註明,跟csproj一樣可用於MSBuild。
      自動掃瞄檔案匯入專案,缺點是會不斷掃瞄,若機器不夠力會讓你想哭(註:我不怎麼喜歡這個點子,但這似是前端開發工具的主流玩法)
    • 大部分專案設定移入project.json,內容與Gulp共用(Node.js)
  • project.json結構
    • webroot: 靜態檔案的根目錄,預設值是wwwroot,裡面都是不需要編譯的內容
    • userScrectId: 不能重覆,開發階段使用
    • version: 1.0.0.-* 版號
    • dependecies: 參照的套件、模組(都來自NuGet)
    • commands:
      "web"/"kestrel",定義命令。"ef": "EntityFramework.Commands" -> dnx ef --blah foo.bar
    • frameworks: 平台對象
    • exclude: 不包含的資料夾wwwroot, node_modules, bower_commpents,不編譯不處理
    • publishExclude: "node_modules","bower_components", "**.xproj", "**.user", "**.vspscc"
    • scripts: "pubish":["npm install", "bower install", "gulp clean", "gulp "min"]
  • gulpfile.js <== css, js壓縮程序,用Node.js跑
  • config.js Connection String、AppSettings...
    wwwroot下還是有web.config,但只給IIS用,非IIS時無視
  • Startup.cs 很重要,取代global.asa的角色
    • 建構式
      if (env.IsDevelopment()) builder.AddUserScrets() <= 連線字串或Path,各開發機不同,執行時用screts.json覆寫config.json
      另一招,用OS環境變數覆寫config.json的設定
    • ConfigureService() 服務設定
      註冊EF、SQL元件、DbContext、FB/MSAccount登入整合
    • Configure()相當於Application_Start
      ASP.NET如何執行,開BrowserLink()、ErroPage()、Use*/UseMvc(),跟Pipeline有關,順序很重要
  • 觀念解析(與傳統ASP.NET差異很大)
    • 以服務為中心,用DI注入服務元件,有不同生命週期
      *services.AddSingleton<IMyApp, MyApp>()
      *services.AddScoped<IMyApp, MyApp>()
      *services.AddTransient<IMyApp, MyApp>()
  • Middleware層層套用的觀念釐清
    • loggerFramework.AddConsole()第一順位,保證大家都能用
    • UseStaticFiles()在UseIdentity()之前,靜態檔案不需驗證就能存取
    • 若UserDirectoryBrower()在UseMvc()之前,MVC Routing就失效了

註:綜合之前搞Hackpad小玩過ASP.NET 5的經驗,它還很新很嫩,元件跟文件還有不少缺口,現階段嚐鮮即可,假以時日方可委以重任。

Microsoft Edge by Eric

  • 瀏覽器發展時間軸,IE6-IE7時代幾無敵手,IE8時Chrome出現,IE6/7/8變臭(說好不提IE6/7/8 XD)
  • IE11之後將持續更新改進,但不會有IE12,IE13了
  • 裝置愈來愈多元化:Mobile/PC/XBox/Surface Hub/HoloLens/Wearables+IoT
  • Why Edge?
    • IE包袱太沈重,原本為Windows量身打造,跟OS綁太緊,作業系統不升級IE就不能升級。
    • 為保留相容模式必須付出龐大代價,加了新功能舊版邏輯卻不能丟,程式愈來愈肥
    • IE只為桌面設計,硬體需求、連線狀態思維不同
  • Edge啟動畫面預設呈現MSN新聞、氣象(建議內容)、最常瀏覽網站(Top Sites)
  • Demo: 開啟INSIDE網站,進入閱讀模式(其他瀏覽器也有),頁面只留內容,Banner/側邊選單消失。前題是網頁需正確使用HTML5標籤<content><article><aside><section><h3><h4>...。另外,亦可加入閱讀清單(READING LIST),可離線閱覽
  • Edge內建筆記功能,加入閱讀清單仍能保有筆記內容,可分享到其他APP
  • 無縫體驗,XBox/HoloLens上都有Edge
  • IE11相容模式
    企業情境管控:企業內網預設啟用企業模式
    若網頁需要整合ActiveX(例如:Web ATM需讀卡機):彈出提示開IE11,UI可勾選記憶起來以後一律用IE11開
  • 不再支援原生元件(ActiveX...)
  • Edge是UWP App,可跨裝置,透過市集升級
  • 相容性 vs 互通性
    用戶希望用了十幾年的網站跟用HTML5的網站都要能繼續用
  • 有很多網站開發時只針對行動Safari,用FF/IE看就慘不忍睹,Edge開啟接近iPhone所得
    當年IE Only,如今iOS Only,都一樣糟糕
  • Edge的功能採用投票制決定採納與否及開發順序 https://status.modern.ie
  • 當代前端攻城師須知:參考
  • 很酷的展示:開Visual Studio UWP App專案,用EntryPoint,ContentUri指向網站,當場包成UWP App。執行於Hosted Web,透過Windows物件可以存取相機、使用者通訊錄等資源
    Windows.UI.Popups.MessagesDialog(...) 顯示對話框
    Windows.ApplicationModel.Appointments.Add... 加入行事曆
  • Edge 64bit Only(無ActiveX相容的必要性),唯一保留的二進位擴充套件只有Flash

Comments

Be the first to post a comment

Post a comment