SlideShare una empresa de Scribd logo
1 de 131
一個微信專案
從0到.000的效能調教之路
三部曲
http://mvc.tw
 twMVC 核心講師
 現任微軟最有價值專家
 微軟 TechDay & MSDN 講師
 著有《ASP.NET MVC 4/5網站開發美學》
 譯有《Bootstrap 2/3》中文教材
 https://kkbruce.tw
 http://blog.kkbruce.net
@Bruce
2
http://mvc.tw
首部曲、二部曲?
3
http://mvc.tw/004Q http://mvc.tw/004R
一個微信專案
從秒到毫秒的效能調教之路
一個微信專案
效能調教面面面觀但內容是
http://mvc.tw
人
事物
Agenda
6
http://mvc.tw
效能有兩種
 與人有關
 …
 …
 …
 …
 …
 與Code有關
 …
 …
 …
 …
 …
7
8
http://mvc.tw
硬體公司的軟體新創團隊
9
http://mvc.tw
 專注於 Mobile 平台
MIB Team
10
http://mvc.tw
 專注於 Mobile 平台
 微信限定版
MIB Team
11
http://mvc.tw
MIB Team
 專注於 Mobile 平台
 微信限定版
 血淚史不是講假的
12
http://mvc.tw
 專注於 Mobile 平台
 不負責 in-house
 電腦不接內網 
 沒有人知道我們在幹什麼
 對內外,什麼都不講
 令人眼紅 
MIB Team
13
http://mvc.tw
 專注於 Mobile 平台
 不負責 in-house
 負責新技術研究與導入
 研究:想怎麼玩都行
 導入:有難度
MIB Team
14
http://mvc.tw
 專注於 Mobile 平台
 不負責 in-house
 負責新技術研究與導入
 一年之後才有正式組織名稱
MIB Team
15
http://mvc.tw
 如何打魔王?
Team – “同生共死”的一個單位
16
http://mvc.tw
 如何打魔王?
 只有一位勇者打得贏嗎?
Team – “同生共死”的一個單位
17
http://mvc.tw
 如何打魔王?
 只有一位勇者打得贏嗎?
 組隊 – 戰士(短距離)
– 弓箭手(中距離)
– 魔法師(長距離)
Team – “同生共死”的一個單位
18
http://mvc.tw
 如何打魔王?
 只有一位勇者打得贏嗎?
 組隊 – 戰士(短距離)
– 弓箭手(中距離)
– 魔法師(長距離)
 通常多技能的贏面大
Team – “同生共死”的一個單位
19
http://mvc.tw
人 is Team
20
內部 Startup
21
22
http://mvc.tw
江湖事
 一開始,專案使用 NLog 輸出至 File日誌
 專案進行發行測試開始,問題慢慢出現…
 出現問題時,File 日誌不易追查
 需一條一條從日誌中查看
 File 日誌散落各站點
 需將所有站點 File 日誌下載回來
 上線後發現,SPA頁面難以偵錯
 前端日誌無法收集分析問題
 相當不即時…
http://mvc.tw
互推
 前端 – 是不是你們後端沒寫好?
 後端 – 我們輸出的資料是正確的哦?
 Database – 不關我的事?
http://mvc.tw
Hipchat
 第一次是選用 https://www.hipchat.com/ 進行日誌的整
合。
 類似 slack 的另一家服務商。
http://mvc.tw
Hipchat的即時日誌
 將 hipchat 當成我們Log日誌中心
 專案以 room 進行區分,分類收集所需日誌訊息
 room 有各自成員互不干擾
http://mvc.tw
可以看到許多有趣的事(1)
27
http://mvc.tw
可以看到許多有趣的事(2)
28
http://mvc.tw
為什麼會換slack?
 hipchat 沒什麼不好的。
 不過當站點訊息量大時,容易呈現掛點狀態。
 非 hipchat 問題,猜測為第三方元件(HipChat.Net )沒
處理好。
http://mvc.tw
Slack能做什麼事?
 說明影片
 http://mvc.tw/004i
http://mvc.tw
Slack 重點整理
 團隊通訊平台服務。
 依據需求 – 不同主題、不同成員、不同專案、不同功能 – 去訂
制不同的 Channels 來使用。
 傳遞訊息、檔案、圖片與任何資料。
 強大的搜尋、過濾與回顧歷史訊息的功能。Slack 免費版可以搜
尋最近的 10000 則訊息,並且任何新成員加入後都可以回溯每
個頻道之前的歷史訊息內容,銜接討論進度。
 容易與許多第三方服務進行整合。(mail 也能)
 跨平台訊息同步。
http://mvc.tw
第三方服務
 提供大量第三方服務
 整合容易
