|
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 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
NechtoWcf задействовать как шлюз для обновления (передача бинарного набора, сборки dll).расшаренная папка или ftp быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 13:34 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Nechtoесли бы у Вас была подобная задача.задачи по ГОСТ по функционалу не было. Была хотелка программиста. Не ФУНКЦИОНАЛ. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 13:35 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
NechtoGAC как вариант для хранения, сборок.насколько знаю, эта штука опять не для юзверей, а для прогеров. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 13:36 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
NechtoВыходит не получается мне обойтись без хранения сборки dll на клиенте. Все равно их приходится скачивать на клиент и потом с ними работать. Печально :(Блин, ты второй день пытаешь понять, что код выполняется в домене, а не в хлебнице и не в луже на улице? Это просто настолько очевидно для человека, который не первый день пишет на шарпе, что и в голову не пришло тебе сразу об этом сказать, извини. NechtoМне вот интересно, если бы у Вас была подобная задача. Вы бы каким путем пошли?Эта задача была не только у меня, а у тысяч людей. Называется она ПЛАГИНЫ. Есть куча способов работы с ними, просто почитай литературу. Но в конечном итоге, очевидно, плагин выполняется в домене, он не может выполняться где-то еще. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 13:46 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Petro123NechtoGAC как вариант для хранения, сборок.насколько знаю, эта штука опять не для юзверей, а для прогеров.Ну, скажем, я это привел больше для иллюстрации ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 13:47 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Nechtoнужно передать класс целиком (со всеми свойствами, методами, наследованиями, using-ми и др.). Любителю динамики: авторErlang [ˈɜːlæŋ][3] — функциональный язык программирования с сильной динамической типизацией, предназначенный для создания распределённых вычислительных систем. Разработан и поддерживается компанией Ericsson. Язык включает в себя средства порождения параллельных легковесных процессов и их взаимодействия через обмен асинхронными сообщениями в соответствии с моделью акторов. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 13:58 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Shocker.ProNechtoВыходит не получается мне обойтись без хранения сборки dll на клиенте. Все равно их приходится скачивать на клиент и потом с ними работать. Печально :(Блин, ты второй день пытаешь понять, что код выполняется в домене, а не в хлебнице и не в луже на улице? Это просто настолько очевидно для человека, который не первый день пишет на шарпе, что и в голову не пришло тебе сразу об этом сказать, извини. NechtoМне вот интересно, если бы у Вас была подобная задача. Вы бы каким путем пошли?Эта задача была не только у меня, а у тысяч людей. Называется она ПЛАГИНЫ. Есть куча способов работы с ними, просто почитай литературу. Но в конечном итоге, очевидно, плагин выполняется в домене, он не может выполняться где-то еще. Извините меня, если вам мои вопросы показались глупыми. Но мне нужно было убедиться в своих суждениях (могу ли я обойтись без добавления в домен и не хранить сборки на клиенте), как выяснилось нет, и вы мне помогли это сделать. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 14:26 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Nechtoмогу ли я обойтись без добавления в домен и не хранить сборки на клиентеМне просто на самом деле любопытно, какова была в твоем представлении альтернатива, как выполнять код, который не находится на клиенте (а находится где? и в каком контексте выполняется?) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 14:30 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Petro123Nechtoнужно передать класс целиком (со всеми свойствами, методами, наследованиями, using-ми и др.). Любителю динамики: авторErlang [ˈɜːlæŋ][3] — функциональный язык программирования с сильной динамической типизацией, предназначенный для создания распределённых вычислительных систем. Разработан и поддерживается компанией Ericsson. Язык включает в себя средства порождения параллельных легковесных процессов и их взаимодействия через обмен асинхронными сообщениями в соответствии с моделью акторов. Не не, лучше c# или java ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 14:31 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Nechto, Странный ты. Там один ответ с одним +1. Нашел мнение, да совсем по другому вопросу. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 14:38 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Petro123Nechto, Странный ты. Там один ответ с одним +1. Нашел мнение, да совсем по другому вопросу. Да не странный, просто первую попавшую ссылку приложил, прочитав заголовок. Ну да ладно с этой ссылкой. Вот зачем, вы мне предлагаете этот язык программирования, если использую и изучаю c#? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 14:58 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
Nechto, Можно пойти на врача, а мечтать о динамике, тьфу, петь песни. Вот я вам и дал ссылку. Вас с динамикой, не много в шарпе на самом деле. Терпи. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 15:20 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
>Nechto, сегодня, 13:32 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1308939&msg=21807332][21807332] >Выходит не получается мне обойтись … Вы бы каким путем пошли? <Вам надо создать хотя-бы одно реальное приложение на C#, оценить его компоненты и, думаю, желание таскать отдельные классы откуда-то на клиента отпадет само-собой. Для примера приведу цифири конкретного одностраничного WPF приложения: 1. Обслуживает 18 таблиц MS SQL - SELECT, INSERT, UPDATE и DELETE. 2. 1 главная страница MainWindow.xaml 3. 29 панелей (UserControl) реализуют графический интерфейс для (1), включая работу с документами Word и графическими файлами. Бинарный вариант приложения занимает 916 Кбайт в папке диска, из них wpf_ИнспекцииВД.pdb (описание графических компонент) - 551 Кбайт. Иными словами, собственно рабочий код на C# - компактен, заниматься одним классом не имеет смысла, заниматься - так приложением в целом. Привожу и сжатый вариант приложения в .rar контейнере - 164 Кбайт: ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2019, 16:53 |
|
c# wcf передать класс из сервиса клиенту
|
|||
---|---|---|---|
#18+
NechtoPetro123Nechto, Странный ты. Там один ответ с одним +1. Нашел мнение, да совсем по другому вопросу. Да не странный, просто первую попавшую ссылку приложил, прочитав заголовок. Ну да ладно с этой ссылкой. Вот зачем , вы мне предлагаете этот язык программирования, если использую и изучаю c#? чтобы не мутил как минимум ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2019, 17:44 |
|
|
start [/forum/topic.php?all=1&fid=19&tid=1396670]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 152ms |
0 / 0 |