Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Sql-Запрос клиента и ответ сервера, как организовать?? 
:(
    Опции темы
gORik
Дата 11.3.2009, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 23.10.2007

Репутация: нет
Всего: нет



Здравствуйте! 
Начал разбираться с System.Net.Sockets - научился организовывать общение клиента с сервером посредством текстовых сообщений.  Все вроде бы хорошо работает. Но пришла необходимость прикрутить к серверу БД. При работе з БД из серверного приложения проблем не возникает. Вопрос : как организовать общение между клиентом и сервером чтоб клиент мог отправить запрос скажем на выборку данных или удаление а сервер в ответ отдал клиенту набор даных или же результат исполнения операции. Грубо говоря как клиенту, обьяснить серверу что он хочет делать з БД?? отправлять sql-запрос как текст? или же отправлять какие то идентификаторы по которым формировать сам запрос на сервере?? Далее набор даных как отдавать клиенту? вроде би самый подходящий вариант xml?

Ногами не бить  smile  искал в нете долго включая и этото форум ничего толком не нашел (
Буду благодарен за примеры  smile  smile 
PM MAIL ICQ   Вверх
gORik
Дата 16.3.2009, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 23.10.2007

Репутация: нет
Всего: нет



Апдейт ) 
Получилось делать запрос на выборку..
Работает так : Клиент посылает запрос сервер обрабатывает и возвращает датасет. запрос клиенту идет в обычном string-формате, конвертируется в массив байтов и посылаться на сервер.. сервер деконвертирует в стринг выбирает данные пишет з датасета в хмл, потом в поток байтов и посылает клиенту.
Как сделать чтоб клиент мог изменять данные и посылать их на сервер?
То есть посылать обновленный датасет на сервер и сервер понимал что это датасет а не соообщение?
как то специально обозначать первые пару байтов может быть?
PM MAIL ICQ   Вверх
Rififi
Дата 16.3.2009, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: нет
Всего: 36



gORik
Грубо говоря как клиенту, обьяснить серверу что он хочет делать з БД??
использовать клиент-серверную БД, которая умеет пускать к себе по tcp/ip
PM MAIL   Вверх
gORik
Дата 17.3.2009, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 23.10.2007

Репутация: нет
Всего: нет



да, но нужна трехуровневая  архитектура:
СУБД(MSSQLServer)<->Серверное приложение<->1...n Клиентских приложений...  
PM MAIL ICQ   Вверх
Rififi
Дата 17.3.2009, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: нет
Всего: 36



ох, уж эти преподы-затейники.. каждый раз что-нибудь новенькое выдумывают.
для коммуникации со вторым звеном используй .net remoting или web services, или ищи полноценный сервер приложений, наподобие jboss в java
PM MAIL   Вверх
gORik
Дата 17.3.2009, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 23.10.2007

Репутация: нет
Всего: нет



Использую System.Net.Sockets, и вроде все не плохо получается вот только проблемы с форматом общения клиента с сервером..
Нада юзать что нить типа такого : превые 1-2 байта [идентификатор сообщения] далее несколько байт [подтверждение  прав(пароль..)] далее [длина данных], а далее [сами данные] ..
PM MAIL ICQ   Вверх
-Mikle-
Дата 17.3.2009, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 1
Всего: 59



Цитата(gORik @  16.3.2009,  21:09 Найти цитируемый пост)
То есть посылать обновленный датасет на сервер и сервер понимал что это датасет а не соообщение?
как то специально обозначать первые пару байтов может быть?


Ну уж если действительно именно так нужно, то я, в подобных случаях, делал пакет-обертку, которая имеет такой формат (привожу упрощенно):

Код

class Packet
{
    byte[] Prefix; // 4 байта
    PackType Type; // 1 байт
    int ID; // 4 байта
    int BodyLength; 
    byte[] Body;
}


Prefix - некоторый набор байтов фиксированной длины, по которому определяется начало пакета.
PackType - тип пакета. Перечисление, в котором ты определяешь тип пакета. Если упростить, то в перечисление можно закинуть все типы, например, SQLQuery, Error, OK, SQLResult, Disconnect, Ping, Pong и т.д. и т.п.
ID - нужен для того, чтоб можно было организовать асинхронную работу с сервером. Если к серверу приходит пакет с ID=22, то он, когда данные готовы, должен отправить ответ в пакете с ID=22.
BodyLength - длина тела пакета.
Body - тело пакета. Тут уже шлешь непосредственно данные, в зависимости от типа пакета.

PS:
Цитата(Rififi @  17.3.2009,  11:48 Найти цитируемый пост)
ох, уж эти преподы-затейники.. каждый раз что-нибудь новенькое выдумывают

На самом деле, архитектура
СУБД(MSSQLServer)<->Серверное приложение<->1...n Клиентских приложений...
не так уж и плоха. В некоторых случаях бывает полезной.



--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
gORik
Дата 20.3.2009, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 23.10.2007

Репутация: нет
Всего: нет



Всем спасибо! разобрался smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0881 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.