http://mvc.tw
專案 channel
http://mvc.tw
那前端呢?
http://mvc.tw
用 Console.log ?
http://mvc.tw
jsnlog
 http://jsnlog.com/
 解決前端 - SPA頁面無法收集日誌問題。
 可與 Log4Net、Elmah、NLog 等套件整合。
 多種整合方案:.NET、PHP、Node、JS Only。
 整合容易 
37
Jsnlog
http://mvc.tw
即時且跨平台的效果 … 很恐怖
http://mvc.tw
來自團隊的見證 – 前端
未導入Slack(紀錄Log)
•遇到使用者反應系統有Bug時,常常使用者講
得很清楚,但聽得很模糊…很難快速從知道
的訊息中,歸納知道問題出在哪,需花費大
量的時間在理解問題,並在猜測的可能問題
中,不斷嘗試,Bug還可能再度出現….
導入Slack(紀錄Log)
•無時無刻都能根據使用者的描述與Slack的紀
錄(自訂描述,支援手機版以及桌機板),減少
與使用者溝通之間的代溝,能快速歸納出Bug
的問題,徹底解決Bug,還有時間喝杯咖啡唷
~
http://mvc.tw
來自團隊的見證
情境
Gina: 認真工作中
Boss: User 反應有錯
誤,看一下Log
Gina: 等我一下,我
去Azure FTP 下載log
回來看,我找一下
Log 喔! 等等跟你說…
(十分鐘過去…)
Boss: 找到了嗎?
Gina: 部屬完了
Boss: API沒辦法正
常呼叫耶!
Gina: 真的嗎? 可是
我只加了Log而已,
哈哈! Log量太大,好
像沒記錄到,導致
API掛掉,我再部一
次沒Log的。
Boss: 可以了耶!
Gina: 公車上
Boss: User 反應有錯
誤,看一下Log
Gina: 好,我現在看
一下(開啟手機App),
啊! 有Log,DB有…
問題,前端有…問題,
後端有…問題,所以
造成錯誤。
Boss: 好,有空可以
先改一下
41
環境
改善
42
43
從公司要資源
http://mvc.tw
Office v1 – 讓高牆倒下
44
http://mvc.tw
8GB out – 16GB in
45
http://mvc.tw
HDD out – SSD in
46
http://mvc.tw
http://mvc.tw/004P
47
48
投資自己
1. 以下都是花自己錢
49
2. 以下都是花自己錢
3. 以下都是花自己錢
http://mvc.tw
有要推坑的手 XD
50
http://mvc.tw
Multi-Monitor
51
http://mvc.tw
Mouse
 多螢幕,可以試試滾輪。
 鍵盤、滑鼠的錢不要省。
52
http://mvc.tw
要坐得舒服
53
http://mvc.tw
高度要對 
54
http://mvc.tw
Office V2 - 目前
55
http://mvc.tw
Office V3 - 人生一定要有目標   
56
http://mvc.tw
 令人眼紅 
 很敢花錢,被誤會獎金領很多
靠腰
57
http://mvc.tw
 缺點,想低調,完全行不通。常常有人跑來照像 
 不要老是想著公司,他只是給你一份工作,但你可以在裡面
生活。
 扣除睡覺,Office 搞不好是你第一個家,何不讓他舒服
一點。
 先交女朋友才再成為工程師,不然很大的機會成為…
物 - 小結
58
http://mvc.tw
靠北工程師
59
60
http://mvc.tw
專案終於來了
61
http://mvc.tw
 Mobile first
 Cloud first
 Global Azure
 China Azure
 China user first – GFW   
first
62
http://mvc.tw
 以 VSTS 進行 Version Control (TFVC)
 後來才知道,可以一個專案同時執行兩種版控
 TFVC and Git repositories in the same team
project
 http://mvc.tw/004S
VSTS
63
http://mvc.tw
架構
64
http://mvc.tw
 Test Site:Microsoft Global Azure
 Stage Site:Microsoft China Azure
 兩個 Azure 有非常明顯的技術落差,我們在採用 Azure
相關技術時,必須做 balance 的考量。
發行
65
http://mvc.tw
 Web App (scale out)
 SQL Database
 Storage
 CDN
 Webjobs
Azure Service
66
http://mvc.tw
效調前,一定要有...
67
http://mvc.tw
爛Code   
 我的爛CODE重構之路
 http://mvc.tw/004U
 我的爛CODE重構之路(二)
 http://mvc.tw/004V
68
經典
回顧
69
http://mvc.tw
經典(1)
70
http://mvc.tw
經典(2)
71
註解
下課
72
http://mvc.tw
滅了它
73
http://mvc.tw
Empty + MVC, MVC
Empty + MVC MVC
74
http://mvc.tw
MVC
75
http://mvc.tw
Empty + Web API, Web API
76
http://mvc.tw
Web API
77
http://mvc.tw
 ASP.NET Identity
 你有使用?
 自由度太高,入門成本不小,在內部推廣不易
 packages 的相依性很麻煩
 很多不(再)使用的套件移不掉
 結論:專案越乾淨越好,才有染黑的空間 
Empty目的
78
http://mvc.tw
導入分層架構
 http://mvc.tw/004X
 找這位 
79
http://mvc.tw
三層式架構
http://mvc.tw
關於架構
 沒有架構或是有架構都可以做
到相同功能,只是有架構的情
況可以提供維護性與可用性,
但過度的架構是件災難,功能
分切太細會增加開發上的困難
與時程。
 圖為高手高手高高手級別。
Logger.Plus.篇
82
http://mvc.tw
 平常你如何取得以下三種資訊
 呼叫者是唯?
 那一支檔案呼叫?
 第幾行出錯?
再論 Logger
83
http://mvc.tw
Member, sourceFile, sourceLine
84
85
Logger plus
Database.DBA.篇
86
http://mvc.tw
資料庫專案
87
Stored
Procedure
88
http://mvc.tw
 Entity Framework
 Entity Framework Performance and What You Can Do
About It
 中文討論:http://mvc.tw/004Y
 NHibernate
 OpenAccess  之前使用
思考 ORM Framework
89
CRUD
90
http://mvc.tw
 Install-Package Dapper
 https://github.com/StackExchange/dapper-dot-net
Dapper
91
http://mvc.tw
 小 – 僅單一Dapper.dll
 快 – Performance ( http://mvc.tw/004Z )
 靈活 – SQL to ORM
 學習成本低
 Stackoverflow 使用保證
Dapper
92
93
Dapper
程式碼.加加加速.篇
94
http://mvc.tw
導入C# 6 – 語法糖
95
http://mvc.tw
加速心法
 Parallel Processing and
Concurrency in the .NET
Framework
 http://mvc.tw/004a
96
不就是
async
awaint
97
98
考考各位 – Async Life flow
http://mvc.tw
輸出:1,2,3,4,5,6
99
static void Main(string[] args)
{
ShowThreadInfo(1);
var task = MyDownloadPageAsync("https://www.youtube.com/");
ShowThreadInfo(??);
string content = task.Result;
ShowThreadInfo(??);
Console.WriteLine($"網頁內容總共為{content.Length}個字元。");
}
static async Task<string> MyDownloadPageAsync(string url)
{
ShowThreadInfo(2);
var client = new WebClient();
var task = client.DownloadStringTaskAsync(url);
ShowThreadInfo(??);
string content = await task;
ShowThreadInfo(??);
return content;
}
1,4,6
2,3,5
100
101
轉吧七彩霓虹燈
http://mvc.tw
 在非UI工作上,盡量使用 .ConfigureAwait(false)
 從頭到尾都使用非同步方法
非同步兩大原則
102
http://mvc.tw
 非同步的 File I/O 沒處理好,可能會有減低10倍的效能?
 如何取消非同步嗎?
 如何回報非同步進度?
 清楚 compute-bound 與 I/O-bound 差異?
 多個非同步,要如何互相等待?
 非同步的 re-try 機制?
未能介紹
103
Azure.Data加速.篇
104
http://mvc.tw
 MemoryCache
 Storage Table
 Redis
 Session
 OutputCache
Cache
105
http://mvc.tw
 最省成本;最好處理;
 不能應用在 scale-out 情境。
 .NET Framework 應用程式中的快取
 http://mvc.tw/004b
 改良式GetCachableData可快取查詢函式
 http://mvc.tw/004c
MemoryCache
106
http://mvc.tw
Storage Table
 NoSQL服務
 Key-Value 組合
 存取 Wecaht JSON Data
 減少 Azure SQL
Database (DTU) 壓力
 http://mvc.tw/004W
107
http://mvc.tw
Redis
 未使用!!!  還是要學哦!
 Redis for Windows
 http://mvc.tw/004g
 StackExchange.Redis
 http://mvc.tw/004h
108
109
Redis 還是要 Demo :)
WebAPI.唯快不破.篇
110
http://mvc.tw
 序列化
 反序列化
只做二件事
111
Web API
進出要
快
112
http://mvc.tw
Jil – 序列化
113
http://mvc.tw
Jil – 序列化
114
http://mvc.tw
Jil – 序列化
115
http://mvc.tw
Jil – 反序列化
116
http://mvc.tw
Jil – 反序列化
117
http://mvc.tw
Jil – 反序列化
118
http://mvc.tw
注意:日期
119
http://mvc.tw
 Jil
 http://mvc.tw/004d
 MVC with Jil
 http://mvc.tw/004e
 WebAPI with Jil
 http://mvc.tw/004f
Jil三部曲
120
121
Jil
http://mvc.tw
終於
122
http://mvc.tw
結論(1)
123
http://mvc.tw
結論(2)
124
125
http://mvc.tw
Blog 是記錄知識的最佳平台
126
http://mvc.tw
感謝 Jetbrains 贊助贈品
127
https://www.jetbrains.com/resharper/
http://mvc.tw
感謝 OzCode 贊助贈品
128
http://www.oz-code.com/
http://mvc.tw
感謝 ALIVE 贊助贈品
129
https://comealive.io/
http://mvc.tw
業界師資、實戰教學
130
http://skilltree.my
謝謝各位
• 本投影片所包含的商標與文字皆屬原著作者所有。
• 本投影片使用的圖片皆從網路搜尋。
• 本著作係採用姓名標示-非商業性-相同方式分享 3.0 台灣授權。閱讀本授權條款,請到
http://creativecommons.org/licenses/by-nc-sa/3.0/tw/,或寫信至Creative Commons, 444 Castro
Street, Suite 900, Mountain View, California, 94041, USA.
h t t p : / / m v c . t w

Más contenido relacionado

La actualidad más candente

OWST - Orange Web Security Toolkit Documentation
OWST - Orange Web Security Toolkit DocumentationOWST - Orange Web Security Toolkit Documentation
OWST - Orange Web Security Toolkit DocumentationOrange Tsai
 
淡江大學 - 產品測試+安全性測試+壓力測試
淡江大學 - 產品測試+安全性測試+壓力測試淡江大學 - 產品測試+安全性測試+壓力測試
淡江大學 - 產品測試+安全性測試+壓力測試Taien Wang
 
Android Taipei 2013 August - Android Apps Security
Android Taipei 2013 August - Android Apps SecurityAndroid Taipei 2013 August - Android Apps Security
Android Taipei 2013 August - Android Apps SecurityTaien Wang
 
網站程式資安白箱與黑箱檢測處理經驗分享
網站程式資安白箱與黑箱檢測處理經驗分享網站程式資安白箱與黑箱檢測處理經驗分享
網站程式資安白箱與黑箱檢測處理經驗分享Ying-Chun Cheng
 
使安全成為軟體開發必要部分
使安全成為軟體開發必要部分使安全成為軟體開發必要部分
使安全成為軟體開發必要部分Taien Wang
 
渗透测试思路技术与方法
渗透测试思路技术与方法渗透测试思路技术与方法
渗透测试思路技术与方法
 
基礎網頁程式攻擊檢驗
基礎網頁程式攻擊檢驗基礎網頁程式攻擊檢驗
基礎網頁程式攻擊檢驗Taien Wang
 
網頁弱點掃描服務簡報 20120606
網頁弱點掃描服務簡報 20120606網頁弱點掃描服務簡報 20120606
網頁弱點掃描服務簡報 20120606Fionsu
 
WebConf 2013「Best Practices - The Upload」
WebConf 2013「Best Practices - The Upload」WebConf 2013「Best Practices - The Upload」
WebConf 2013「Best Practices - The Upload」Orange Tsai
 
資訊安全入門
資訊安全入門資訊安全入門
資訊安全入門Tyler Chen
 
.NET Security Application/Web Development - Part II
.NET Security Application/Web Development - Part II.NET Security Application/Web Development - Part II
.NET Security Application/Web Development - Part IIChen-Tien Tsai
 
.NET Security Application/Web Development - Overview
.NET Security Application/Web Development - Overview.NET Security Application/Web Development - Overview
.NET Security Application/Web Development - OverviewChen-Tien Tsai
 
議題二:Web應用程式安全防護
議題二:Web應用程式安全防護議題二:Web應用程式安全防護
議題二:Web應用程式安全防護Nicolas su
 
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享ChinaNetCloud
 
.NET Security Application/Web Development - Part I
.NET Security Application/Web Development - Part I.NET Security Application/Web Development - Part I
.NET Security Application/Web Development - Part IChen-Tien Tsai
 
滲透測試 Talk @ Nisra
滲透測試 Talk @ Nisra滲透測試 Talk @ Nisra
滲透測試 Talk @ NisraOrange Tsai
 
伺服器端攻擊與防禦I
伺服器端攻擊與防禦I伺服器端攻擊與防禦I
伺服器端攻擊與防禦ITaien Wang
 
.NET Security Application/Web Development - Part III
.NET Security Application/Web Development - Part III.NET Security Application/Web Development - Part III
.NET Security Application/Web Development - Part IIIChen-Tien Tsai
 
SITCON2021 Web Security 領航之路
SITCON2021  Web Security 領航之路SITCON2021  Web Security 領航之路
SITCON2021 Web Security 領航之路Tzu-Ting(Fei) Lin
 

