|
О применении SOLID
|
|||
---|---|---|---|
#18+
Алексей КLRпропущено... Вопрос немного не по теме (генерации), но мне показался достаточно важным пропущено... Каждый раз для создания канала создается фабрика, но создание фабрики вроде как дорогостоящая операция (по сравнению с созданием канала)... почему бы не закэшировать фабрику?В следующих версиях WCF они обещали оптимизировать создание ChannelFactory<>, где-то была статья об этом. Вероятно в 4.5 это уже оптимизировано. Проверить это у меня сейчас нет возможности. При повторном использовании одного объекта фабрики для создания нескольких Channel-ов возникали проблемы. Какие - я сейчас точно не вспомню, надо опять делать тест и читать MSDN. Но точно помню, что проблемы были, что-то там не работало. :-) LRP.S. Алексей, спасибо за Ваши труды на благо сообщества!Пасиб. :-) А зачем создавать несколько ChannelFactory, если это обобщенный класс? ChannelFactory - это пул соединений, какие причины плодить их на клиенте? Не хочется статиков? Так для этого есть DI, который ты не осилил и без которого не бывает вменяемых фреймворков. В net 4.5 его действительно оптимизировали и соединения кэшируются даже если меняется учетка. Помимо этого в wcf появилаcь нативная поддержка тасков и твои танцы с бубнами(FromAsync) совсем не нужны, а мультики в сервисах с ThreadStatic - просто вредны. EF теперь тоже асинхронный и сервисы можно и нужно делать с тасками. Это гораздо больше будет влиять на wcf сервисы, чем твои мультики с прокси на клиенте. Генерить последние - полный маразм для внутренних сервисов и тд. ЗЫ SOLID придумали не на пустом месте - это набор принципов, которые нужно соблюдать, чтобы можно было без геморроя развивать систему и вносить в нее изменения, если этого нет, то это кривая архитектура. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 09:32 |
|
О применении SOLID
|
|||
---|---|---|---|
#18+
Алексей КLRКаждый раз для создания канала создается фабрика, но создание фабрики вроде как дорогостоящая операция (по сравнению с созданием канала)... почему бы не закэшировать фабрику? Если закешировать, оно в принципе работает. Но тогда нет возможности изменить параметры соединения у фабрики. Она этого не позволяет после создания хотя бы одного канала с помощью неё. Чисто визуально разницы в работе приложения с кэшированием я не заметил. Из-за дополнительных ограничений для себя решил кэширование не делать. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
Это бред. Дорогостоящая операция - создание соединения, их как раз и кэширует фабрика. Матчасть нужно знать ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 09:36 |
|
О применении SOLID
|
|||
---|---|---|---|
#18+
SeVaА зачем создавать несколько ChannelFactory, если это обобщенный класс?Этого не понял. SeVaChannelFactory - это пул соединений, какие причины плодить их на клиенте?Мне казалось NetTCP пул соединений живёт вне объекта ChannelFactory, так же как пул соединений к БД живёт вне объекта SqlConnection. SeVaВ net 4.5 его действительно оптимизировали и соединения кэшируются даже если меняется учетка. Помимо этого в wcf появилаcь нативная поддержка тасков и твои танцы с бубнами(FromAsync) совсем не нужныНу мне-то от этого не легче. Мне нужна поддержка WinXP. SeVaа мультики в сервисах с ThreadStatic - просто вредны. EF теперь тоже асинхронный и сервисы можно и нужно делать с тасками.А мне с ThreadStatic нравится. И от асинхронностей на сервере для своих проектов я пользы не вижу. Только неоправданное усложнение. SeVaЭто гораздо больше будет влиять на wcf сервисы, чем твои мультики с прокси на клиенте. Генерить последние - полный маразм для внутренних сервисов и тд.Я не хочу использовать серверные классы на клиенте. Мне больше нравится их генерировать через WSDL. И на то есть причины. SeVaЗЫ SOLID придумали не на пустом месте - это набор принципов, которые нужно соблюдать, чтобы можно было без геморроя развивать систему и вносить в нее изменения, если этого нет, то это кривая архитектура.Ну используй, я не возражаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 09:45 |
|
О применении SOLID
|
|||
---|---|---|---|
#18+
SeVaАлексей Кпропущено... Если закешировать, оно в принципе работает. Но тогда нет возможности изменить параметры соединения у фабрики. Она этого не позволяет после создания хотя бы одного канала с помощью неё. Чисто визуально разницы в работе приложения с кэшированием я не заметил. Из-за дополнительных ограничений для себя решил кэширование не делать. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
Это бред. Дорогостоящая операция - создание соединения, их как раз и кэширует фабрика. Матчасть нужно знатьНу, а там что закешировано? Жжошь? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 09:46 |
|
О применении SOLID
|
|||
---|---|---|---|
#18+
Алексей КSeVaпропущено... Это бред. Дорогостоящая операция - создание соединения, их как раз и кэширует фабрика. Матчасть нужно знатьНу, а там что закешировано? Жжошь? Учи матчасть, что из себя представляет канальная фабрика подробно разжевано в msdn. WCF основан на каналах , а это целое кино. Без понимания, которого появляются маразмы и отжиги со статиками для channelfactory ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 09:56 |
|
О применении SOLID
|
|||
---|---|---|---|
#18+
SeVaУчи матчасть, что из себя представляет канальная фабрика подробно разжевано в msdn. WCF основан на каналах , а это целое кино. Без понимания, которого появляются маразмы и отжиги со статиками для channelfactoryФраза "connection pool" в тексте этой статьи не найдена. Зачем ты дал на неё ссылку? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 10:06 |
|
О применении SOLID
|
|||
---|---|---|---|
#18+
Алексей КА мне с ThreadStatic нравится. И от асинхронностей на сервере для своих проектов я пользы не вижу. Только неоправданное усложнение. SeVaЭто гораздо больше будет влиять на wcf сервисы, чем твои мультики с прокси на клиенте. Генерить последние - полный маразм для внутренних сервисов и тд.Я не хочу использовать серверные классы на клиенте. Мне больше нравится их генерировать через WSDL. И на то есть причины. 1. Причины сразу видны, если провести хотя бы раз нагрузочное тестирование. ThreadStatic на данный момент, когда есть await - натуральное убожество и костыль, которые все усложняет в разы с малопонятным поведением и устойчивостью 2. Никаких причин нет, тк генерим только мусор и повторно создаем классы и интерфейсы. Подозреваю, что все это из-за извратов с наследованием и прочих мультиков, так это тоже маразм. Гораздо проще создать view в бд и на автомате использовать EF, а не вышивать крестиком вручную собирая классы. Никакого наследования в DTO(бизнес-классами у тебя даже не пахнет) быть не должно, рано или поздно функционал разбежится по разным углам. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 10:06 |
|
О применении SOLID
|
|||
---|---|---|---|
#18+
Алексей КSeVaУчи матчасть, что из себя представляет канальная фабрика подробно разжевано в msdn. WCF основан на каналах , а это целое кино. Без понимания, которого появляются маразмы и отжиги со статиками для channelfactoryФраза "connection pool" в тексте этой статьи не найдена. Зачем ты дал на неё ссылку? Чтобы ты хотя слегка имел представление о wcf. Эта статья для чайников ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 10:07 |
|
О применении SOLID
|
|||
---|---|---|---|
#18+
SeVa тынц автор.NET Framework 4.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 10:12 |
|
О применении SOLID
|
|||
---|---|---|---|
#18+
Алексей КSeVaChannelFactory - это пул соединений, какие причины плодить их на клиенте?Мне казалось NetTCP пул соединений живёт вне объекта ChannelFactory, так же как пул соединений к БД живёт вне объекта SqlConnection.Так и есть. Netstat.exe показывает, что WCF-ный NetTCP пул соединений на клиенте работает нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 11:33 |
|
О применении SOLID
|
|||
---|---|---|---|
#18+
SeVaАлексей К, Алексей Кпропущено... пропущено... Фабрика каналов была и есть в net 3.5.Ну и что? Там оптимизации про которые ты пишешь добавлены, и про которые я тоже писал , добавлены в 4.5. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 11:49 |
|
О применении SOLID
|
|||
---|---|---|---|
#18+
Алексей КSeVaАлексей К, пропущено... Фабрика каналов была и есть в net 3.5.Ну и что? Там оптимизации про которые ты пишешь добавлены, и про которые я тоже писал , добавлены в 4.5. ChannelFactory был еще со времен net 3.5. В wpf&wcf большие возможности, посему они за раз не осваиваются, правильные подходы тем более. Посему лучше не изобретать свои велосипеды(в особенности, когда скачешь только по верхам и глубоко не копаешь), а брать готовое. Все давно придумано до нас. Например, Exception Handling WCF Proxy Generator . Есть интеграция с vs и восстановление при сбоях. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 12:13 |
|
О применении SOLID
|
|||
---|---|---|---|
#18+
SeVa, круто давать ссылки на проекты,не обновляющиеся 3 года и имеющие статус бета. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 13:31 |
|
О применении SOLID
|
|||
---|---|---|---|
#18+
Говнокостыли нужны вам, вы привыкли только кнопочки в студии нажимать без всякого понимания. В одном резюме попалась фраза : "с# на уровне пользователя". Сапотски тоже про себя мог бы это написать ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 13:45 |
|
О применении SOLID
|
|||
---|---|---|---|
#18+
SeVaВ одном резюме попалась фраза : "с# на уровне пользователя". Сапотски тоже про себя мог бы это написать Ну мог бы чо... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 13:48 |
|
О применении SOLID
|
|||
---|---|---|---|
#18+
Алексей КЕсли закешировать, оно в принципе работает. Но тогда нет возможности изменить параметры соединения у фабрики. Она этого не позволяет после создания хотя бы одного канала с помощью неё. Чисто визуально разницы в работе приложения с кэшированием я не заметил. Из-за дополнительных ограничений для себя решил кэширование не делать. Алексей, спасибо за разъяснения. Получается, без кэширования оно и надежней (мало ли что случится с фабрикой) и гибче (например, пользователь "на лету" сможет перелогиниться и т.п.)... а проблема производительности - это особый случай/задача (не Ваш случай). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 14:19 |
|
О применении SOLID
|
|||
---|---|---|---|
#18+
ребятки, подхалтурить не желаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 14:25 |
|
О применении SOLID
|
|||
---|---|---|---|
#18+
2 часа и ни одного резюме. Ну и куда прикажете деньги девать...? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 15:14 |
|
О применении SOLID
|
|||
---|---|---|---|
#18+
hr_hr_hr2 часа и ни одного резюме. Ну и куда прикажете деньги девать...? Вложите туда где нет слова - азуре. На сегодня это глючная херь с которой никто не хочет связываться. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 15:32 |
|
О применении SOLID
|
|||
---|---|---|---|
#18+
James Bond FR, да мне не принципиально где хостить. Да и азур хлопот не доставлял(кроме аптайма блобов) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2013, 15:39 |
|
О применении SOLID
|
|||
---|---|---|---|
#18+
Алексей КЭта "красота" вызовет в дальнейшем необходимость описания специального DTO, что нарушает моё представление о DRY, но об этом ниже. Одним словом - оно того не стоит.Алексей КБизнес-объекты слоя данных и логики применяются в том числе в качестве DTO, чтобы не описывать одинаковые структуры данных в нескольких местах.Всё это замечательно работает пока один формат хранения данных, один формат их передачи, один способ получения. Но что будет, если при развитии проекта, что-то добавится, или изменится? Насколько Ваше решение гибкое и масштабируемое? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2013, 09:30 |
|
|
start [/forum/topic.php?fid=20&startmsg=38512793&tid=1403421]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
others: | 362ms |
total: | 541ms |
0 / 0 |