作者wind681201 (阿風~~)
看板C_Sharp
標題[問題] 關於物件導向及MVC的連線問題
時間Thu Sep 26 22:31:28 2013
各位大大,這個問題在我心裡一直困擾很久了,雖然也做過測式,但還是不太了解。
需求:從資料庫中,以英文名稱對應中文姓名,例:傳入jack 得到 大明。
做一個class 其中function來讓程式呼叫
狀況一:
不使用MVC的狀況下,在gridview中的,RowCreated的事件中,
呼叫這個class,假設有十列,若這樣對應的話,在class中就會產生十次連
線去做對應這件事?
狀況二:
用MVC的狀況下,在controller中,若以linq來做
例如: var c = from v in aaaa
select {.chiname = getchiname(row("english"))}
請問這樣的寫法下,假設資料一樣十行,也會產生十次連線嗎?
問題,其實很想用一次連線去做這件事,但因為分散資料庫,所以無法做關連,
linked server也遇到了sql版本不同,效能很慘的狀況,所以得分散,不知道
各位是怎麼解決這樣的事的,這樣若有十個人用,就會產生100次以上的連線,
很可怕。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.134.121.234
1F:推 MacPerson:答案是.... singleton module?最近書上看到給您作個參考 09/26 22:53
2F:→ wind681201:可是假如第一個是jack,第二個是marry,還是得再連一次 09/26 23:37
3F:→ soup514:singleton也是個做法 其實就是將資料load到記憶體 09/27 00:38
4F:→ soup514:每次取用就不用回db抓 但要考慮資料大小 更新頻率 09/27 00:39
5F:→ soup514:資料量很大 或許可以考慮hashtable方式 沒取過的才去db取 09/27 00:40
6F:→ Litfal:連線的部分,.net會用Pool的方式去管理,應該不太需要擔心 09/27 08:03
7F:→ Litfal:效能的部分,則要看系統是怎麼回事...以你的情況而言,獨體 09/27 08:11
8F:→ Litfal:要用快取機制你得確保資料庫只有你會更新,或是容許一定的 09/27 08:12
9F:→ Litfal:誤差。 09/27 08:12
10F:推 MacPerson:L大給您請教 pooling機制 假設在 connetion string 已經 09/27 22:53
11F:→ MacPerson:預設pooling 那元po所擔心的連線數問題是不是就解了? 09/27 23:00
12F:→ MacPerson:因此在撰寫程式時 就不需擔心連線數問題.. 都交給poolin 09/27 23:01
13F:→ Litfal:我是建議先這樣,Connection和DataContext保持用完即丟。 09/28 12:00
14F:→ Litfal:原PO有多資料庫,會分別對應到不同的Pool,這的確會造成較 09/28 12:02
15F:→ Litfal:大的負擔。 09/28 12:02