La actualidad más candente (19)

OWST - Orange Web Security Toolkit Documentation
OWST - Orange Web Security Toolkit DocumentationOWST - Orange Web Security Toolkit Documentation
OWST - Orange Web Security Toolkit Documentation
 
淡江大學 - 產品測試+安全性測試+壓力測試
淡江大學 - 產品測試+安全性測試+壓力測試淡江大學 - 產品測試+安全性測試+壓力測試
淡江大學 - 產品測試+安全性測試+壓力測試
 
Android Taipei 2013 August - Android Apps Security
Android Taipei 2013 August - Android Apps SecurityAndroid Taipei 2013 August - Android Apps Security
Android Taipei 2013 August - Android Apps Security
 
網站程式資安白箱與黑箱檢測處理經驗分享
網站程式資安白箱與黑箱檢測處理經驗分享網站程式資安白箱與黑箱檢測處理經驗分享
網站程式資安白箱與黑箱檢測處理經驗分享
 
使安全成為軟體開發必要部分
使安全成為軟體開發必要部分使安全成為軟體開發必要部分
使安全成為軟體開發必要部分
 
渗透测试思路技术与方法
渗透测试思路技术与方法渗透测试思路技术与方法
渗透测试思路技术与方法
 
基礎網頁程式攻擊檢驗
基礎網頁程式攻擊檢驗基礎網頁程式攻擊檢驗
基礎網頁程式攻擊檢驗
 
網頁弱點掃描服務簡報 20120606
網頁弱點掃描服務簡報 20120606網頁弱點掃描服務簡報 20120606
網頁弱點掃描服務簡報 20120606
 
WebConf 2013「Best Practices - The Upload」
WebConf 2013「Best Practices - The Upload」WebConf 2013「Best Practices - The Upload」
WebConf 2013「Best Practices - The Upload」
 
資訊安全入門
資訊安全入門資訊安全入門
資訊安全入門
 
.NET Security Application/Web Development - Part II
.NET Security Application/Web Development - Part II.NET Security Application/Web Development - Part II
.NET Security Application/Web Development - Part II
 
.NET Security Application/Web Development - Overview
.NET Security Application/Web Development - Overview.NET Security Application/Web Development - Overview
.NET Security Application/Web Development - Overview
 
議題二:Web應用程式安全防護
議題二:Web應用程式安全防護議題二:Web應用程式安全防護
議題二:Web應用程式安全防護
 
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享
运维安全 抵抗黑客攻击_云络安全沙龙4月上海站主题分享
 
.NET Security Application/Web Development - Part I
.NET Security Application/Web Development - Part I.NET Security Application/Web Development - Part I
.NET Security Application/Web Development - Part I
 
滲透測試 Talk @ Nisra
滲透測試 Talk @ Nisra滲透測試 Talk @ Nisra
滲透測試 Talk @ Nisra
 
伺服器端攻擊與防禦I
伺服器端攻擊與防禦I伺服器端攻擊與防禦I
伺服器端攻擊與防禦I
 
.NET Security Application/Web Development - Part III
.NET Security Application/Web Development - Part III.NET Security Application/Web Development - Part III
.NET Security Application/Web Development - Part III
 
SITCON2021 Web Security 領航之路
SITCON2021  Web Security 領航之路SITCON2021  Web Security 領航之路
SITCON2021 Web Security 領航之路
 

Similar a 一個微信專案從0到000的效能調教

twMVC#22 | 一個微信專案從0到.000的效能調教之路
twMVC#22 | 一個微信專案從0到.000的效能調教之路twMVC#22 | 一個微信專案從0到.000的效能調教之路
twMVC#22 | 一個微信專案從0到.000的效能調教之路twMVC
 
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程twMVC
 
twMVC#02 | ASP.NET MVC 從無到有
twMVC#02 | ASP.NET MVC 從無到有twMVC#02 | ASP.NET MVC 從無到有
twMVC#02 | ASP.NET MVC 從無到有twMVC
 
Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2twMVC
 
twMVC#14 | 輕鬆上手ASP.NET Web API 2
twMVC#14 | 輕鬆上手ASP.NET Web API 2twMVC#14 | 輕鬆上手ASP.NET Web API 2
twMVC#14 | 輕鬆上手ASP.NET Web API 2twMVC
 
輕鬆上手Asp.net web api 2.1-twMVC#14
輕鬆上手Asp.net web api 2.1-twMVC#14輕鬆上手Asp.net web api 2.1-twMVC#14
輕鬆上手Asp.net web api 2.1-twMVC#14twMVC
 
twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢twMVC
 
