|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Добрый день! Уважаемые гуру, подскажите пожалуйста, правильно ли я оцениваю возможности Wcf в области обмена данными сервис-клиент. Сервис возвращает клиенту, тип object содержащий ссылку на класс: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Просто я пришел к такому выводу, что нельзя. По ряду причин: 1. Формат обмена данными происходит в XML 2. Ссылка на класс создаётся в куче сервера, и как её передать клиенту не могу себе представить Вот и решил спросить у аудитории. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 13:44 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Nechtoи как её передать клиенту не могу себе представитьИзучай вопрос сериализации и десериализации. Естественно, ты не можешь передать объект из домена в домен, не выполняя сериализацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 13:50 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Shocker.Pro, Оно? Все равно не могу понять. Ведь все равно нужно передать класс целиком (со всеми свойствами, методами, наследованиями, using-ми и др.). Разве можно это сделать в формате XML? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 14:00 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Nechto, Убери интерфейсы и не говори слово ссылка. Просто передай класс. Всё ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 14:03 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Nechto Код: c# 1.
это не надо ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 14:04 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Nechtoкласс целиком нет. Там помечается что передать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 14:05 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Petro123Nechto, Убери интерфейсы и не говори слово ссылка. Просто передай класс. Всё Такой способ передачи работает успешно, я проверял. Мне то нужно понять можно ли передать класс при помощи базового типа object или наследованием IRouter. Хотя наследование IRouter выполняется в любом случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 14:11 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
NechtoВедь все равно нужно передать класс целиком (со всеми свойствами, методами, наследованиями, using-ми и др.)Причем тут методы и т.п.? WCF передает данные, а не код. Если тебе нужно передавать код - ну запакуй dll-ку, передай ее на клиент, там распакуй, загрузи в домен и используй. Задача неясна. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 14:17 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Nechtoработает успешно, я проверял. Мне то нужновам нужно не как у всех. ОК NechtoМне то нужно понять можно ли передать класс при помощи базового типа object или наследованием IRouter. Можно ли сделать сложнее?)))) Мне трудно отвечать на такой вопрос. Он не имеет цели. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 14:19 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Shocker.ProNechtoВедь все равно нужно передать класс целиком (со всеми свойствами, методами, наследованиями, using-ми и др.)Причем тут методы и т.п.? WCF передает данные, а не код. Если тебе нужно передавать код - ну запакуй dll-ку, передай ее на клиент, там распакуй, загрузи в домен и используй. Задача неясна. Подождите, попробую кратно разъяснить задачу! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 14:20 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Nechtoпопробую кратно разъяснить задачу!и не забудь что в soap ЯП разный сервера и клиента. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 14:21 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Буду исходить из того, что обсуждалось выше в дебри лезьте не буду. Нужно создать сервис, который будет раздавать страницы(классы) клиентам. Сами страницы и модели хранятся в сборках на сервере. Простая схема: "Сборка ядра" - содержит в себе интерфейсы, которые используются "Сборкой сервиса" и "Сборкой клиента" "Сборка сервиса" - при запросе от клиента, инициализирует класс и отправляет его клиенту "Сборка клиента" - клиент получает класс и работает с ним через интерфейс. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 15:38 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
То есть на этапе компиляции клиент ничего не знает о тех интерфейсах, с которыми ему предстоит работать. Таким образом, он сможет с ними работать только через рефлексию. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 15:46 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Shocker.ProТо есть на этапе компиляции клиент ничего не знает о тех интерфейсах, с которыми ему предстоит работать. Таким образом, он сможет с ними работать только через рефлексию. Да, они скомпилированы отдельно, единственное что их связывает это интерфейсы в "сборке ядра" ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 15:50 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Тогда в чем вопрос, не очень понятно. Получил сборку, загрузил ее в домен, работаешь с ней через интерфейсы. Причем тут WCF? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 15:56 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
NechtoБуду исходить из того, что обсуждалось выше в дебри лезьте не буду. Нужно создать сервис, который будет раздавать страницы(классы) клиентам. Сами страницы и модели хранятся в сборках на сервере. Простая схема: "Сборка ядра" - содержит в себе интерфейсы, которые используются "Сборкой сервиса" и "Сборкой клиента" "Сборка сервиса" - при запросе от клиента, инициализирует класс и отправляет его клиенту "Сборка клиента" - клиент получает класс и работает с ним через интерфейс. Ты это сам придумал? Это делали (передача абстрактного базового класса или интерфейса) в прошлом веке в дельфи. Еще когда Net не было. Для плагинов. Брось фигней страдать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 16:09 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Petro123Для плагинов.Ну да, фактически автор и пытается создать плагин. Так что надо его отправить читать, как делают плагины в .NET ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 16:16 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Shocker.Pro, Ну дак это динамика. А я ее не люблю)). Поэтому ТС к тебе. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2019, 16:33 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Petro123Ты это сам придумал? Это делали (передача абстрактного базового класса или интерфейса) в прошлом веке в дельфи. Еще когда Net не было. Для плагинов. Брось фигней страдать. Да сам, исходя из своих соображений. Дело в том, что я давно подумываю как мне в моих приложениях, реализовать следующие задачи (Как вы заметили, я люблю динамику и универсальность. Не знаю плюс это или минус, но мнения расходятся): 1. Обновление в реал тайме. Если в wcf, все таки есть способ передать клиенту класс, о котором клиент нечего не знает и работать с ним исключительно через интерфейс. То обновление отпадет само по себе, так как клиент берет логику с сервера. Если не wcf, то придется вернуться к варианту реализации через appdomain. 2. Повышает уровень безопасности и упрощает администрирование. Так как код, лежит на сервере, пользователь не имеет доступа к библиотекам напрямую. Shocker.Proтолько через рефлексию Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Я не понимаю одного, то что я хочу это можно реализовать через Wcf или нет? Просто не хочется копать и в итоге напороться на камень. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 10:37 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Nechto, я люблю динамику и универсальность. Не знаю плюс это или минус, но мнения расходятся):для динамике должны быть обоснования. Для статики не нужны, есть ГОСТ. Убедил? 2. WCF это soap и стандарт. Связи и наследование не передается. Убедил? Если нет, то ты верующий и не лечится. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 10:44 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
NechtoЯ не понимаю одного, то что я хочу это можно реализовать через Wcf или нет? Просто не хочется копать и в итоге напороться на камень. 1) Через Wcf можно передать данные 2) Сборка - это просто набор бинарных данных, запакуй dll в base64 и передавай (ну или какие там способы передачи бинарников в wcf из коробки?) То есть wcf тут только как протокол, с тем же успехом можешь хоть из БД получать сборку через sql-коннектор - ничего не меняется ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 11:34 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Petro123Nechto, я люблю динамику и универсальность. Не знаю плюс это или минус, но мнения расходятся):для динамике должны быть обоснования. Для статики не нужны, есть ГОСТ. Убедил? 2. WCF это soap и стандарт. Связи и наследование не передается. Убедил? Если нет, то ты верующий и не лечится.Убедили, возразить не чем. Shocker.ProNechtoЯ не понимаю одного, то что я хочу это можно реализовать через Wcf или нет? Просто не хочется копать и в итоге напороться на камень. 1) Через Wcf можно передать данные 2) Сборка - это просто набор бинарных данных, запакуй dll в base64 и передавай (ну или какие там способы передачи бинарников в wcf из коробки?) То есть wcf тут только как протокол, с тем же успехом можешь хоть из БД получать сборку через sql-коннектор - ничего не меняется Выходит, что передачу можно сделать, через стандартный тип byte[]. Только вот интересно, к примеру клиент получил массив бинарников и как работать с ними? Сохранять локально и потом грузить в appdomain? Или можно на лету из них извлечь необходимые классы? Да и вообще, скорость работы этого схемы будет наверное тормознутая. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 13:05 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
NechtoСохранять локально и потом грузить в appdomain? Или можно на лету из них извлечь необходимые классы?Что значит "извлечь классы"? Ты собираешься запускать код. У тебя не получится запустить код, не загружая его в домен. NechtoДа и вообще, скорость работы этого схемы будет наверное тормознутая.С чего вдруг? Что тут будет тормозить? Самое узкое место - это скачка плагина. Но ты его скачал один раз, дальше он у тебя лежит локально, грузишь в домен при необходимости. Можешь вообще в GAC добавить. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 13:13 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Shocker.Proплагинаэто слово он всячески старается избегать). А для создания распределенного сетевого кода у него скилов не хватает. И шарп для этого не подходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 13:32 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Shocker.ProNechtoСохранять локально и потом грузить в appdomain? Или можно на лету из них извлечь необходимые классы?Что значит "извлечь классы"? Ты собираешься запускать код. У тебя не получится запустить код, не загружая его в домен. NechtoДа и вообще, скорость работы этого схемы будет наверное тормознутая.С чего вдруг? Что тут будет тормозить? Самое узкое место - это скачка плагина. Но ты его скачал один раз, дальше он у тебя лежит локально, грузишь в домен при необходимости. Можешь вообще в GAC добавить. Выходит не получается мне обойтись без хранения сборки dll на клиенте. Все равно их приходится скачивать на клиент и потом с ними работать. Печально :( Ваши рекомендации я так интерпретирую: Wcf задействовать как шлюз для обновления (передача бинарного набора, сборки dll). GAC как вариант для хранения, сборок. Мне вот интересно, если бы у Вас была подобная задача. Вы бы каким путем пошли? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 13:32 |
|
|
Start [/forum/topic.php?fid=19&fpage=2&tid=1396670]: |
0ms |
get settings: |
15ms |
get forum list: |
20ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
126ms |
get topic data: |
9ms |
get forum data: |
1ms |
get page messages: |
513ms |
get tp. blocked users: |
1ms |
others: | 382ms |
total: | 1069ms |
0 / 0 |