1 / 1 / 2
Регистрация: 17.07.2014
Сообщений: 9
|
|
1 | |
Связь БД Firebird и клиента на Windows Forms с помощью WCF28.05.2015, 15:35. Показов 1078. Ответов 5
Метки нет (Все метки)
Имеется клиент-серверное приложение, двухуровневое, толстый клиент.
СУБД - Firebird. Клиент - WinForms приложение. Связь с БД - через ADO.NET Data Provider. Над методами провайдера сделана надстройка из своих методов, для упрощения работы. Над надстройкой - слой бизнес-логики, класс, содержащий в себе кучку классов, по одному для работы с каждой из сущностей. В этом же классе доступ для пользователей к тем или иным операциям БЛ. Из слоя представления (формы и т.д.) методы для работы с БД не видны (как и положено), видны только методы БЛ. Хочется это дело для порядку перевести на 3-уровневую архитектуру, чтобы БЛ была на сервере приложения, а со стороны клиента подключиться напрямую к БД было физически нельзя. То есть у клиента - формочки и минимум логики, а всё остальное через сервер. Полазил в инете, вроде для таких целей советуют WCF. Вот только не представляю себе как это реализовывать. Держать одно подключение к БД на всех пользователей не хотелось бы - у провайдера нет поддержки паралельных транзакций. На каждого пользователя по отдельному подключению, а как? Со стороны клиента запрашивать создание класса с БЛ, и получать при этом идентификатор, чтобы потом его серверу подсовывать каждый раз и тот знал, к какому классу обращаться и что пользователю можно, а что нельзя? В общем, это все дело в голове упорно не увязывается. Не хочу громоздить велосипеды, возможно у кого-то есть простое и эффективное решение?
0
|
28.05.2015, 15:35 | |
Ответы с готовыми решениями:
5
Как передать файл из клиента в сервер с помощью WCF Пример службы WCF на Windows Forms Firebird + VS2010 Windows Forms Windows.Forms - элементы на стороне клиента |
1643 / 1144 / 171
Регистрация: 23.07.2010
Сообщений: 6,794
|
|
29.05.2015, 12:35 | 2 |
подключение - печаль сервиса. клиент должен дернуть нужный сервис и получить данные.
0
|
1 / 1 / 2
Регистрация: 17.07.2014
Сообщений: 9
|
|
29.05.2015, 12:39 [ТС] | 3 |
То есть предлагаете при каждой операции БЛ передавать серверу имя/пароль чтобы тот на ходу создавал подключение, проверял разрешения и сразу его закрывал по завершении операции? С такими дерганиями подключения туда-сюда это на быстродействии не сильно отразится?
Применение каких-нибудь сессий не из этой же оперы?
0
|
1643 / 1144 / 171
Регистрация: 23.07.2010
Сообщений: 6,794
|
|
29.05.2015, 12:43 | 4 |
в wcf контракты. чего кому можно дергать - решает только клиент
0
|
29.05.2015, 15:13 | 5 |
blackadder321, В WCF есть 3 режима инстанцирования сервисов: per call, per session & singleton. Какой выбирать - решать вам.
Подключение к базе? Это лучшая практика - открывать/закрывать подключение на каждом запросе, чтобы вернуть соединение в пул, которое будет использовано при следующем запросе. В ADO.NET механизм пулинга соединений уже реализован.
0
|
0 / 0 / 0
Регистрация: 04.06.2015
Сообщений: 2
|
|
04.06.2015, 12:59 | 6 |
да, делается метод ConnectToSvc() , ему передается имя, пароль и т.д., он при успехе возвращает ид сессии, и затем в каждый метод клиент сует этот ид.
Собственно, я делаю в каждом методе внутри сервиса connect, query, disconnect к серверу баз, при включенном connection pool, если он поддерживается.
0
|
04.06.2015, 12:59 | |
04.06.2015, 12:59 | |
Помогаю со студенческими работами здесь
6
Связь приложения Windows Forms и СУБД Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |