Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
AVK>>>Так и такое есть. S>> Почему тогда такой сериализации нет вместе с XML и Бинарной?
AVK>А зачем вместе с XML и бинарной?
Я так понимаю, что сериализация объектов и доступ к приватным полям должен накладывать ограничения и доступ может быть ограничен или нужно самому выстраивать доступ через рефлексию.
Такие механизмы можно встраивать в систему. Вплоть до кодогенерации кода чтения и записи.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
AVK>>А зачем вместе с XML и бинарной? S>Я так понимаю, что сериализация объектов и доступ к приватным полям должен накладывать ограничения и доступ может быть ограничен или нужно самому выстраивать доступ через рефлексию.
Долго обсуждали то, как плохо приватные поля учитывать без сериализации, и пришли опять к этому.
S>Такие механизмы можно встраивать в систему.
В какую систему и зачем?
S> Вплоть до кодогенерации кода чтения и записи.
Для кодогенерации ничего в систему встраивать не надо.
... << RSDN@Home 1.2.0 alpha 5 rev. 99 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
AVK>>>А зачем вместе с XML и бинарной? S>>Я так понимаю, что сериализация объектов и доступ к приватным полям должен накладывать ограничения и доступ может быть ограничен или нужно самому выстраивать доступ через рефлексию.
AVK>Долго обсуждали то, как плохо приватные поля учитывать без сериализации, и пришли опять к этому.
А как от них отказаться, если гетеры и сетеры могут зависеть не от поля, а от набора полей. Плохо это или хорошо.
S>>Такие механизмы можно встраивать в систему.
AVK>В какую систему и зачем?
S>> Вплоть до кодогенерации кода чтения и записи.
AVK>Для кодогенерации ничего в систему встраивать не надо.
Вот смотрю я на BF. Там конечно черт ногу сломит. Но имя System.Runtime.Serialization.Formatters.Binary.BinaryFormatter как бы намекает на рантайм. Но вот этот BF должен быть не в стрим а в БД.
Мне на самом деле не понятно, что такого зашитого механизма нет. Хотя он очевиден.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S> А как от них отказаться
Есть разные варианты.
S>, если гетеры и сетеры могут зависеть не от поля, а от набора полей.
Зачем в DTO геттеры и сеттеры, зависящие от нескольких полей?
AVK>>Для кодогенерации ничего в систему встраивать не надо. S> Вот смотрю я на BF. Там конечно черт ногу сломит. Но имя System.Runtime.Serialization.Formatters.Binary.BinaryFormatter как бы намекает на рантайм.
BF использует рефлекшен, это очевидно. А вот XmlSerializer, DataContractSerializer, linq2db используют кодогенерацию.
S> Но вот этот BF должен быть не в стрим а в БД. Мне на самом деле не понятно, что такого зашитого механизма нет.
Есть. Entity Framework называется.
... << RSDN@Home 1.2.0 alpha 5 rev. 99 on Windows 8 6.2.9200.0>>
AVK>BF использует рефлекшен, это очевидно. А вот XmlSerializer, DataContractSerializer, linq2db используют кодогенерацию.
Потому, что там все элементарно со свойствами. Намного сложнее, когда есть приватные поля и иерархия.
S>> Но вот этот BF должен быть не в стрим а в БД. Мне на самом деле не понятно, что такого зашитого механизма нет.
AVK>Есть. Entity Framework называется.
И какую встроеную БД они используют? Как легко можно воспользоваться?
Хотелось бы так же как и BF
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
AVK>>BF использует рефлекшен, это очевидно. А вот XmlSerializer, DataContractSerializer, linq2db используют кодогенерацию. S> Потому, что там все элементарно со свойствами.
Нет, не потому.
S> Намного сложнее, когда есть приватные поля и иерархия.
Они все в той или иной мере понимают иерархию, а приватные поля в сериализации, которой важен формат, не нужны.
AVK>>Есть. Entity Framework называется. S> И какую встроеную БД они используют?
Любую, для которой есть EF ADO.NET провайдер. Вот списочек таких провайдеров — http://msdn.microsoft.com/en-us/data/dd363565.aspx. Из встроенных там sqlite и fb embedded.
Плюс МСный вариант — SQL CE.
S> Как легко можно воспользоваться?
Легко.
... << RSDN@Home 1.2.0 alpha 5 rev. 99 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Любую, для которой есть EF ADO.NET провайдер. Вот списочек таких провайдеров — http://msdn.microsoft.com/en-us/data/dd363565.aspx. Из встроенных там sqlite и fb embedded. AVK>Плюс МСный вариант — SQL CE.
SQL CE это супер навороченный вариант для целей сериализации. Это стрельба из пушки по воробьям. Там не надо индексов, ссылки это номер позиция в Таблице, Массив ввиде двух таблиц ппервой ссылка на первый элемент и количество, тоже касается и строк. Так как не надо удалять сама БД элементарная. S>> Как легко можно воспользоваться?
AVK>Легко.
Можно примерчик?
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
S>>Там не надо индексов
AVK>Если не надо индексов и удаления, то и БД не нужна. Совсем.
А как ты будешь хранить таблицы? Вся прелесть БД, что типы сгруппированы по таблицам и не нужно при записи указывать тип.
Но для сериализации десериализации нужны дополнительные данные в памяти (при сериализации это Хэш таблицы по типам хранящие объект и номер записи в таблице) при десериализации просто массив хранящий ссылку на объект. Все элементарно. При этом можно сравнивать текущую версию с сериализованной версией. Это все лучшее из XML и бинарной сериализации. AVK>>>Легко. S>> Можно примерчик?
AVK>http://bit.ly/11l02Ez
Угу это так же элементарно как BF. Нужен полный аналог BF, только внутри пишется не последовательно, а раскладывается по таблицам.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S> А как ты будешь хранить таблицы?
В файле.
S> Вся прелесть БД, что типы сгруппированы по таблицам
Прелесть БД в наличии индексов и поиска по ним, а так же возможности модификации отдельных записей, а не перезаписи графа целиком. Для просто структурированного решения есть много всяких вариантов, например XML.
AVK>>http://bit.ly/11l02Ez S> Угу это так же элементарно как BF. Нужен полный аналог BF
Пишется на коленке за 10 минут.
... << RSDN@Home 1.2.0 alpha 5 rev. 99 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
S>> А как ты будешь хранить таблицы?
AVK>В файле.
S>> Вся прелесть БД, что типы сгруппированы по таблицам
AVK>Прелесть БД в наличии индексов и поиска по ним, а так же возможности модификации отдельных записей, а не перезаписи графа целиком. Для просто структурированного решения есть много всяких вариантов, например XML.
В котором пишется слишком много лишних букв. А зачем нужна модификация при сериализации? Я уверяю, что сериализация в Таблицы намного эффективнее по скорости записи и чтения чем из XML и при этом будет значительно меньше по размеру. AVK>>>http://bit.ly/11l02Ez S>> Угу это так же элементарно как BF. Нужен полный аналог BF
AVK>Пишется на коленке за 10 минут.
А зачем тратить эти 10 минут? C BF не тратится ни ничего лишнего. Все из каропки.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S> В котором пишется слишком много лишних букв.
http://en.wikipedia.org/wiki/Protocol_Buffers
В БД, кстати, тоже будет "много лишних букв", потому что формат хранения затачивается под масштабные модификации и минимизацию фрагментации в процессе.
S> А зачем нужна модификация при сериализации?
Если не нужна, то и БД тоже не нужна.
S> Я уверяю, что сериализация в Таблицы намного эффективнее по скорости записи и чтения чем из XML
Ты не уверяй, ты проверь.
S> и при этом будет значительно меньше по размеру.
Это тоже проверь
AVK>>Пишется на коленке за 10 минут. S>А зачем тратить эти 10 минут?
Затем, что задача сериализации графа объектов в БД одним разом не самая встречающаяся. Вот скажи, можешь ты некоторое количество юзкейсов описать для нее, раз так агитируешь за универсальный сериализатор?
... << RSDN@Home 1.2.0 alpha 5 rev. 99 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
S>> В котором пишется слишком много лишних букв.
AVK>http://en.wikipedia.org/wiki/Protocol_Buffers AVK>В БД, кстати, тоже будет "много лишних букв", потому что формат хранения затачивается под масштабные модификации и минимизацию фрагментации в процессе.
S>> А зачем нужна модификация при сериализации?
AVK>Если не нужна, то и БД тоже не нужна.
БД это набор Таблиц, в том числе и таблицы описания типов. Смысл такой сериализации когда сериализуется массив.
AVK>>>Пишется на коленке за 10 минут. S>>А зачем тратить эти 10 минут?
AVK>Затем, что задача сериализации графа объектов в БД одним разом не самая встречающаяся. Вот скажи, можешь ты некоторое количество юзкейсов описать для нее, раз так агитируешь за универсальный сериализатор?
Например для передачи данных между приложениями. В том числе например между сервером и клиентом. Например есть мобильное приложение и сервер. Для сохранения состояния для аварийного восстановления или окончания работы
Для обмена между конфигурациями. Там правда нет ссылок, так как ключи в полях. Это всяко лучше чем текстовые файлы и XML. При этом можно использовать в SQL вместо булков.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
AVK>>Если не нужна, то и БД тоже не нужна. S> БД это набор Таблиц, в том числе и таблицы описания типов.
А XML — набор тегов. Дальше что?
S> Смысл такой сериализации когда сериализуется массив.
Ты сам то понял что сказал?
AVK>>Затем, что задача сериализации графа объектов в БД одним разом не самая встречающаяся. Вот скажи, можешь ты некоторое количество юзкейсов описать для нее, раз так агитируешь за универсальный сериализатор? S> Например для передачи данных между приложениями.
БД для передачи данных между приложениями? Жоско. А как это должно выглядеть? Скидываем граф объектов в БД, потом файл с БД передаем по сети?
S>Для обмена между конфигурациями.
Каких таких конфигураций? 1С что ли? При чем тут тогда дотнет?
S> Там правда нет ссылок, так как ключи в полях.
Ключи есть а индексов нет?
S> Это всяко лучше чем текстовые файлы и XML.
Чем лучше?
S> При этом можно использовать в SQL вместо булков.
... << RSDN@Home 1.2.0 alpha 5 rev. 99 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
AVK>>>Если не нужна, то и БД тоже не нужна. S>> БД это набор Таблиц, в том числе и таблицы описания типов.
AVK>А XML — набор тегов. Дальше что?
То есть БД на XML это по твоему нормально?
S>> Смысл такой сериализации когда сериализуется массив.
AVK> Ты сам то понял что сказал?
Наборы данных. Так пойдет?
AVK>>>Затем, что задача сериализации графа объектов в БД одним разом не самая встречающаяся. Вот скажи, можешь ты некоторое количество юзкейсов описать для нее, раз так агитируешь за универсальный сериализатор? S>> Например для передачи данных между приложениями.
AVK>БД для передачи данных между приложениями? Жоско. А как это должно выглядеть? Скидываем граф объектов в БД, потом файл с БД передаем по сети?
Да а в чем сложность? При этом обмен через MXL с сотнями мегабайт это нормально? S>>Для обмена между конфигурациями.
AVK>Каких таких конфигураций? 1С что ли? При чем тут тогда дотнет?
Ну я часто применяю дот net и в 1С. От этого задачи обмена между различными базами не стала
S>> Там правда нет ссылок, так как ключи в полях.
AVK>Ключи есть а индексов нет?
А зачем индексы для переноса. Они нужны в целевой БД. В том же XML никаких индексов нет.
S>> Это всяко лучше чем текстовые файлы и XML.
AVK>Чем лучше?
Ну вопервых есть описание полей. Для текстов нужно для этого еще файл с описанием полей и кроме одной таблицы в одном файле не передашь. Про XML это объёмы. S>> При этом можно использовать в SQL вместо булков.
AVK>
bulk insert
Можно на основании такой БД, создавать временные таблицы, создавать индексы и применять Merge.
и солнце б утром не вставало, когда бы не было меня
Такая сериализация при определенных условиях будет значительно эффективнее чем XML или JSON.
А когда больше возможностей легче выбрать оптимальный путь решения задачи.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
AVK>>А XML — набор тегов. Дальше что? S> То есть БД на XML это по твоему нормально?
БД — нет, способ хранения и передачи струтурированных неизменяемых данных — да.
S>>> Смысл такой сериализации когда сериализуется массив. AVK>> Ты сам то понял что сказал? S> Наборы данных. Так пойдет?
Нет. Смысл фразы все равно непонятен.
AVK>>БД для передачи данных между приложениями? Жоско. А как это должно выглядеть? Скидываем граф объектов в БД, потом файл с БД передаем по сети? S> Да а в чем сложность?
Т.е. то, что для передачи типичной посылки в сотню байт придется гонять десятки и сотни килобайт минимальной БД, и на каждую посылку поднимать коннект к новой БД не из пула тебя не пугает, а 30-40% оверхеда по объему и копейки по процессору у XML это ужас-ужас?
S> При этом обмен через MXL с сотнями мегабайт это нормально?
Нормально, если в DOM весь XML не грузить (XMLSerializer, если что, не грузит). А еще лучше через Protobuf или его аналоги.
AVK>>Каких таких конфигураций? 1С что ли? При чем тут тогда дотнет? S> Ну я часто применяю дот net и в 1С. От этого задачи обмена между различными базами не стала
И как ты БД в 1С открывать будешь? Через ADO?
AVK>>Ключи есть а индексов нет? S> А зачем индексы для переноса.
Для переноса — низачем. И БД тоже не нужна.
S>>> Это всяко лучше чем текстовые файлы и XML. AVK>>Чем лучше? S> Ну вопервых есть описание полей.
Какое такое описание полей и чем оно лучше XSD?
S> Для текстов нужно для этого еще файл с описанием полей
Зачем, если формат обмена документирован? Или передавать известные обеим сторонам метаданные в каждой посылке это такой метод эффективного программирования?
S> и кроме одной таблицы в одном файле не передашь.
Это еще почему?
S> Про XML это объёмы.
Еще раз — БД это тоже объемы, потому что БД под совершенно другой сценарий заточены.
S>>> При этом можно использовать в SQL вместо булков. AVK>> S>bulk insert
Что с ним?
S> Можно на основании такой БД, создавать временные таблицы, создавать индексы и применять Merge.
Зачем?
... << RSDN@Home 1.2.0 alpha 5 rev. 99 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Serginio1, Вы писали:
AVK>>>А XML — набор тегов. Дальше что? S>> То есть БД на XML это по твоему нормально?
AVK>БД — нет, способ хранения и передачи струтурированных неизменяемых данных — да.
S>>>> Смысл такой сериализации когда сериализуется массив. AVK>>> Ты сам то понял что сказал? S>> Наборы данных. Так пойдет?
AVK>Нет. Смысл фразы все равно непонятен.
Например Запрос или результат линка.
AVK>>>БД для передачи данных между приложениями? Жоско. А как это должно выглядеть? Скидываем граф объектов в БД, потом файл с БД передаем по сети? S>> Да а в чем сложность?
AVK>Т.е. то, что для передачи типичной посылки в сотню байт придется гонять десятки и сотни килобайт минимальной БД, и на каждую посылку поднимать коннект к новой БД не из пула тебя не пугает, а 30-40% оверхеда по объему и копейки по процессору у XML это ужас-ужас?
Моя минимальная БД будет занимать не намного места. Размер страницы может варьироваться. Да и предначзначена такая БД не для передачи 2 трех строк. А например тысяч.
S>> При этом обмен через MXL с сотнями мегабайт это нормально?
AVK>Нормально, если в DOM весь XML не грузить (XMLSerializer, если что, не грузит). А еще лучше через Protobuf или его аналоги.
А зачем лишние мегабайты таскать?
AVK>>>Каких таких конфигураций? 1С что ли? При чем тут тогда дотнет? S>> Ну я часто применяю дот net и в 1С. От этого задачи обмена между различными базами не стала
AVK>И как ты БД в 1С открывать будешь? Через ADO?
Да. в 7.7 есть удобный инструмент 1C++, в восьмерке есть встроенная функция описания полей. Я использовал для обновления прайсов в регистрах сведений. А прайсы по запчастям на 4 миллиона записей нормальное явление. AVK>>>Ключи есть а индексов нет? S>> А зачем индексы для переноса.
AVK>Для переноса — низачем. И БД тоже не нужна.
Это тве личное мнение. Если сжать XML то он жмется раз в 10. Размер такой БД будет меньше еще раз в 100. S>>>> Это всяко лучше чем текстовые файлы и XML. AVK>>>Чем лучше? S>> Ну вопервых есть описание полей.
AVK>Какое такое описание полей и чем оно лучше XSD?
Оно не лучше, оно берет лучшее из XML и бинарной сериализацией.
А тем что например такая структура
В таблице будет занимать намного меньше места. Кроме того проще управлять S>> Для текстов нужно для этого еще файл с описанием полей
AVK>Зачем, если формат обмена документирован? Или передавать известные обеим сторонам метаданные в каждой посылке это такой метод эффективного программирования?
S>> и кроме одной таблицы в одном файле не передашь.
AVK>Это еще почему?
S>> Про XML это объёмы.
AVK>Еще раз — БД это тоже объемы, потому что БД под совершенно другой сценарий заточены.
S>>>> При этом можно использовать в SQL вместо булков. AVK>>> S>>bulk insert
AVK>Что с ним?
S>> Можно на основании такой БД, создавать временные таблицы, создавать индексы и применять Merge.
AVK>Зачем?
и солнце б утром не вставало, когда бы не было меня