Вопрос по дизайну программы - PullRequest
2 голосов
/ 21 октября 2009

Я занимаюсь разработкой приложения для Windows Mobile WinForm, которое использует Sql Server CE 3.1 с .NET Compact Framework 2.0 с пакетом обновления 2 (SP2) и C #.

У меня есть форма с объектом SqlCeConnection, открытым в течение всего времени ее выполнения: я открываю соединение при запуске и закрываю его при закрытии события.

У меня также есть класс для чтения базы данных Sql Server CE.

Мой вопрос касается производительности: Какая из этих двух ситуаций является лучшей?

1. Когда я создаю объект класса считывателя, передаем в конструктор объект SqlCeConnection и сохраняем его в этом новом объекте как свойство.

2. Всегда, когда я вызываю метод этого класса считывателя, передаем объект SqlCeConnection в качестве параметра.

Я думаю, что если я использую ситуации 1, у меня есть два объекта SqlCeConnection, не так ли?

Если вам нужно больше деталей, скажите мне.

Спасибо!

1 Ответ

1 голос
/ 21 октября 2009

Чтобы ответить на свой последний вопрос первым, нет, у вас не будет двух разных соединений в сценарии 1. Передаваемое вами SqlCeConnection является ссылкой, поэтому форма и класс читателя имеют ссылку на один и тот же базовый объект соединения .

На самом деле я не думаю, что в этих двух сценариях есть огромная разница. Поскольку вы сохраняете соединение открытым в течение всего времени жизни формы, на самом деле не имеет значения, передаете ли вы его в конструктор этого вторичного класса или для каждого метода. Поэтому я думаю, что проще сделать сценарий 1 таким образом, чтобы список параметров для каждого вызова был меньше.

Это будет иметь значение, если вы пытаетесь минимизировать время жизни вашего соединения. Например, в приложении для рабочего стола Windows, подключающемся к обычному серверу SQL, на самом деле вы не захотите хранить открытые соединения на протяжении всей жизни формы, потому что, если множество людей открывают множество форм, у вас возникают проблемы с производительностью. ваш сервер. Таким образом, в этом случае вы должны создать соединение в последнюю секунду, передать его в программу чтения, чтобы получить данные, и немедленно закрыть его. Сценарий 2 будет лучше для вас в этом случае.

Но этот сценарий не кажется вам важным в мобильном приложении. Вы, вероятно, единственный, кто подключается к базе данных, поэтому не имеет значения, если вы оставите соединение открытым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...