twMVC#19 | opserver監控服務的解決
twMVC#19 | opserver監控服務的解決twMVC#19 | opserver監控服務的解決
twMVC#19 | opserver監控服務的解決twMVC
 
twMVC#24 | 開發團隊的敏捷之路(未完成)
twMVC#24 | 開發團隊的敏捷之路(未完成)twMVC#24 | 開發團隊的敏捷之路(未完成)
twMVC#24 | 開發團隊的敏捷之路(未完成)twMVC
 
開發的效能與效率-twMVC#15
開發的效能與效率-twMVC#15開發的效能與效率-twMVC#15
開發的效能與效率-twMVC#15twMVC
 
twMVC#15 | 開發的效能與效率
twMVC#15 | 開發的效能與效率twMVC#15 | 開發的效能與效率
twMVC#15 | 開發的效能與效率twMVC
 
twMVC#20 | ASP.NET MVC View 開發技巧小錦囊
twMVC#20 | ASP.NET MVC View 開發技巧小錦囊twMVC#20 | ASP.NET MVC View 開發技巧小錦囊
twMVC#20 | ASP.NET MVC View 開發技巧小錦囊twMVC
 
twMVC#03 | ASP.NET MVC內建驗證活用與擴充
twMVC#03 | ASP.NET MVC內建驗證活用與擴充twMVC#03 | ASP.NET MVC內建驗證活用與擴充
twMVC#03 | ASP.NET MVC內建驗證活用與擴充twMVC
 
ASP.NET MVC 內建驗證擴充與活用技巧 -twMVC#3
ASP.NET MVC 內建驗證擴充與活用技巧 -twMVC#3ASP.NET MVC 內建驗證擴充與活用技巧 -twMVC#3
ASP.NET MVC 內建驗證擴充與活用技巧 -twMVC#3twMVC
 
專案分層架構 twMVC#18
專案分層架構 twMVC#18專案分層架構 twMVC#18
專案分層架構 twMVC#18twMVC
 
twMVC#18 | 專案分層架構
twMVC#18 | 專案分層架構twMVC#18 | 專案分層架構
twMVC#18 | 專案分層架構twMVC
 
twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#01 | ASP.NET MVC 的第一次親密接觸twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#01 | ASP.NET MVC 的第一次親密接觸twMVC
 
twMVC#11 | 架構設計入門
twMVC#11 | 架構設計入門twMVC#11 | 架構設計入門
twMVC#11 | 架構設計入門twMVC
 
twMVC#13 | ASP.NET MVC 分頁與排序相關技巧
twMVC#13 | ASP.NET MVC 分頁與排序相關技巧twMVC#13 | ASP.NET MVC 分頁與排序相關技巧
twMVC#13 | ASP.NET MVC 分頁與排序相關技巧twMVC
 
MVC實戰分享 分頁與排序相關技巧-tw mvc#13
MVC實戰分享 分頁與排序相關技巧-tw mvc#13MVC實戰分享 分頁與排序相關技巧-tw mvc#13
MVC實戰分享 分頁與排序相關技巧-tw mvc#13twMVC
 

Similar a 一個微信專案從0到000的效能調教 (20)

twMVC#22 | 一個微信專案從0到.000的效能調教之路
twMVC#22 | 一個微信專案從0到.000的效能調教之路twMVC#22 | 一個微信專案從0到.000的效能調教之路
twMVC#22 | 一個微信專案從0到.000的效能調教之路
 
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
 
twMVC#02 | ASP.NET MVC 從無到有
twMVC#02 | ASP.NET MVC 從無到有twMVC#02 | ASP.NET MVC 從無到有
twMVC#02 | ASP.NET MVC 從無到有
 
Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2
 
twMVC#14 | 輕鬆上手ASP.NET Web API 2
twMVC#14 | 輕鬆上手ASP.NET Web API 2twMVC#14 | 輕鬆上手ASP.NET Web API 2
twMVC#14 | 輕鬆上手ASP.NET Web API 2
 
輕鬆上手Asp.net web api 2.1-twMVC#14
輕鬆上手Asp.net web api 2.1-twMVC#14輕鬆上手Asp.net web api 2.1-twMVC#14
輕鬆上手Asp.net web api 2.1-twMVC#14
 
twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢twMVC#31網站上線了然後呢
twMVC#31網站上線了然後呢
 
twMVC#19 | opserver監控服務的解決
twMVC#19 | opserver監控服務的解決twMVC#19 | opserver監控服務的解決
twMVC#19 | opserver監控服務的解決
 
twMVC#24 | 開發團隊的敏捷之路(未完成)
twMVC#24 | 開發團隊的敏捷之路(未完成)twMVC#24 | 開發團隊的敏捷之路(未完成)
twMVC#24 | 開發團隊的敏捷之路(未完成)
 
