|
NHibenate - клиентские запросы
|
|||
---|---|---|---|
#18+
Имею трехзвенную архитектуру, использую на киенте Silverlight, NHibernate на WCF-сервисе. И такой вопрос возник, если какая-то возможность писать запросы на SELECT в клиентской части? т.е. передавать допустим HQL/IQuery запрос на сервис для его выполнения. Не хочется плодить банальные методы на поиск человека по имени и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2012, 12:32 |
|
NHibenate - клиентские запросы
|
|||
---|---|---|---|
#18+
maratoss, Можно. Вопрос том, готовы ли выставить такую возможность в сеть. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2012, 12:37 |
|
NHibenate - клиентские запросы
|
|||
---|---|---|---|
#18+
SolYUtorМожно. Вопрос том, готовы ли выставить такую возможность в сеть. У меня интранет приложение, раграничение прав доступа согласно ролям Oracle, то что нельзя получить - получить не сможет, если Вы про это? Можно ссылку на такую возможность? Если пользоваться HQL - тут все просто. Делаем метод, который принимает hql запрос в виде строки. А если хотим динамический запрос, например с ICriteria, то тогда как. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2012, 14:05 |
|
NHibenate - клиентские запросы
|
|||
---|---|---|---|
#18+
maratoss...У меня интранет приложение... А нафиг тогда Вам "Silverlight, NHibernate на WCF-сервисе"? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2012, 14:21 |
|
NHibenate - клиентские запросы
|
|||
---|---|---|---|
#18+
ПС. Не подумайте чего плохого. Просто пытаюсь держать нос по ветру. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2012, 14:22 |
|
NHibenate - клиентские запросы
|
|||
---|---|---|---|
#18+
maratoss, Есть старый добрый шаблон builder . Используете его на клиенте, а серверу отправляете уже готовый hgl-запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2012, 14:27 |
|
NHibenate - клиентские запросы
|
|||
---|---|---|---|
#18+
ShSergemaratoss...У меня интранет приложение... А нафиг тогда Вам "Silverlight, NHibernate на WCF-сервисе"? Не понял вопроса. Приложение банальные CRUD операции ну и + каскадное добавление/обновление. Решил использовать, заодно изучить, данный ORM. А SL, как клиент вполне годится. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2012, 14:32 |
|
NHibenate - клиентские запросы
|
|||
---|---|---|---|
#18+
SolYUtor, Спасибо, сейчас что-нибудь наковыряю. А насчет готовых решений, есть что-нибудь, не в курсе? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2012, 14:54 |
|
NHibenate - клиентские запросы
|
|||
---|---|---|---|
#18+
maratossShSergeпропущено... А нафиг тогда Вам "Silverlight, NHibernate на WCF-сервисе"? Не понял вопроса. Приложение банальные CRUD операции ну и + каскадное добавление/обновление. Решил использовать, заодно изучить, данный ORM. А SL, как клиент вполне годится. То, что Вы написали для интранет не годится. Особенно, если учесть, что Вы не поняли моего простого вопроса. Вот этот самый CRUD, про который Вы, как бы между прочим, написали - это Ваша самая большая проблема и самая большая работа, даже если на nHibernate, хотя не рекомендую. А вот это: "Silverlight, NHibernate на WCF-сервисе" Вам вообще нафиг не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2012, 14:56 |
|
NHibenate - клиентские запросы
|
|||
---|---|---|---|
#18+
ShSerge, выкладывайте ваше решение. На идейном уровне. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2012, 22:34 |
|
NHibenate - клиентские запросы
|
|||
---|---|---|---|
#18+
То, что нельзя формировать запросы на клиенте, известный факт. Интранет здесь не оправдание. Сколько уже раз такое случалось, когда обиженный начальством работник... . Это во-первых. Изучение технологий - дело полезное, трудно с этим не согласиться, но зачем же такие сложности? Во-первых, сначала ограничивать себя безопасными интернет-технологиями, а потом формировать запрос на клиенте? Это во-вторых. В третьих, я бы не заморачивался и написал бы простое клиент-серверное (два звена) приложение, если это интрасеть, например винформс - клиент, sql-сервер - сервер. Но это так, моё скромное имхо. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2012, 10:44 |
|
NHibenate - клиентские запросы
|
|||
---|---|---|---|
#18+
ShSergeТо, что нельзя формировать запросы на клиенте, известный факт. Интранет здесь не оправдание. Сколько уже раз такое случалось, когда обиженный начальством работник... . Это во-первых. Изучение технологий - дело полезное, трудно с этим не согласиться, но зачем же такие сложности? Во-первых, сначала ограничивать себя безопасными интернет-технологиями, а потом формировать запрос на клиенте? Это во-вторых. В третьих, я бы не заморачивался и написал бы простое клиент-серверное (два звена) приложение, если это интрасеть, например винформс - клиент, sql-сервер - сервер. Но это так, моё скромное имхо. В четвертых winform давно уже протух и есть масса вариантов, когда нужна распределенность и он не подходит. Помимо этого давное есть REST c IQueryable и различные варианты обверток(например, WCF Data Services Client Library for Silverlight), которые преобразуют Linq запрос в нужный вид вызова сервиса. В этом плане никаких особых ограничений нет, было бы желание и представление о возможностях технологии. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2012, 13:26 |
|
NHibenate - клиентские запросы
|
|||
---|---|---|---|
#18+
SeVaВ четвертых winform давно уже протух и есть масса вариантов, когда нужна распределенность и он не подходит... Что такое "распределённость" и почему не подходит и протух? В принципе, я уже больще пяти-шести лет не пишу двухзвенные клиент-серверные приложения. Может, соглашусь с Вами. Только что Вы имеете ввиду? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2012, 13:42 |
|
NHibenate - клиентские запросы
|
|||
---|---|---|---|
#18+
ShSerge, Сложно не согласиться, что лучше присылать не hql, а параметры запроса, и уже из них на сервере формировать уже сам запрос. По поводу wcf - сложнее, зависит от контекста. Может автору надо интеграцию с другими приложениями делать? Тогда сервер приложений ближе к делу. А сервелат немножко проще апргрейдить, нежели виндморды. Так что в этом тоже может быть смысл. Но в целом могу с вами согласится (за исключением мнения о NH). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2012, 10:07 |
|
NHibenate - клиентские запросы
|
|||
---|---|---|---|
#18+
Планируется использование сервиса из другого приложения/другого сервиса. Поэтому и решил вынести некоторую логику в сервис. Возникла проблема с передачей объекта, если включить Lazy, то вытягивается большая куча ненужных данных, если отключить, то приложение падает из-за того что не может передать хибернейтовские классы/коллекции. Погуглил, советуют использовать DTO, но придется по сути дублировать много кода с перекачкой из объекта в DTO. А есть еще какие-нибудь способы передать объект на клиент? Сложно не согласиться, что лучше присылать не hql, а параметры запроса, и уже из них на сервере формировать уже сам запрос. Объясните плз, почему? Единственный минус, который я вижу - это то что можно написать, неоптимизированный запрос и обязательное знание HQL. Для первого случая можно придумать инструмент, который будет показывать в какой SQL код будет транслироваться HQL. Для второго в принципе подойдет как вы сказали паттерн Builder. А вот про WCF DataService еще не читал. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2012, 10:09 |
|
NHibenate - клиентские запросы
|
|||
---|---|---|---|
#18+
maratossА есть еще какие-нибудь способы передать объект на клиент? Серебряной пули нет. Я бы посоветовал остановится на DTO + object-object mapper. И кстати, загрузкой объектов в NHibernate можно управлять на уровне запросов, а не только mapping'ов. maratossОбъясните плз, почему? Потому что при должном знании, какой-нибудь сотрудник может узнать что-нибудь интересное, но для него совсем не предназначенное. А если клеить на клиенте SQL - то это просто приглашение к SQL-iinjection. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2012, 10:34 |
|
|
start [/forum/topic.php?fid=17&fpage=35&tid=1350394]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 302ms |
total: | 474ms |
0 / 0 |