舉例,現在有一個本周營收報表需求
↓ 首先我會做排程器,而不用網頁更新方式,每天固定一個時間去把本周的資料作整理,把結果存到一個實體結果表內。
1.使用 Quartz 做排程器
可以參考
Quartz Enterprise Scheduler .NET,
Quartz可以滿足更多複雜排程時間的需求,但需要進階一點的技術要求。
2.讓windows內建『工作排程器』定期跑程式
因為執行完就關閉程式,可以簡化資源釋放的邏輯,操作方式也非常簡單。
不好版控
,難以撰寫複雜邏輯
缺點。↓ 接著使用ASP.NET MVC在呈現給使用者報表時,抓取該儲存結果實體表的資料
,而不是又重新執行本周報表整理程式,並且做『緩存』
保存,讓一段時間內的使用者都抓取該緩存資料,快速又減輕資料庫負擔。
既有的寫法是開啟的網頁固定五分鐘跟 DB 要資料作即時資料顯示,
但是怕開啟多個網頁後 Client 的其它程式會因為網頁造成無法寫入動作。
另外假如要做成即時報表
可以使用WebSocket
技術,當執行程式有更新的時候,推播到使用者瀏覽器,更新報表頁面,但需要多寫一些代碼。
假如只是簡單需求,使用JS Timer + Ajax其實就夠用了。
詢問以上說的 '抓取該儲存結果"實體表"的資料',
實體表指的是將資料儲存到另一個 db 還是哪裡?
該DB另外開一個你select結果的表格就可以
可以使用以下Script快速建表
select * into 結果表格 from (
一周報表邏輯select結果
)T
Client DB 的資料為一分鐘會新增多筆資料(我要抓取的資料都是最新的 100 筆所以一開始才會說網頁五分鐘抓一次資料以求網頁 Flot 資料表顯示即時資訊),也是適合做排程嗎?
這樣你的例子不適合
另外做一個排程器,因為你要求最新
資料,
排程器方式要能接受時間延遲
,所以你要改成使用無生命週期的緩存
,當新增資料到DB外,另外要新增資料該緩存,新的Reqeust都從該緩存抓取資料顯示資訊。
工作排程是否為寫另一個程式做資料抓取
是
詢問以上說的 '抓取該儲存結果"實體表"的資料',
實體表指的是將資料儲存到另一個 db 還是哪裡?
Client DB 的資料為一分鐘會新增多筆資料(我要抓取的資料都是最新的 100 筆所以一開始才會說網頁五分鐘抓一次資料以求網頁 Flot 資料表顯示即時資訊),也是適合做排程嗎?
工作排程是否為寫另一個程式做資料抓取
詢問以上說的 '抓取該儲存結果"實體表"的資料',
實體表指的是將資料儲存到另一個 db 還是哪裡?
該DB另外開一個你select結果的表格就可以
可以使用以下Script快速建表
select * into 結果表格 from (
一周報表邏輯select結果
)T
Client DB 的資料為一分鐘會新增多筆資料(我要抓取的資料都是最新的 100 筆所以一開始才會說網頁五分鐘抓一次資料以求網頁 Flot 資料表顯示即時資訊),也是適合做排程嗎?
這樣你的例子不適合
另外做一個排程器,因為你要求最新
資料,
排程器方式要能接受時間延遲
,所以你要改成使用無生命週期的緩存
,當新增資料到DB外,另外要新增資料該緩存,新的Reqeust都從該緩存抓取資料顯示資訊。
工作排程是否為寫另一個程式做資料抓取
是
該作法是將最新搜尋出的資料儲存在同一個 Client DB 上嗎?
一開始會考慮到放回Server 是因為我的架構下
A. Client 有幾十台,網頁每五分鐘跟不同 Client 要資料
B. Client 也會占用到網路及時跟硬體要資料
所以如果又把資料放回 Client DB 等於網頁還是會經過網路至Client 要資料
Client 有幾十台,網頁每五分鐘跟不同 Client 要資料
不太懂,你有做分布式Server架構?
我個人理解的Client是使用者瀏覽器端
該作法是將最新搜尋出的資料儲存在同一個 Client DB 上嗎?
我有看到大大你在後面有補充要『最新資料』
代表不需要
另外開一張表格,將ASP.NET MVC的緩存機制做好就可以。
大大抱歉我說的Client是其它PC,PC上進行資料蒐集,使用者經由瀏覽器(網頁)至Server下指令跟該PC的DB進行資料讀取。
所以我有幾十台資料收集的PC(經由網路收集硬體資料),我用網頁即時監控各工段的機台數據。
詢問無生命週期緩存的功能 MVC 有哪個功能可以達成此動作嗎(固定時間拿取資料)?