![]() |
|
Модераторы: gambit |
![]()
|
|
| Мурлыкатам_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 5.2.2007 Где: город-герой Минск Репутация: нет Всего: 2 |
Подскажите плз:
1. Хочу от клиента серверу передавать данные в виде структуры (пакета информации). 2. Для этого делаю структуру в общем компоненте для сервера и клиента, а мне компилятор пишет, что структуру невозможно сериализовать, как с этим бороться? и стоит ли? Или проще (все данные типа стринг) сплюсовать всё в одну строку, а на стороне сервера ее разобрать? |
|||
|
||||
| 1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: нет Всего: 40 |
бороцца с этим безусловно стоит. А вся борьба скорее всего будет заключатся в применении к структуре атрибута SerializableAttribute Если атрибут уже все-таки применили, то желательно посмотреть код структуры -------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
| Мурлыкатам_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 5.2.2007 Где: город-герой Минск Репутация: нет Всего: 2 |
А недостаточно метки [Serializeble] ?
И вообще, что такое сериализация в целом и почему это явление накладывает ограничения на работу с удаленными объектами? Структуры же не поддерживают наследование? Или может лучше просто сделать класс... Объект класса ведь можно передать в функцию как параметр? Это сообщение отредактировал(а) Мурлыкатам_ - 19.11.2007, 19:31 |
|||
|
||||
| tol05 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 6 Всего: 170 |
не понял к чему это? Серилизация - это сохранение состояния (данных) в поток. Тип Int32 - структура, тоже не поддерживает наследования, но он же серилизуем!.. не всегда. Эсли структура содержит поля только серилизуемых типов, тогда да, достаточно. Но если
тогда хоть есть [Serializeble], хоть нет ... структура не будет серилизована. Поэтому и
-------------------- На хорошей работе и сны хорошие снятся. |
||||
|
|||||
| Мурлыкатам_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 5.2.2007 Где: город-герой Минск Репутация: нет Всего: 2 |
почему не имеет, сделаю класс: MarshalByRefObject. И все никаких проблем с удаленным взаимодействием. Клиент вызывает удаленный метод класса и передает в него как параметр следующую структуру: struct ClientSendedData { int NumberOfSendingFiles; string ClientUNC; string[] FileAttributes; byte[] FileContent; bool ReWrite; } Данная структура записывается в удаленный класс, тот извращается над ней как ему надо, и дает знать, что готов принять следующую структуру. Так вот когда я пытаюсь передать эту структуру как параметр, Мне пишет ошибку - незя так делать, структура не сериализируема. |
|||
|
||||
| tol05 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 6 Всего: 170 |
ну а где атрибут [Serializable] ???
Ты же об это говорил
если нужно передать что-то куда-то, то: - для структур и классов можно юзать [Serializable] - тип маршаллизуется по значению или - для классов можно юзать наследование от MarshalByRefObject (для структур нельзя, это понятно) - тип маршаллизуется по ссылке больше вариантов нет Вот я и говорил. Что. Если ты юзаешь [Serializable], то можно и не делать классом. Класс это или структура - значения не имеет. -------------------- На хорошей работе и сны хорошие снятся. |
|||
|
||||
| Мурлыкатам_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 5.2.2007 Где: город-герой Минск Репутация: нет Всего: 2 |
Ясно.
Решил все параметры клеить в строку, передавать строку и байтовый массив Че париться?! Спасибо за помощь, надо почитать про сериализацию, потомучто я это слово никак не могу осознать.. |
|||
|
||||
| 1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: нет Всего: 40 |
Мурлыкатам_, если это "не парицца", то что оно тогда по-твоему?
-------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
| Мурлыкатам_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 5.2.2007 Где: город-герой Минск Репутация: нет Всего: 2 |
В смысле? |
|||
|
||||
| 1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: нет Всего: 40 |
Мурлыкатам_, назначение сериализации как раз в том и состоит, чтобу унифицировать сохранение состояния объекта и создание нового объекта из сохраненной информации. При этом не надо писать свои парсеры.
Если тебе больше нравицца писать парсер - ради бога. Только учти, что в это как раз и есть "париться". -------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
| Мурлыкатам_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 5.2.2007 Где: город-герой Минск Репутация: нет Всего: 2 |
А че такое парсер?
Все получилось со структурой.
Как я понял вызывающая сторона должна инициализировать все поля структуры? Это сообщение отредактировал(а) Мурлыкатам_ - 27.11.2007, 15:24 |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Распределённые приложения и сеть | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |