![]() |
|
Модераторы: gambit |
![]()
|
|
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: нет Всего: 24 |
Всем привет. пишу приложение для работы с сервером SQL через сеть. схема такая: есть клиентская часть, пользователь заполняет поля в форме, жмет отправить, прога шифрует данные и отправляет их серверу. сервер расшифровывает и делает то что ему сказал клиент(выборка данных из базы, удаление, вставка новых данных, обновления), результат в шифрованном видле возвращается обратно клиенту. вопрос в том как объяснить серверу, что именно я хочу сделать с данными. отправлять сразу запрос от клиента, мне кажется как то не кошерно, придется хранить в клиенте все варианты запросов к базе, если что то менять то будет лажа, плюс отправка значений будет занимать меньше времени(кодирование/декодирование, пересылка). подскажите кто сталкивался(ну или просто у кого есть какие мысли по этому поводу) как лучше всего объяснить серверу, что делать с данными.
заранее спасибо. |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
мне кажется что вам надо почитать про порождающие паттерны...
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: нет Всего: 24 |
jonie, ммм, ну я несколько знаю (если, конечно, не путаю): "одиночка", "абстрактная фабрика", "Строитель" и иже с ними... Но что то никак не могу понять как ты предлагаешь мне их использовать в данной ситуации. можно пример? или теоретических рассуждений немножко...
|
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: нет Всего: 24 |
неужели никто не сталкивался с подобной проблемой? расскажите как решали. очень надо.
|
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 3 Всего: 36 |
если коротко, то паттерн "запрос"
а подлиннее - и долго, и от кучи факторов и требований зависит мне кажется, что ты выбрал неправильный подход к задаче. ну придумаешь ты инкапсуляцию запросов в классы, чем это поможет? это избавит клиент от знания всех типов и вариантов запросов, но потребуетдать эти знания серверу в любом случае, у тебя будет пусть и расширяемый, но довольно узкий диапазон возможностей. если нужен, условно говоря, полный доступ к базе, то зачем все эти пляски с сервером и криптованием (при условии, конечно, что речь идёт о интранет-приложении)? можно возспользоваться штатными средствами, ограничившись одним клиентом бонусом будет халявная поддержаскульных ролей и прав юзеров, при window-аутентификации вообще делать ничего не придётся если не очень нужен, и требуется лишь доступ к определённым таблицам и определённым действиям с ними, то классический подход с доменной моделью будет в самый раз как бы то ни было, на всякий случай замечу: заниматься шифрованием коммуникации между компонентами самостоятельно удел велосипедистов, всё это делается штатными средствами wcf Это сообщение отредактировал(а) mihryak - 23.4.2010, 22:24 |
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: нет Всего: 24 |
может подход и не тот, но так хочет "руководство". надо что бы было шифрование при отправке данных. тут ничего не изменить. тема собсно не в этом, а в том как лучше сделать отправку данных. сразу в виде запроса, или можно как то отправлять сами данные, но тогда возникает вопрос как объяснить серверной части что с ними делать. |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 3 Всего: 36 |
ну так работай с датасетами, соединение защищай ssl, если начальству виднее, какая должна быть архитектура
|
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: нет Всего: 24 |
ну зачем же так жестоко. сразу датасетами...
|
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 3 Всего: 36 |
а чего жестокого?
помимо общего контейнера, готового работать с произвольными данными (т.е. по сути с базой данных), ты получишь автоматическую инкупсуляцию работы с ними т.е. пользователь выбрал таблицу, сервер (и всё же - он нужен вообще?) прислал данные, клиент их отредактировал (добавил, удалил, изменил), вызвал GetChanges() и послал изменный набор обратно. сервер их принял и перенёс с помощью адаптера изменения на реальную базу. в случае необходимости можно поиграться с изменением контроля над concurrency в результате имеем: - полное освобождение от знаний о скульных запросах на клиенте (в реальности даже скуля может не быть, хоть xml - клиент об этом не узнает) - полный контроль над изменениями на сервере (в случае необходимости) - некоторые оверхэды по объёму передаваемых данных, но, думаю, что это не будет критичным если коммуникацию с сервером сделать через wcf+ssl с windows-аутентификацией, то в результате трудозатраты сведутся практически к написанию клиентской морды, а на выходе будет вполне себе безопасное и легко администрируемое штатными средствами приложение не вижу признаков жестокости впрочем, если бы ты не партизанил, а подробней бы описал задачи и требования к системе, то и решение могло бы быть иным Это сообщение отредактировал(а) mihryak - 24.4.2010, 18:35 |
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: нет Всего: 24 |
пользователь не будет ничего выбирать. у него есть вполне конечный список действий с конкретной базой конкретного сервера. и никакой самодеятельности он(пользователь) сделать не сможет. пример: касса магазина. кассирша пробивает товар. терминал сравнивает штрих-код товара с тем что храниться в базе и возвращает стоимость товара, наименование и пр. потом кассир подтверждает продажу, в базу вносятся изменения(добавляется сумма, списывается количество товара и пр.). по условию поставленной задачи, все обмены данными между терминалом и сервером должны быть зашифрованы. отсюда возникает необходимость в серверной части проги, которая будет принимать зашифрованные данные, расшифровывать и выполнять то что нужно клиенту, потом шифровать и отправлять обратно(как по другому, без серверной части, это реализовать я не знаю). очевидно что в данном случае терминалу совсем не нужен дата сет с кучей ненужной ему инфы, нужен минимум, и отправить серверу он тоже должен минимум. вопрос в том как при этом объяснить серверу что именно хочет от него клиент. пока мне все видится так: посылаем серверу структуру вида: код команды размер тела данных собственно данные в виде массива байтов на сервере по коду команды принимаем решение что с этим добром делать и делаем. соответственно клиент будет ждать ответ от сервера тоже в определенном формате. но мне кажется что должен быть более кошерный способ реализации передачи этих данных. |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 3 Всего: 36 |
ох...
и к чему здесь городить все эти команды, коды и прочее? напрашивается же тривиальное клиентское API:
вся бизнес-логика на сервере, в т.ч. выборка из базы, транзакционность, всякие проверки и т.п. ещё раз повторюсь - не занимайся шифрованием, все банки (уж кто-то, а они точно тревожатся о безопасности и надёжности) используют ssl и не тревожатся на этот счёт всё это уже замечательно реализовано в wcf, причём то же шифрование транспорного уровня легко как навешивается, так и снимается познакомь начальство с википедией, если не поймут, советую подыскать другую работу и смайлик тут просто для неформальности, сама фраза серьёзна Добавлено через 11 минут и 14 секунд в догонку если работу менять совсем уж не хочется, и при этом считаешь, что все придуманные человечеством велосипеды скучны, и очень не хватает треугольноколёсных, то можешь взять на заметку, что в стандартных (.net 2.0) веб-сервисах есть возможность получить доступ к отправляемому сообщению и, перехватив его перед отправкой, зашифровать, на сервеве же можно выполнить обратные действия, всё это будет работать в виде навешенного (и отключаемого) уровня над штатными средствами в .net 3.0 тоже можно управлять передачей сообщений в тех же целях совесть будет мешать заснуть, но начальство останется довольным если надо, могу предложить код для 2.0, для 3.0 тоже могу посмотреть, но это если не будет лениво заниматься бесполезными вещами |
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: нет Всего: 24 |
mihryak, познакомил. вроде согласились. )))
возникает вопрос: если я хочу это сделать, скажем, через Remoting. то как в него добавить SSL(был бы очень благодарен за ссылку на пример или толковое описание). |
|||
|
||||
| uranpro |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 571 Регистрация: 7.5.2008 Где: Moscow city Репутация: нет Всего: 1 |
-------------------- I want a perfect soul |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 3 Всего: 36 |
Экскалупатор, я использовал ssl только в .net 2.0 web services и в wcf, так что могу только первую ссылку из гугла предложить...
http://msdn.microsoft.com/en-us/magazine/cc300447.aspx есть какие-то ограничения по версии фреймворка, раз remoting предпочтителен? |
|||
|
||||
| Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: нет Всего: 24 |
mihryak, да уже и remoting не предпочтителен. главное что бы работало быстрее. наверное все таки буду через wcf делать. осталось только в нем как следует разобраться... особенно мне не понятно как сделать сертификат. и как его передавать между клиентом и сервером. может кто знает толковый мануал по этому поводу?
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Распределённые приложения и сеть | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |