Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вопрос по организации сервисов WCF
|
|||
|---|---|---|---|
|
#18+
Всем доброе время суток. Есть есть бизнес объект Person Код: plaintext 1. 2. 3. Есть класс сервис PersonService, который реализует интерфейс IPersonService Код: plaintext 1. 2. 3. 4. 5. В среде WCF работа осуществляется c PersonService и IPersonService Получается что на каждый бизнес объект отдельный сервис и меня это настораживает. Бизнес объектов то много. Собственно вопрос. Правильно ли использовать такой подход? или Wcf сервисы клепаются как то отдельно и объединяют в себе работу с разными бизнес объектами? Наставьте на путь истинный. C/У Dimasty ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 10:33 |
|
||
|
Вопрос по организации сервисов WCF
|
|||
|---|---|---|---|
|
#18+
Вот это на самом деле большая проблема. С ростом числа бизнес-классов получаем экспоненциальный рост числа методов/сервисов. Делу сильно помогли бы обобщения, но WCF не умеет (по-человечески, по крайней мере) использовать их в Service Contract'ах. Мои предложения такие. Во-первых, вынести-таки общий функционал (GetBusinessObject -- вот он будет самый некрасивый в использовании из-за постоянных приведений типов, SaveBusinessObject, DeleteBusinessObject) в какой-то отдельный сервис (IBusinessObjectService). Во-вторых, как-то подумать насчет обобщенного механизма запросов. В качестве совсем уж бредовой идеи -- можно попробовать научиться самостоятельно анализировать Expression Tree и получить таким образом практически Linq2BusinessObjectService. Менее бредовая -- собственный язык запросов (типа HQL в Hibernate или какой-нибудь OGNL). Очевидный минус -- отсутствие Compile-Time проверок синтаксиса, хотя Fluent Interface и лямбды C# 3.0 могут кое-чем помочь делу. Еще менее бредовая и овеянная современными баззвордами идея -- слепить REST-интерфейс а-ля Код: plaintext и, вообще говоря, наслаждаться жизнью (не без минусов, разумеется). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 11:31 |
|
||
|
Вопрос по организации сервисов WCF
|
|||
|---|---|---|---|
|
#18+
тоже сначала думал сервисы клепать, потом забил на это дела из-за исключительной неудобности (особенно когда референсы валятся в студии по какой-то причине и не хотят работать, и приходится их заново создавать), сейчас имею в проекте 4 сервиса, один из них называется общий - содержит общие методы. и 3 более узкоспециализированные сервиса, опять же вынесены исключительно для удобства, можно было и в одном всё делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 11:40 |
|
||
|
Вопрос по организации сервисов WCF
|
|||
|---|---|---|---|
|
#18+
Нахлобуч Во-первых, вынести-таки общий функционал (GetBusinessObject -- вот он будет самый некрасивый в использовании из-за постоянных приведений типов, SaveBusinessObject, DeleteBusinessObject) в какой-то отдельный сервис (IBusinessObjectService). Не уверен что IBusinessObjectService поможет сократить количество сервисов, хотя в случае со справочниками это вариант. Ну это только десятая чать, вот что обидно. Нахлобуч Во-вторых, как-то подумать насчет обобщенного механизма запросов. В качестве совсем уж бредовой идеи -- можно попробовать научиться самостоятельно анализировать Expression Tree и получить таким образом практически Linq2BusinessObjectService. Менее бредовая -- собственный язык запросов (типа HQL в Hibernate или какой-нибудь OGNL). Очевидный минус -- отсутствие Compile-Time проверок синтаксиса, хотя Fluent Interface и лямбды C# 3.0 могут кое-чем помочь делу. Еще менее бредовая и овеянная современными баззвордами идея -- слепить REST-интерфейс Было бы неплохо наклепать такой функционал. Буду пробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 12:02 |
|
||
|
Вопрос по организации сервисов WCF
|
|||
|---|---|---|---|
|
#18+
Зачем нужны эти интерфейсы на каждый класс?В книжке у Фаулера написано? автор Во-первых, вынести-таки общий функционал (GetBusinessObject -- вот он будет самый некрасивый в использовании из-за постоянных приведений типов, SaveBusinessObject, DeleteBusinessObject) в какой-то отдельный сервис (IBusinessObjectService). А почему нельзя использовать дженерики а'la T Fetch<T,C> (C criteria)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 12:24 |
|
||
|
Вопрос по организации сервисов WCF
|
|||
|---|---|---|---|
|
#18+
SeVaА почему нельзя использовать дженерики а'la T Fetch<T,C> (C criteria)? WCF так не умеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 12:40 |
|
||
|
Вопрос по организации сервисов WCF
|
|||
|---|---|---|---|
|
#18+
Читал бегло и несразу понял.Такой лисапед уже давно готов - CSLA с одним DataPortal для всех объектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 13:18 |
|
||
|
Вопрос по организации сервисов WCF
|
|||
|---|---|---|---|
|
#18+
SeVaЧитал бегло и несразу понял.Такой лисапед уже давно готов - CSLA с одним DataPortal для всех объектов.Интересу ради -- как он работает с зоопарком а-ля "PersonCollection GetPersonByDeportament(Deportament deportament)"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 13:23 |
|
||
|
Вопрос по организации сервисов WCF
|
|||
|---|---|---|---|
|
#18+
Dim@sty, А, вот еще чего придумалось -- но это уже совсем на крайний случай. Вариация на тему "собственный язык запросов"; исполняется в C# 4.0: Код: plaintext 1. 2. 3. 4. Разумеется, ни одного такого метода в сервисе не будет. Будет только обработчик динамических вызовов, который будет парсить имя метода (Get - <что> - By - <Критерии> - OrderBy - <сортировка>) и собирать соответствующий запрос. Ежели заинтересовало -- смотри на Active Record Finders в Ruby on Rails и читай про Convention over Configuration. Кстати, насчет REST рекомендую почитать "RESTful Web Services". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 13:33 |
|
||
|
Вопрос по организации сервисов WCF
|
|||
|---|---|---|---|
|
#18+
SeVaЧитал бегло и несразу понял.Такой лисапед уже давно готов - CSLA с одним DataPortal для всех объектов. Бегло почитал я про этот CSLA, первое что бросилось в глаза это каша из BO и DAL. Маштабировать такие классы в дальнейшем практически невозможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 13:35 |
|
||
|
Вопрос по организации сервисов WCF
|
|||
|---|---|---|---|
|
#18+
>Dim@sty >... есть бизнес объект ... Такая конструкция не подойдет? . . . Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. С уважением, Владимир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 13:47 |
|
||
|
Вопрос по организации сервисов WCF
|
|||
|---|---|---|---|
|
#18+
авторБегло почитал я про этот CSLA, первое что бросилось в глаза это каша из BO и DAL. Маштабировать такие классы в дальнейшем практически невозможно. И что-же понимается под маштабированием?Клепение интерфейсов ради их самих, с зоопарком из WCF это более правильный подход? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 13:54 |
|
||
|
Вопрос по организации сервисов WCF
|
|||
|---|---|---|---|
|
#18+
SeVaИ что-же понимается под маштабированием? Возможность быстро наращивать свое приложение, затрачивая минимум времени.. автор Клепение интерфейсов ради их самих, с зоопарком из WCF это более правильный подход? WCF был выбран не потому что мне нравиться клепать интерфейсы. У вас есть альтернативные варианты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 14:14 |
|
||
|
Вопрос по организации сервисов WCF
|
|||
|---|---|---|---|
|
#18+
авторИнтересу ради -- как он работает с зоопарком а-ля "PersonCollection GetPersonByDeportament(Deportament deportament)"? Поразному. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 14:29 |
|
||
|
Вопрос по организации сервисов WCF
|
|||
|---|---|---|---|
|
#18+
автор Возможность быстро наращивать свое приложение, затрачивая минимум времени.. У вас есть альтернативные варианты? Именно такой вариант я и предложил- CSLA.Реализуем только классы с CRUD операциями и не занимаемся велосипедостроением, а только в настройках указываем,что нам нужно(локальный доступ,remouting,WCF, Web Service, DCOM или собственная фабрика,причем, во всех случаях будет только один сервис).Для SilverLight изменения будут минимальны.Помимо этого, во всех классах реализованно все необходимое для работы с binding ,бизнес правилами и разграничением доступа(WinForms,WPF,ASP,SilverLight). PS Маштабируемость и минимум времени - разные понятия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 14:57 |
|
||
|
Вопрос по организации сервисов WCF
|
|||
|---|---|---|---|
|
#18+
Нахлобуч, Стояла подобная задача. Вышел из нее не очень красиво но все же. Т.к. WCF не умеет работать с Generics то имеем следующее.... Код: plaintext 1. 2. Вместо generics передаем пустые объекты. На том конце наш WCF сервис смотрит что то вида такого: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2009, 06:38 |
|
||
|
|

start [/forum/topic.php?fid=19&fpage=33&tid=1397927]: |
0ms |
get settings: |
13ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
48ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 281ms |
| total: | 442ms |

| 0 / 0 |
