Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сериализация и иерархия классов, Проблема с концепцией реализации 
:(
    Опции темы
FatherFrost
Дата 23.5.2006, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почетный Мороз
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 27.4.2005
Где: Крайний север

Репутация: нет
Всего: 6



Есть Веб-сервис и его клиент. Хочу создать общую иерархию классов. Но возникает проблема с вопросом передачи этих обектов и  работе с ними. Есть 2 варианта:

1.  Класс  на  сервере  и класс на клиенте это наследники абстрактного.  Отличаются у них методы "прогрузки/сохранения" - на сервере  данные читаются из базы, на клиенте - через службу. Если так, то   встает   вопрос  -  можно  ли  в  принципе  сериализовать одного наследника,  а  десериализовать  его в другого наследника. (Реализуемо ли это)

2.  Класс и на сервере и на клиенте используется один и тот же. Однако имеет    четыре    метода    -    загрузиться/сохраниться    в   базу, загрузиться/сохраниться через веб службу. Здесь минусы.

а) На клиенте придется таскать с собой код работы с базой (может это и не  критично).

б) Есть риск вызвать "не те" методы на клиенте. Впрочем ими можно пренебречь, этот момент скорее концептуальный.

Хочется услышать мнение гуру по этому вопросу. Может быть оба варианта не пригодны, тогда куда копать? 


--------------------
Задаю много глупых вопросов....
PM MAIL ICQ   Вверх
mr.DUDA
Дата 23.5.2006, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



По поводу 1 части, нельзя. Точно так же как нельзя преобразовать из ChildA в ChildB:
Код
using System;

class Base
{
}

class ChildA : Base
{
}

class ChildB : Base
{
}

class Test
{
    static void Main(string[] args)
    {
        ChildA objA = new ChildA();
        ChildB objB = (ChildB)objA;
    }
}

Никакой принципиальной разницы между этим кодом и тем, что происходило бы в случае веб-сервиса и клиента, нету.

2 часть решается разными способами. Логичнее всего вынести логику, реализующую низкоуровневую запись и сохранение, в отдельный класс, и переписать твои четыре метода так, чтобы они использовали этот класс. Тогда на сервере можно реализовать реальную загрузку и сохранение, а на клиенте - в виде заглушки, которая ничего не делает. 


--------------------
user posted image
PM MAIL WWW   Вверх
FatherFrost
Дата 23.5.2006, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почетный Мороз
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 27.4.2005
Где: Крайний север

Репутация: нет
Всего: 6



Спасибо за совет... Но не очень нравится мне ентот путь.... 


--------------------
Задаю много глупых вопросов....
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0400 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.