Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Организация запросов из десктопного клиента к субд / 25 сообщений из 248, страница 1 из 10
25.11.2012, 13:02
    #38052109
Korbanz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
Здравствуйте. Подскажите как лучше организовать запросы клиента (на C#) к бд (postgresql):
написать хранимые процедуры и вызывать их из клиента или зашивать sql запросы в сам клиент(этого делать не хочется) или есть ещё какие-то способы?
...
Рейтинг: 0 / 0
25.11.2012, 13:31
    #38052122
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
Использовать ORM.
...
Рейтинг: 0 / 0
25.11.2012, 18:45
    #38052292
Korbanz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
А производительность сильно падает по сравнению с хп?
...
Рейтинг: 0 / 0
25.11.2012, 19:16
    #38052307
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
KorbanzА производительность сильно падает по сравнению с хп?
Очень сильно падает производительность. ХП выполняются по 1 сек., а уже через ORM время увеличивается до 10 сек.
Ну подумаешь, в 10 раз медленнее. Ничего страшного, зато тренд.
...
Рейтинг: 0 / 0
26.11.2012, 00:00
    #38052508
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
Не все можно сделать с клиента хорошо.
Например, транзакции.

Хранимые процедуры всегда будут чуть быстрее, так как они уже откомпилированы и для них обязательно создан план запроса.
С хранимыми процедурами проще сделать разграничение прав пользователей
...
Рейтинг: 0 / 0
26.11.2012, 07:29
    #38052608
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
Cat2Не все можно сделать с клиента хорошо.
Например, транзакции."Волков бояться - в лес не ходить" (с)
Cat2Хранимые процедуры всегда будут чуть быстрее, так как они уже откомпилированы и для них обязательно создан план запроса.Планы динамических запросов больше не кэшируются? На свалку такую СУБД...
Cat2С хранимыми процедурами проще сделать разграничение прав пользователейС веб-сервисами проще сделать разграничение прав пользователей?
...
Рейтинг: 0 / 0
26.11.2012, 07:31
    #38052609
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
МСУИспользовать ORM.LINQ2SQL!
...
Рейтинг: 0 / 0
26.11.2012, 07:59
    #38052619
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
Алексей К"Волков бояться - в лес не ходить" (с)
Но все желательно иметь при себе ружье.
Других аргументов нет?

Алексей КПланы динамических запросов больше не кэшируются? На свалку такую СУБД...
Кэшируются, но гарантии нет

Алексей КС веб-сервисами проще сделать разграничение прав пользователей?
На веб-сервисах свет клином сошелся?
Да и с ними проще. Даются права на одну хранимую процедуру, а не на 10 таблиц в соединении. Гарантия, что клиент может сделать только то, что разрешено для пользователей.
...
Рейтинг: 0 / 0
26.11.2012, 08:01
    #38052622
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
Алексей КМСУИспользовать ORM.LINQ2SQL!
Чем это отличается от написания текстов запросов в теле программы?
На сервер все равно уходит текст запроса, а не сама конструкция. Еще и время тратится на преобразование LINQ2SQL в текст
...
Рейтинг: 0 / 0
26.11.2012, 08:03
    #38052623
фиганыч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
Korbanz,

wcf + хранимые процедуры.

почему wcf:
1. Можешь прикрутить SSL для клиент/серверного обмена
2. Можно разворачивать на IIS и юзать кэширование для сложных/долгих запросов.
3. Не нужно никого клиента баз данных на самом клиенте.
3. Ну и стандартные плюсы трехзвенки.

почему хранимые процедуры:
1. В опу запуск SQL с клиента рассадник sql-инъекций.
2. Статичный SQL запрос проще/лучше оптимизировать.
3. При обновлении структуры базы ты сразу же обновляешь запросы, а не выискиваешь эти запросы в коде клиента - причём некоторые запросы вылазят не сразу, а со временем.
4. Проще разграничивать права доступа - дал права на процедуры/пакеты, а не на таблицы/вьюхи.
...
Рейтинг: 0 / 0
26.11.2012, 08:10
    #38052626
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
Cat2Алексей Кпропущено...
LINQ2SQL!
Чем это отличается от написания текстов запросов в теле программы?Строгая типизация + LINQ удобнее чем SQL.

Например:
1. Ассоциации удобнее join-ов.
2. let удобнее вложенных запросов.

Cat2На сервер все равно уходит текст запроса, а не сама конструкция.Да.
Cat2Еще и время тратится на преобразование LINQ2SQL в текстВ нормальном LINQ-провайдере должно быть кэширование.
...
Рейтинг: 0 / 0
26.11.2012, 08:19
    #38052630
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
Cat2Алексей К"Волков бояться - в лес не ходить" (с)
Но все желательно иметь при себе ружье.
Других аргументов нет?Есть. Удобство TransactionScope (или самописного аналога, если боимся распределённых транзакций).

Cat2Алексей КПланы динамических запросов больше не кэшируются? На свалку такую СУБД...
Кэшируются, но гарантии нетКаких гарантий нет?

Cat2Алексей КС веб-сервисами проще сделать разграничение прав пользователей?
На веб-сервисах свет клином сошелся?Да.

Cat2Да и с ними проще. Даются права на одну хранимую процедуру, а не на 10 таблиц в соединении. Гарантия, что клиент может сделать только то, что разрешено для пользователей.Даются права на метод сервиса, "а не на 10 таблиц в соединении"?
...
Рейтинг: 0 / 0
26.11.2012, 08:25
    #38052636
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
фиганычwcf + хранимые процедуры.

...

4. Проще разграничивать права доступа - дал права на процедуры/пакеты, а не на таблицы/вьюхи.Вроде как 3-х звенка и использование системы безопасности СУБД - вещи взаимоисключающие. В противном случае придётся пожертвовать пулом соединений. Если конечно СУБД не умеет переключать контекст безопасности...
...
Рейтинг: 0 / 0
26.11.2012, 09:55
    #38052722
фиганыч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
Алексей КВроде как 3-х звенка и использование системы безопасности СУБД - вещи взаимоисключающие. В противном случае придётся пожертвовать пулом соединений. Если конечно СУБД не умеет переключать контекст безопасности...

среднее звено оно к базе ходит под пользователем - и именно безопасность от и для данного пользователя я имел ввиду.
...
Рейтинг: 0 / 0
26.11.2012, 10:05
    #38052731
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
фиганычАлексей КВроде как 3-х звенка и использование системы безопасности СУБД - вещи взаимоисключающие. В противном случае придётся пожертвовать пулом соединений. Если конечно СУБД не умеет переключать контекст безопасности...среднее звено оно к базе ходит под пользователем - и именно безопасность от и для данного пользователя я имел ввиду.Ну я понимаю. Тем самым приносится в жертву общий пул соединений к БД для разных пользователей.
...
Рейтинг: 0 / 0
26.11.2012, 10:33
    #38052768
фиганыч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
Алексей К,

нет - пул есть, просто все пользователи работают под одним пользователем БД - не требуется создавать каждого нового пользователя как пользователя в БД, назначать ему права и прочее, однако требуется создание внутренней организации доступа.
...
Рейтинг: 0 / 0
26.11.2012, 10:40
    #38052775
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
фиганычАлексей К,

нет - пул есть, просто все пользователи работают под одним пользователем БД - не требуется создавать каждого нового пользователя как пользователя в БД, назначать ему права и прочее, однако требуется создание внутренней организации доступа.Как-то это противоречит предыдущему высказыванию. :-)
фиганыч4. Проще разграничивать права доступа - дал права на процедуры/пакеты, а не на таблицы/вьюхи.
...
Рейтинг: 0 / 0
26.11.2012, 11:37
    #38052879
