![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jul 2008
Адрес: Украина, Киев
Сообщений: 253
|
Доброго времени суток.
В ходе разработки он-лайн игры и разработки общения клиент-сервер (с помощью xml, описывающей экземпляры объектов (классов)) появился такой вопрос: должен ли разработчик клиента жертвовать удобством и быстродействием в угоду удобства и быстродействия серверу, и в какой степени. Интересно ваше мнение. Думаю, почти все скажут, что да, сервер важнее, поэтому приведу конкретный пример: сервер, написанный на си-шарпе, выбирает данные из базы данных, формирует свои классы и делает серриализацию в xml. На выходе получается что-то типа: <object>
<properties>
<property name="posX" value="10"/>
<property name="posY" value="20"/>
<property name="name" value="vasya"/>
</properties>
</object>
Я сколняюсь к варианту: таким образом проще получить доступ к этим данным: Но человек, пишущий сервер аргументирует, что если он откажется от стандартной серриализации и будет писать формирования xml вручную, это понизит быстродействие сервера. Какие есть соображения по этому поводу, и как можно облегчить флэшу доступ к свойствам объекта, если все же оставить первый вариант передачи данных? |
|
|||||
|
Модрон-ветеринар
|
Вопрос небольшой - а зачем вам вообще нужен XML в данном случае? Получается, что сперва сервер у вас "выбирает данные из базы данных", формирует XML, а потом этот XML надо еще парсить, то есть теперь уже разбирать.
Может быть я что-то не понимаю? Разве нельзя данные сразу клиенту отдавать? |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
а может компромисс?
Кстати что-то ваш серверный программист темнит) вывести данные в виде атрибутов а не отдельных нодов никак нельзя назвать "ручным" выводом и на быстродействие никак не скажется.
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 26.05.2010 в 21:17. |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
+1 )))
темнит серверный программер либо лень 20 строчек кода подправить, либо написано так, что он боится это трогать но с философской точки зрения лишними расчетами сервер лучше не загружать (например, если игровое время хранится как целое в секундах, то переводить его в удобоваримый вид для выдачи пользователю лучше на клиенте, а не на сервере) но это не рассматриваемый случай |
|
|||||
|
Регистрация: Jul 2008
Адрес: Украина, Киев
Сообщений: 253
|
Цитата:
Цитата:
|
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Вас дурят. ))
Вот здесь на пальцах расписана сериализация на дот.нет'е http://www.realcoding.net/articles/x...ps-tricks.html Серверный программист взял самый простой способ сериализации - это да. То что сериализация с использованием атрибутов существенно увеличит нагрузку на сервер - имхо, глупость несусветная. |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
http://www.realcoding.net/articles/x...ps-tricks.html
2 вида сериализации: и UPD: блин.. опередили) одним гуглом пользовались)
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 27.05.2010 в 14:57. |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
)))))))
я пользовался "негуглом", но сути это не меняет )) |
|
|||||
|
Регистрация: Jul 2008
Адрес: Украина, Киев
Сообщений: 253
|
За ссылку по серриализации спасибо - врага нужно знать в лицо ))))
Я, пожалуй, не совсем верно выразился: дело в том, что элемент <properties>
<property name="posX" value="10"/>
<property name="posY" value="20"/>
<property name="name" value="vasya"/>
</properties>
Т.е. конфликт возникает на рубеже: база ни о чем не знает, для нее все объекты равны и динамически изменяемы, а на флэш-клиенте у меня: за конкретным объектом закреплена конкретная логика, которая ожидает вполне конкретных входных данных (переменных). Под клиентской логикой я подразумеваю вывод графики, игровая логика, конечно же, просчитывается на гейм-сервере. Крупную браузерную игру пишу впервые, и хочется узнать Ваше мнение по поводу этих размышлений. |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
это ничего не меняет (почти ничего)
серверному программисту надо правильным образом указать [XmlAttribute] в этом "одном-на-все-случаи-жизни" классе и все. Получите все пропертис не в виде нодов, а в виде атрибутов. Одним из атрибутов, очевидно, будет тип объекта, чтобы было понятно, что с этим всем делать. Там в примере все написано: public class DataClass
{
public DataClass(){}
public string ID = Guid.NewGuid().ToString();
public string Name = "Just Name";
public Decimal Count = 10;
public DateTime Date = DateTime.Now;
}
<?xml version="1.0" encoding="utf-8"?> <DataClass xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ID>34332413-e70f-44f7-b35c-b34c47812dbc</ID> <Name>Just Name</Name> <Count>10</Count> <Date>2006-10-30T12:35:20.3110319+03:00</Date> </DataClass> [XmlRoot("Data")] // изменим имя корневого элемента
public class DataClass
{
public DataClass(){}
[XmlAttribute] // сериализуем в xml атрибут
public string ID = Guid.NewGuid().ToString();
[XmlAttribute] // сериализуем в xml атрибут
public string Name = "Just Name";
[XmlElement("Reserved")] // изменим имя xml элемента
public Decimal Count = 10;
[XmlIgnore] // не будет сериализоваться
public DateTime Date = DateTime.Now;
}
Последний раз редактировалось mikhailk; 27.05.2010 в 16:58. |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:34. |
|
|
« Предыдущая тема | Следующая тема » |
|
|