Създавам рамка за добавяне на добавки към мое приложение. Всеки плъгин трябва да имплементира абстрактн клас. След това всеки плъгин се компилира като DLL, който основното приложение може да намери с Directory.GetFiles(myPath, "*.dll")
Всичко това работи гладко и мога да инстанцирам плъгините си в основното приложение и да ги използвам. Всеки плъгин е основно приспособление за табло за управление, което потребителят може да добави към своето табло за управление, за да му покаже някои графики или диаграми. Това означава, че всеки плъгин има таймер и при всяко събитие на таймера обновява графиката с данни от SQL базата данни на приложението.
Въпросът ми е къде да сложа SqlConnection
? Създавам ли един SqlConnection
и го предавам като параметър на всеки плъгин или да предавам низа за свързване и всеки плъгин да създава свой собствен SqlConnection
?
Ако предам SqlConnection
на приложението към приставката, предполагам, че това ще включва известно управление на връзката вътре в приставката. Очевидно ще трябва да проверя дали е отворено и какво да правя, ако състоянието му е ConnectionState.Fetching
или ConnectionState.Executing
? Просто изглежда тромаво.
Но от друга страна, като се има предвид, че множество потребители ще изпълняват приложението и всеки потребител може да има няколко избрани приставки в таблото си за управление, това може да доведе до брой SqlConnections
. Това желателно ли е? Трябва ли да обмисля трета опция, при която приставката дава своята заявка на хоста, който я поставя на опашка с други заявки от други приставки и връща набора от резултати на приставката, след като заявката е изпълнена? По този начин поне има само едно SqlConnection
за всеки потребител, независимо колко добавки са избрали.
Честно казано, последната опция ми се струва доста сложна и все още не съм съвсем сигурен как бих я приложил. Ако някой може да ме насочи към статия, която обяснява нещо подобно, ще съм много благодарен.