開發的效能與效率-twMVC#15
開發的效能與效率-twMVC#15開發的效能與效率-twMVC#15
開發的效能與效率-twMVC#15
 
twMVC#15 | 開發的效能與效率
twMVC#15 | 開發的效能與效率twMVC#15 | 開發的效能與效率
twMVC#15 | 開發的效能與效率
 
twMVC#20 | ASP.NET MVC View 開發技巧小錦囊
twMVC#20 | ASP.NET MVC View 開發技巧小錦囊twMVC#20 | ASP.NET MVC View 開發技巧小錦囊
twMVC#20 | ASP.NET MVC View 開發技巧小錦囊
 
twMVC#03 | ASP.NET MVC內建驗證活用與擴充
twMVC#03 | ASP.NET MVC內建驗證活用與擴充twMVC#03 | ASP.NET MVC內建驗證活用與擴充
twMVC#03 | ASP.NET MVC內建驗證活用與擴充
 
ASP.NET MVC 內建驗證擴充與活用技巧 -twMVC#3
ASP.NET MVC 內建驗證擴充與活用技巧 -twMVC#3ASP.NET MVC 內建驗證擴充與活用技巧 -twMVC#3
ASP.NET MVC 內建驗證擴充與活用技巧 -twMVC#3
 
專案分層架構 twMVC#18
專案分層架構 twMVC#18專案分層架構 twMVC#18
專案分層架構 twMVC#18
 
twMVC#18 | 專案分層架構
twMVC#18 | 專案分層架構twMVC#18 | 專案分層架構
twMVC#18 | 專案分層架構
 
twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#01 | ASP.NET MVC 的第一次親密接觸twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#01 | ASP.NET MVC 的第一次親密接觸
 
twMVC#11 | 架構設計入門
twMVC#11 | 架構設計入門twMVC#11 | 架構設計入門
twMVC#11 | 架構設計入門
 
twMVC#13 | ASP.NET MVC 分頁與排序相關技巧
twMVC#13 | ASP.NET MVC 分頁與排序相關技巧twMVC#13 | ASP.NET MVC 分頁與排序相關技巧
twMVC#13 | ASP.NET MVC 分頁與排序相關技巧
 
MVC實戰分享 分頁與排序相關技巧-tw mvc#13
MVC實戰分享 分頁與排序相關技巧-tw mvc#13MVC實戰分享 分頁與排序相關技巧-tw mvc#13
MVC實戰分享 分頁與排序相關技巧-tw mvc#13
 

Más de Bruce Chen

網站自動化測試
網站自動化測試網站自動化測試
網站自動化測試Bruce Chen
 
KSDG-ASP.NET MVC 5 Overview (偽三國誌)
KSDG-ASP.NET MVC 5 Overview (偽三國誌)KSDG-ASP.NET MVC 5 Overview (偽三國誌)
KSDG-ASP.NET MVC 5 Overview (偽三國誌)Bruce Chen
 
@Connect(); microsoft visual studio vnext & azure
@Connect(); microsoft visual studio vnext & azure@Connect(); microsoft visual studio vnext & azure
@Connect(); microsoft visual studio vnext & azureBruce Chen
 
輕鬆上手ASP.NET Web API 2.1.2
輕鬆上手ASP.NET Web API 2.1.2輕鬆上手ASP.NET Web API 2.1.2
輕鬆上手ASP.NET Web API 2.1.2Bruce Chen
 
2014 Global Windows Bootcamp - 笑cc讓網站上雲端
2014 Global Windows Bootcamp - 笑cc讓網站上雲端2014 Global Windows Bootcamp - 笑cc讓網站上雲端
2014 Global Windows Bootcamp - 笑cc讓網站上雲端Bruce Chen
 

Más de Bruce Chen (6)

ReSharper
ReSharperReSharper
ReSharper
 
網站自動化測試
網站自動化測試網站自動化測試
網站自動化測試
 
KSDG-ASP.NET MVC 5 Overview (偽三國誌)
KSDG-ASP.NET MVC 5 Overview (偽三國誌)KSDG-ASP.NET MVC 5 Overview (偽三國誌)
KSDG-ASP.NET MVC 5 Overview (偽三國誌)
 
@Connect(); microsoft visual studio vnext & azure
@Connect(); microsoft visual studio vnext & azure@Connect(); microsoft visual studio vnext & azure
@Connect(); microsoft visual studio vnext & azure
 
輕鬆上手ASP.NET Web API 2.1.2
輕鬆上手ASP.NET Web API 2.1.2輕鬆上手ASP.NET Web API 2.1.2
輕鬆上手ASP.NET Web API 2.1.2
 