фиганыч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
Алексей К,

я, в первую очередь, рассматриваю защиту БД от клиентов, а здесь проще как раз вот так - один пользователь для разработчика/ов с ограниченными правами, другой для пользователей с ещё больше ограниченными правами - т.е. в идеале права на запуск процедур.
Вместо создания пользователя БД для каждого пользователя системы и назначением ему соответствующих прав.
Это накладывает некоторые усложнения для организации внутренней системы доступа, однако надёжно отгораживает системы друг от друга, к тому же собственную систему доступа так или иначе рисует каждый разработчик, да и в некоторых БД лицензирование идёт по количеству пользователей.
...
Рейтинг: 0 / 0
26.11.2012, 11:45
    #38052898
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
Самая вменяемая масштабируемая архитектура безопасности - роли с правами хранятся в таблицах. Пользователи - либо так же табличные, либо виндовые. Виндовые - проще, они уже есть в AD, остается прицепить к ним роли с правами. Как частный вариант - роли выражаются в группах AD, но имеем головную боль в виде сисадминов, прибитых к конкретному апп, а это не совсем правильно. Мухи отдельно, котлеты отдельно. Сисадмины отдельно, апп админы отдельно.
Все потуги реализовать апп секурити средствами конкретной БД - дикое немасштабируемое зло.
...
Рейтинг: 0 / 0
26.11.2012, 11:47
    #38052903
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
Алексей КМСУИспользовать ORM.LINQ2SQL!
Та я не против и энтити с хибом (платный дизайнер), главное шоп не ублюдочный кодефирст.
...
Рейтинг: 0 / 0
26.11.2012, 11:50
    #38052910
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
фиганычАлексей К,

я, в первую очередь, рассматриваю защиту БД от клиентов, а здесь проще как раз вот так - один пользователь для разработчика/ов с ограниченными правами, другой для пользователей с ещё больше ограниченными правами - т.е. в идеале права на запуск процедур.В идеале сервер БД нужно отделить от пользователей файрволом, а не давать им там права на какие-то процедуры.
...
Рейтинг: 0 / 0
26.11.2012, 11:51
    #38052912
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
МСУАлексей Кпропущено...
LINQ2SQL!
Та я не против и энтити с хибом (платный дизайнер), главное шоп не ублюдочный кодефирст.Нука тиха там!
...
Рейтинг: 0 / 0
26.11.2012, 11:53
    #38052915
фиганыч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
Алексей КВ идеале сервер БД нужно отделить от пользователей файрволом, а не давать им там права на какие-то процедуры.
В идеале пользователи системы вообще не должны знать ничего о БД - тем более где она находится - они максимум должны знать о определённом порте на среднем звене, к которому ходят с виндовой аутентификацией и через SSL
...
Рейтинг: 0 / 0
26.11.2012, 11:56
    #38052921
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
Алексей КМСУпропущено...

Та я не против и энтити с хибом (платный дизайнер), главное шоп не ублюдочный кодефирст.Нука тиха там!
Вот только не нужно опять зудеть про чистый контролируемый гавнокод :)
Все занимаются своими делами - архитектор спланировал хранилище с конкретной схемой, дб девелопер наклепал табличек с вьюхами и хп (если сильно надо), кодирующая шарповая monkey подтянула схему в контекст и команда начала пилить морду с логикой. Всё епта.
...
Рейтинг: 0 / 0
26.11.2012, 11:58
    #38052924
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Организация запросов из десктопного клиента к субд
фиганычАлексей КВ идеале сервер БД нужно отделить от пользователей файрволом, а не давать им там права на какие-то процедуры.
В идеале пользователи системы вообще не должны знать ничего о БД - тем более где она находится - они максимум должны знать о определённом порте на среднем звене, к которому ходят с виндовой аутентификацией и через SSL
Правильно, только так и никак иначе. Вырисовываются явные плюсы веба - он по дефолту трехзвенен. А толстый юай трехзвенить дорого и долго. Но надо, если на то пошло.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Организация запросов из десктопного клиента к субд / 25 сообщений из 248, страница 1 из 10
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]