|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
ViPRosМСУ, а зачем юзеру дать такие права? А какие надо? ViPRosюзер гость и все Что такое гость в твоем понимании? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 00:19 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
МСУ, никаких прав ему не надо давать гость тот кто просто может логиниться но не может делать ничего кроме этого ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 00:23 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
ViPRosМСУ, никаких прав ему не надо давать гость тот кто просто может логиниться но не может делать ничего кроме этого А как пользователи будут работать с программой, если они ничего делать не смогут? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 00:26 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
МСУ, я этого не говорил ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 00:28 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
ViPRosМСУ, я этого не говорил Как не говорил? «никаких прав ему не надо давать» (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 00:29 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Где деньги - там и правда. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 00:30 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
МСУ, ну да ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 00:34 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
МСУфиганычпросто дёргаешь процедуру - получаешь дата-сет - чистишь кожуру и жуешь. Батенька, за трансфер датасетов через SOA - яйца под нож! Чем вам трансфер датасета не угодил? в наше время гигабитных сетей и безлимитных интернетов? к тому же коллекции всё равно придётся тягать, так почему бы и не привычный monkey датасет? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 06:13 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Cat2Алексей КВ нормальном LINQ-провайдере должно быть кэширование. Зуб даете, что оно есть?В EF оно есть. Опять же, речь идёт о кэшировании Expression Tree => SQL, чтобы не было путаницы. :-) Cat2Алексей КСтрогая типизация + LINQ удобнее чем SQL. Поскольку типизация не объемлет все возможные запросы, например, сборку текста запроса внутри хранимой процедуры, то ее нельзя использовать вездеПредположим, что хранимых процедур нет (минимум). Вызов хранимой процедуры прекрасно обёртывается кодогенерацией. Проблема непонятна. Cat2Алексей КЕсть. Удобство TransactionScope (или самописного аналога, если боимся распределённых транзакций). При чем тут распределенные?Я лиш упомянул недостаток TransactionScope, не обращайте внимания. Cat2Или Вы не поняли, или Вы не знаете. Транзакцию можно запустит с сервера, а можно и с клиента.Я в курсе. Cat2При запуске транзакции с клиента в том редком, но бывающем случае, когда клиент отвалился посредине транзакции и не может подать сигнал о том, что транзакция подтверждена, сервер ждет некоторое разумное время (какое - не знаю, секрет разработчиков), а потом откатывает ее.Если работать с MSSQL в disconnected-режиме такие случаи практически исключены. Если держать постоянно открытое соединение - тогда да. Но это не наш метод. Опять же при наличии сервера приложений как правило есть возможность организовать от него к БД нормальный канал связи. Так что проблема надумана. Cat2Нормальное решение, однако если в транзакции есть блокировки, то они так и останутся, пока сервер не ее не завершит. Критично ли это для Вашей базы - решать в каждом конкретном случае.Конечно. Cat2Для однопользовательской - точно пофигЭтот случай нас не интересует. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 06:18 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
МСУАлексей КПросто мне XML-ные маппинги не нравятся. Они плохо пахнут? :) Они бесят. МСУЧем твой говнокод на t4 лучше нативного генератора, в котором - ни строчки кода, всё работает из коробки.Полученным результатом? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 06:21 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Cat2Ну, матом не крыл, но "идиотами" или неким подобным обзывал Это же просьба относится ка Алексею К. Бывалоча начнется дискуссия, я бы еще чего мог сказть - ан нет. МСУ и Алексей поцапались и тему закрыли.Вы что-то путаете. Мы с МСУ никогда не ругались. Все наши с ним дискуссии всегда были в рамках приличия. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 06:24 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
МСУCat2Надежность трехзвенки не может быть выше надежности базы данных. Она обязательно будет ниже, так как включается ненадежность промежуточного звенеа. На пальцах еще раз: в двухзвенной архитектуре пользователь ПО может безпрепятственно получить строку соединения к БД (пусть даже если ты строишь ПО с помощью виндовой аутентификации в БД). Ты считаешь нормальной практикой, если юзеры (пусть даже особо продвинутые или не очень) начнут хаотично юзать БД через сторонние клиенты (Excel, Access, Management Studio и пр.), делать большие выборки, ковыряться во внутрях БД и искать узкие места? Уже сам факт возможности попадания пользователя в БД, тем более сторонними средствами - вопиющ и опасен. Я уже не говорю про двухзвенки, в которых строка соединения к БД идет от sa либо от достаточно привилегированной сиквельной учетной записи - за такое вообще расстрел на месте. Cat2, что не понятно по безопасности? Вопросы, комментарии, замечания приветствуются.Вдогонку... Вроде как управление транзакциями с клиента не управляется системой безопасности. Ничто не мешает пользователю через Management Studio начать транзакцию, что-то изменить, на что он имеет права, транзакцию не завершать, соединение оставить открытым, уйти домой... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 06:30 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
ИзопропилГде деньги - там и правда.С этим надо бороться. Должно быть наоборот: "Где правда - там и деньги". ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 06:32 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
фиганычМСУпропущено... Батенька, за трансфер датасетов через SOA - яйца под нож! Чем вам трансфер датасета не угодил? в наше время гигабитных сетей и безлимитных интернетов? к тому же коллекции всё равно придётся тягать, так почему бы и не привычный monkey датасет?Если клиент к Вашему сервису написан не на дотнете? На Java? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 06:34 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
МСУCat2Масштабируемость? Чем она выше, чем в двузвенке? Да, масштабируемость. Вот чем выше: Руководство MICROSOFT по проектированию архитектуры приложенийХарактеристиками N-уровневой архитектуры приложения являются функциональная декомпозиция приложения, сервисные компоненты и их распределенное развертывание, что обеспечивает повышенную масштабируемость, доступность, управляемость и эффективность использования ресурсов. Каждый уровень абсолютно независим от всех остальных, кроме тех, с которыми он непосредственно соседствует. N-ному уровню требуется лишь знать, как обрабатывать запрос от n+1 уровня, как передавать этот запрос на n-1 уровень (если таковой имеется), и как обрабатывать результаты запроса. Для обеспечения лучшей масштабируемости связь между уровнями обычно асинхронная. ...N-уровневая архитектура обычно имеет не менее трех отдельных логических частей, каждая из которых физически размещается на разных серверах. Каждая часть отвечает за определенную функциональность. При использовании многослойного подхода слой развертывается на уровне, если предоставляемая этим слоем функциональность используется более чем одним сервисом или приложением уровня. Cat2Она зависит от от возможностей СУБД, а не от способа доступа. И среднее звено ее может только понизить. Она не зависит от возможностей СУБД, не говори глупости. Возможности СУБД идут лесом, т.к. вменяемые архитекторы в БД видят только тупое хранилище данных, не более того. Главный вопрос опять же в масштабируемости - отмасштабировать приложение на порядки проще, если оно не прибито гвоздями к конкретной СУБД. Cat2Высокая безопаснеость? В чем она выше, чем при двузвенке? Да, высокая безопасность. Вот чем: Руководство MICROSOFT по проектированию архитектуры приложенийПримером N-уровневого/3-уровневого архитектурного стиля может служить типовое финансовое Веб-приложение с высокими требованиями к безопасности. Бизнес-слой в этом случае должен быть развернут за межсетевым экраном, из-за чего приходится развертывать слой представления на отдельном сервере в пограничной сети. Другой пример – типовой насыщенный клиент, в котором слой представления развернут на клиентских компьютерах, а бизнес-слой и слой доступа к данным развернуты на одном или более серверных уровнях. Cat2Надежность трехзвенки не может быть выше надежности базы данных. Она обязательно будет ниже, так как включается ненадежность промежуточного звенеа. Руководство MICROSOFT по проектированию архитектуры приложенийОсновными преимуществами N-уровневого/3-уровневого архитектурного стиля являются: Удобство поддержки. Уровни не зависят друг от друга, что позволяет выполнять обновления или изменения, не оказывая влияния на приложение в целом. Масштабируемость. Уровни организовываются на основании развертывания слоев, поэтому масштабировать приложение довольно просто. Гибкость. Управление и масштабирование каждого уровня может выполняться независимо, что обеспечивает повышение гибкости. Доступность. Приложения могут использовать модульную архитектуру, которая позволяет использовать в системе легко масштабируемые компоненты, что повышает доступность. Руководство MICROSOFT по проектированию архитектуры приложенийРассмотрите возможность применения N-уровневой или 3-уровневой архитектуры, если требования по обработке уровней приложения отличаются настолько сильно, что может возникнуть перекос в распределении ресурсов, или существенно разнятся требования по безопасности уровней. Например, конфиденциальные данные не должны храниться на уровне представления, но могут размещаться на бизнес-уровне или уровне данных. N-уровневая или 3-уровневая архитектура также подойдет в случае, если требуется обеспечить возможность совместного использования бизнес-логики разными приложениями и имеется достаточное количество оборудования для выделения необходимого числа серверов для каждого уровня. Руководство MICROSOFT по проектированию архитектуры приложенийИспользуйте только три уровня, если создаете приложение для внутренней сети организации, где все серверы будут располагаться в закрытой сети; или Интернет-приложение, требования по безопасности которого не запрещают развертывание бизнес-логики на Веб-сервере или сервере приложений. Рассмотрите возможность применения более трех уровней, если соответственно требованиям по безопасности бизнес-логика не может быть развернута в пограничной сети, или если приложение интенсивно использует ресурсы, и для разгрузки сервера необходимо перенести эту функциональность на другой сервер. Cat2Ну, матом не крыл, но "идиотами" или неким подобным обзывал Это же просьба относится ка Алексею К. Ты чё-то гонишь, Кот. У меня с Лёней самые теплые отношения. Cat2Бывалоча начнется дискуссия, я бы еще чего мог сказть - ан нет. МСУ и Алексей поцапались и тему закрыли. Кот, ты чего куришь? Алексей - зубр форума, коих единицы. Чтобы я с ним где-то поцапался, ты должен стать балериной. Опять ты не в кассу постишь - то матом я крою, то с Лёней цапаюсь. Пестец какой-то :) Cat2В связи с этим просьба к модераторам. Чистите оскорбления, а не закрывайте топик Хватит сцать раньше времени. И не зуди, надоел. Microsoft сподобилась перевести на русский незамысловатую писульку "Архитектура приложений для чайников" и Муся резко стал архитектором. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 07:39 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
МСУCat2Надежность трехзвенки не может быть выше надежности базы данных. Она обязательно будет ниже, так как включается ненадежность промежуточного звенеа. На пальцах еще раз: в двухзвенной архитектуре пользователь ПО может безпрепятственно получить строку соединения к БД (пусть даже если ты строишь ПО с помощью виндовой аутентификации в БД). Ты считаешь нормальной практикой, если юзеры (пусть даже особо продвинутые или не очень) начнут хаотично юзать БД через сторонние клиенты (Excel, Access, Management Studio и пр.), делать большие выборки, ковыряться во внутрях БД и искать узкие места? Уже сам факт возможности попадания пользователя в БД, тем более сторонними средствами - вопиющ и опасен. Я уже не говорю про двухзвенки, в которых строка соединения к БД идет от sa либо от достаточно привилегированной сиквельной учетной записи - за такое вообще расстрел на месте. Cat2, что не понятно по безопасности? Вопросы, комментарии, замечания приветствуются. Юный "архитектор", стандартная практика "юзать" кубы в трезвенке, расскажи, как это можно организовать с помощью твоего говношипа, если разграничения доступа на уровне кубов и отчеты зависят от учетки ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 07:53 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
KorbanzА производительность сильно падает по сравнению с хп? Смотря какой запрос и как написан. На самом деле тут тебе нагонят всякой хрени про ORM, а все на самом деле просто — надо уметь их готовить. Подробности долго объяснять, если нужно, могу конечно. Но в любом случае сам факт применения orm никак не сказывается на производительности запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 09:15 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
фиганычЧем вам трансфер датасета не угодил? в наше время гигабитных сетей и безлимитных интернетов? к тому же коллекции всё равно придётся тягать, так почему бы и не привычный monkey датасет? Речь не о безлимитности, а о убогости датасета. Я о том, что в любом SOA нужно юзать только типизированный подход (классы и коллекции классов) - WSDL чище и понятней. Алексей КОни бесят. Очень мощный объективный аргумент :) Алексей КПолученным результатом? А чем результат лучше? Алексей КНичто не мешает пользователю через Management Studio начать транзакцию, что-то изменить, на что он имеет права, транзакцию не завершать, соединение оставить открытым, уйти домой... +1 SeVaЮный "архитектор", стандартная практика "юзать" кубы в трезвенке, расскажи, как это можно организовать с помощью твоего говношипа, если разграничения доступа на уровне кубов и отчеты зависят от учетки Старый программист не знает про слово "имперсонация"? Срочно учить матчасть. Во-вторых, никто не запрещает манипулировать безопасностью в среднем слое, чтобы фильтровать факты со срезами в разрезе прав пользователя. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 09:19 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Korbanz, Лучшее конечно писать процедуры. Но по производительности они лучшее только когда есть более одного запроса, связанных какой-то бизнес логикой. Иначе выигрыш только в удобстве оформления кода, проигрыш в привязке к конкретной субд. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 09:25 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Cat2Не все можно сделать с клиента хорошо. Например, транзакции. Ну, это ты не прав. Просто не прав. Может что-то ещё бы привёл в виде примера -- я бы согласился. Но не транзакции. Cat2Хранимые процедуры всегда будут чуть быстрее, так как они уже откомпилированы и для них обязательно создан план запроса. Это сильно зависит от СУБД. Подготовленные запросы также во многих СУБД откомпилированы. Планы некоторые СУБД кэшируют и для простых запросов, а не только для процедур. Cat2С хранимыми процедурами проще сделать разграничение прав пользователей Тут пожалуй соглашусь. Хотя это и зависит от СУБД. p.s. кстати в первый раз вступаю в полемику с Cat2 на профессиональные темы. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 09:31 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Korbanz, В общем, подытоживая, могу предложить следующий "решатель" проблемы. если надо использовать CRUD -запросы (CreateReadUpdateDelete) и у тебя не одна поддерживаемая СУБД, стоит использовать ORM. Если надо писать только аналитические запросы (SELECT-ы ) то ORM применять бесполезно если поддерживается только одна СУБД, стоит писать код в виде хранимых процедур. если поддерживается одна-две СУБД, можно тоже писать код в виде хранимых процедур, несколько раз, для каждой СУБД свой вариант. Естественно, только если процедур немного (10-20). если запросов много, и много поддерживаемых СУБД, (и запросы аналитические, естественно), то лучше подумать о оформлении кода SQL на клиенте напрямую на SQL в виде универсального, стандартного SQL-я, иногда это получаться не будет, тогда надо писать конкретный запрос в N вариантах, для каждой СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 09:40 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
MasterZivCat2С хранимыми процедурами проще сделать разграничение прав пользователей Тут пожалуй соглашусь. Хотя это и зависит от СУБД. А я не соглашусь :) MasterZivp.s. кстати в первый раз вступаю в полемику с Cat2 на профессиональные темы. Почаще заходи в дотнеты, плас плас вроде как родственен, хотя бы по первой буквачке :) MasterZiv если надо использовать CRUD -запросы (CreateReadUpdateDelete) и у тебя не одна поддерживаемая СУБД, стоит использовать ORM. Если надо писать только аналитические запросы (SELECT-ы ) то ORM применять бесполезно если поддерживается только одна СУБД, стоит писать код в виде хранимых процедур. если поддерживается одна-две СУБД, можно тоже писать код в виде хранимых процедур, несколько раз, для каждой СУБД свой вариант. Естественно, только если процедур немного (10-20). если запросов много, и много поддерживаемых СУБД, (и запросы аналитические, естественно), то лучше подумать о оформлении кода SQL на клиенте напрямую на SQL в виде универсального, стандартного SQL-я, иногда это получаться не будет, тогда надо писать конкретный запрос в N вариантах, для каждой СУБД. +1 0 -1 (хп нужно писать только тогда, когда это обусловлено конкретными возможностями (CTE и т.п.) и/или производительностью запросов) -1 (в таком случае нужно смотреть на распределенный SOA подход - единый шлюз поставки данных для различных информационных систем и различных СУБД, для различных СУБД ORM - то, что доктор прописал) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 09:49 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
МСУАлексей КОни бесят. Очень мощный объективный аргумент :)Мне тоже понравилось. МСУАлексей КПолученным результатом? А чем результат лучше?Имею самописный несложный кодогенератор, удобный для дальнейшей поддержки и модификации. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 10:35 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
MasterZiv Если надо писать только аналитические запросы (SELECT-ы ) то ORM применять бесполезно LINQ2SQL весьма удобно применять для аналитических запросов. Это ORM или не-ORM? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 10:38 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
МСУSeVaЮный "архитектор", стандартная практика "юзать" кубы в трезвенке, расскажи, как это можно организовать с помощью твоего говношипа, если разграничения доступа на уровне кубов и отчеты зависят от учетки Старый программист не знает про слово "имперсонация"? Срочно учить матчасть. Во-вторых, никто не запрещает манипулировать безопасностью в среднем слое, чтобы фильтровать факты со срезами в разрезе прав пользователя.+38 Тут можно ещё вернуться к традиционному сравнению: linked server vs 3х звенка. Но мне показалось, что ещё не было обсуждений на тему LINQ2SQL vs SQL. Мне кажется это интереснее. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2012, 10:42 |
|
|
start [/forum/topic.php?fid=20&msg=38054271&tid=1405536]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 322ms |
total: | 450ms |
0 / 0 |