2014 Global Windows Bootcamp - 笑cc讓網站上雲端
2014 Global Windows Bootcamp - 笑cc讓網站上雲端2014 Global Windows Bootcamp - 笑cc讓網站上雲端
2014 Global Windows Bootcamp - 笑cc讓網站上雲端
 

Último

20170104 - transaction_pattern
20170104 - transaction_pattern20170104 - transaction_pattern
20170104 - transaction_patternJamie (Taka) Wang
 
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptxSymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptxNCU MCL
 
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptxNCU MCL
 
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptxNCU MCL
 
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptxNCU MCL
 
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】黑客 接单【TG/微信qoqoqdqd】
 
20161220 - domain-driven design
20161220 - domain-driven design20161220 - domain-driven design
20161220 - domain-driven designJamie (Taka) Wang
 
20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLP20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLPJamie (Taka) Wang
 
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptxNCU MCL
 
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptxSymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptxNCU MCL
 

Último (15)

20170104 - transaction_pattern
20170104 - transaction_pattern20170104 - transaction_pattern
20170104 - transaction_pattern
 
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptxSymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
 
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
 
20161027 - edge part2
20161027 - edge part220161027 - edge part2
20161027 - edge part2
 
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
 
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
 
20200226 - AI Overview
20200226 - AI Overview20200226 - AI Overview
20200226 - AI Overview
 
20151111 - IoT Sync Up
20151111 - IoT Sync Up20151111 - IoT Sync Up
20151111 - IoT Sync Up
 
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
 
20161220 - domain-driven design
20161220 - domain-driven design20161220 - domain-driven design
20161220 - domain-driven design
 
20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLP20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLP
 
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
 
20200323 - AI Intro
20200323 - AI Intro20200323 - AI Intro
20200323 - AI Intro
 
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptxSymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
 
Entities in DCPS (DDS)
Entities in DCPS (DDS)Entities in DCPS (DDS)
Entities in DCPS (DDS)
 

一個微信專案從0到000的效能調教

Notas del editor

  1. 有三段故事 人 – Team 物 - 環境 事 - Code
  2. 在我的看法,有兩種… 程式是人寫的…
  3. 講者是微信的人 …
  4. 眼紅 … 後面解釋
  5. 只要專案趕得出來… 你自由自在,不代表別人自由自在…
  6. 請交出 KPI…
  7. 魔王是誰?
  8. 我是倒數第二位加入 故事講完,人就會不見了 … 是給出投影片”人”就會不見了 … 三男三女,很健康的比例 …
  9. 有時間壓力 有成本壓力 有技術壓力 有成績壓力 以下做的事,都是在壓力的前提下產生的
  10. 傳統辦公室,還是能有改善空間… 理由:Scrum :P
  11. NB 電腦重灌,用桌機用的很痛苦 XD HDD 是以”分鐘”為單位 SSD 是以”秒”為單位 大公司有非常嚴謹資安管理… 256 GB SSD 其實也不太夠…
  12. 老師在說,同學有沒有在聽 XD
  13. 後面那個螢幕架很好用
  14. NB 不太會外接鍵盤,但一定要有好滑鼠…
  15. 千萬不要去現場試坐 111  121
  16. 腳踏板
  17. 常常有人來跑來照像
  18. 眼紅 … 後面解釋
  19. 我對未婚者,沒有惡意
  20. 下一個專案,準備換 Git 目的在於,如果導入失敗,可以隨時切換回熟悉的模式 可惜的是,沒有往 DevOps 走下去 …
  21. 分工 前端 - React.js - 二位 中端 – MVC / API - 二位 後端 – Azure / Database - 一位
  22. Azure Table Storage API 泛型設計
  23. 爛code經典回顧
  24. 效能調教完畢
  25. 專案剛啟動不久,還有救…
  26. 有人知道二者的差異嗎?
  27. 專案中有使用 Identity 的舉手一下? 1. Identity 自由度太高,入門成本不小,在內部推廣 … (除非有位強者)
  28. 效果不錯,現在新專案都已經開好三層了
  29. 有點點問題,
  30. 整個資料庫的規劃與開發就是一個專案; 更新、發現相當容易; 可以版控。
  31. 存取都只有透過 SP 1. 好處,得到資料庫端的效能 2. 缺點,LINQ 好像廢了一樣
  32. 除了 CRUD 之外,你還有使用到 ORM Framework 其他特性?
  33. 記得,讓所有人跟上,而不是自己一個人衝衝衝…
  34. 三個 0 有很大程度是因為做了這三件事,這三件事,我們都有做…
  35. 我是盡量兩者都用
  36. 我們的應用程式串接大量”微信 API”,我們會將讀取的資料入 Table 做快取之用
  37. 成功不會是一步到位 就像最近火紅的 DevOps 也是如上圖