Почему Урожай купил вообще? [закрытый]

Проблема заключается в следующем: когда объект реализует IEnumerable, JSON.net идентифицирует его как массив значений и сериализует его после синтаксиса Json (который не включает свойства) например :

 [ {"FooProperty" : 123}, {"FooProperty" : 456}, {"FooProperty" : 789}]

Если вы хотите сериализовать его, сохраняя свойства, вам необходимо обработать сериализацию этого объекта вручную, указав пользовательский JsonConverter:

// intermediate class that can be serialized by JSON.net
// and contains the same data as FooCollection
class FooCollectionSurrogate
{
    // the collection of foo elements
    public List Collection { get; set; }
    // the properties of FooCollection to serialize
    public string Bar { get; set; }
}

public class FooCollectionConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return objectType == typeof(FooCollection);
    }

    public override object ReadJson(
        JsonReader reader, Type objectType, 
        object existingValue, JsonSerializer serializer)
    {
        // N.B. null handling is missing
        var surrogate = serializer.Deserialize(reader);
        var fooElements = surrogate.Collection;
        var fooColl = new FooCollection { Bar = surrogate.Bar };
        foreach (var el in fooElements)
            fooColl.Add(el);
        return fooColl;
    }

    public override void WriteJson(JsonWriter writer, object value, 
                                   JsonSerializer serializer)
    {
        // N.B. null handling is missing
        var fooColl = (FooCollection)value;
        // create the surrogate and serialize it instead 
        // of the collection itself
        var surrogate = new FooCollectionSurrogate() 
        { 
            Collection = fooColl.ToList(), 
            Bar = fooColl.Bar 
        };
        serializer.Serialize(writer, surrogate);
    }
}

Затем используйте его следующим образом:

var ss = JsonConvert.SerializeObject(collection, new FooCollectionConverter());

var obj = JsonConvert.DeserializeObject(ss, new FooCollectionConverter());

24
задан Dean J 16 March 2010 в 12:46
поделиться

7 ответов

Скорее всего, у вашей компании есть какой-то контракт с CA - вы используете много других собственных программ CA?

Редактировать: Думаю, так!

25
ответ дан Greg Hurlman 28 November 2019 в 22:35
поделиться

У меня было преимущество использования Harvest в банке, и вы никогда не найдете более отвратительного улья мразей и подлости, задом наперед тройные недокументированные рукавицы для регистрации, которые требуют 15 шагов, чтобы сделать одно простое изменение. Не важно, что они даже не использовали ветвления. Это злой инструмент, не позволяйте ему оказаться в тисках.

26
ответ дан 28 November 2019 в 22:35
поделиться

Я использовал Harvest во время короткого концерта в банковской индустрии несколько лет назад. Я согласен, что это было практически непригодно, но людям, ответственным за обеспечение качества, казалось, это нравилось.

6
ответ дан Kristopher Johnson 28 November 2019 в 22:35
поделиться

Я работал в компании, у которой было два варианта; ClearCase или Harvest. Subversion никогда не рассматривалась, и причина в том, что у ClearCase (IBM) и Harvest (CA) уже были давние контракты с мэйнфреймами.

5
ответ дан Dean J 28 November 2019 в 22:35
поделиться

Мы использовали Harvest в течение примерно десяти лет (2000-2010), и хотя мы сейчас смотрим на его замену, я считаю, что он очень хорошо нам помог. Harvest (давайте придерживаться этого имени, даже если оно больше не является официальным), был первым крупным инструментом, который мы реализовали для поддержки нас в R & amp; D, и в то время никто из нас не знал много о многих аспектах жизненного цикла приложения (управление версиями код, ветвление, автоматизированное тестирование, регрессионное тестирование, обеспечение качества, развертывание в многочисленных средах выполнения и производстве, откат, исправления аварийных ситуаций, обновления обслуживания и т. д.); сегодня мы знаем намного больше, и наши процессы разработки служат нам очень хорошо (не то, чтобы не было места для многих улучшений). У нас нет очень иерархической организации (у нас нет большого количества инспекторов, которые должны утверждать изменения), но очень полезно иметь поддержку «контрольных точек» - точек в процессе разработки, где что-то должно произойти (например, функциональное тестирование или интеграционное тестирование).

Недостаток (для нас) с Harvest в отношении юзабилити заключался в «том, что программист должен сделать, чтобы изменить x строк кода». Сегодня (там) есть много более простых и эффективных способов, чем Harvest, чтобы получить доступ для записи к файлам исходного кода, сделать ваши обновления и затем вернуть файлы снова / переместить их в другой аспект процесса разработки (тестирование, развертывание и т. Д.). .). Еще одним недостатком является ценник; это дорого.

Преимущество, которое мы получили с Harvest: он поддерживает рабочий процесс, и поэтому мы смогли создать единую систему для управления версиями кода, рабочим процессом и автоматизацией процессов. Если возможно, проще поддерживать и улучшать одну систему, чем многие. Помимо предоставления доступа к внутренним процессам по линии cmd (что позволяет создавать сценарии специальных решений, когда этого требуют ваши процессы), Harvest также легко настраивается с помощью графического интерфейса. Он имеет концепцию «пакета», которая позволяет легко присоединять множество метаданных к изменениям кода и обрабатывать изменения независимо от других изменений (управление версиями на уровне файлов, а не наборы изменений, содержащие полную массу кода). Это полезно для обработки независимых аварийных и ремонтных изменений.

Если разработчик всего лишь программист и думает только о аспектах разработки программного обеспечения, связанных с кодированием, то я полагаю, что он / она может очень разочароваться в Harvest. Если разработчик является разработчиком и понимает, что разработка программного обеспечения - это намного больше, чем кодирование, и что кодирование - это только начало жизненного цикла программного обеспечения, то я верю, что он увидит много преимуществ с Harvest.

2
ответ дан Christopher 28 November 2019 в 22:35
поделиться

Я использую HARVEST последние 4 года, и мне это нравится. Такая поддержка, которую вы оказываете для контроля над движением кода, действительно фантастическая. Мы используем HARVEST для развертывания приложений в Websphere. Это также делает удивительную работу по развертыванию плагинов на веб-сервере вместе с приложением. Если вы хотите иметь процесс для перемещения кода в большой корпоративной среде, я не думаю, что какой-либо другой инструмент может даже приблизиться к HARVEST.

-12
ответ дан Raja Subramanian 28 November 2019 в 22:35
поделиться

Хорошо, я отвечу на этот вопрос в нескольких эпизодах, потому что здесь уже поздно, а Harvest - большая тема.

Во-первых, CA Harvest (так называется версия продукта 7, версия 5 - это CCC, я не могу вспомнить расширение, версия 12 называется CA SCM) - это намного больше, чем просто инструмент SCM - точно так же ClearCase - это намного больше, чем просто инструмент SCM. SVN, CVS, git, hg - все это SCM базового стандарта и немного больше.

С Harvest вы получаете политику SCM +. Это дает вам место для хранения и версии вашего кода, а также обертывает все это политикой того, как этот код созревает в вашей организации от разработчика к продукту. Есть ли в вашей организации политика, согласно которой ведущий разработчик должен подписать код, прежде чем он будет передан в отдел контроля качества? Harvest позволяет вам определить подписку как политику и обеспечивает ее выполнение - вы не можете перенести код из состояния «Dev» в состояние «QA», пока один из людей в проекте, назначенный ведущим разработчиком, не сделает именно это. Есть ли у вас политика, согласно которой любой код SQL должен быть одобрен администратором баз данных, прежде чем он будет реализован? Harvest позволяет вам определять эту политику и обеспечивать ее выполнение, поэтому вам может потребоваться подтверждение как ведущего разработчика, так и администратора базы данных перед переносом кода.

Harvest ни в коем случае не является инструментом для большинства программных организаций - он обычно используется в финансовой индустрии или в бизнесе, где очень сильная нормативно-правовая база регулирует то, что они могут делать. Банки должны соблюдать закон Сарбаннса-Оксли, который предъявляет очень строгие требования к аудиту. Harvest предоставляет возможность определять все виды средств контроля и обработки изменений в активах банка в течение их жизненного цикла.Я знаю крупные организации общественного транспорта, которые ежедневно отвечают за безопасность и пунктуальность миллионов людей и нуждаются в четко определенных механизмах контроля, которые предоставляет такой инструмент, как Harvest. Я также видел, как Harvest используется в средах, где тысячи разработчиков используют его каждый день - да, я не преувеличиваю, буквально тысячи разработчиков в одной организации пишут код для всемирного ритейлера, каждый день продвигают ИТ-решения в магазины. мир.

Урожай не идеален, я думал, что версия 12 намного лучше. В нем слишком много «просто глупых» моментов, он выполняет управление версиями для каждого файла, как CVS, и ветвление, подобное CVS, и управление версиями каталогов (или их отсутствие), со всем тем интересным, что мы узнали и которого опасаемся. Как только вы это узнаете и примете, он не будет медленнее, чем любой другой SCM, который я использовал. У него просто большая работа, чем просто версия вашего кода.

Еще одним большим преимуществом, которое стало еще большим в версии 12, является интеграция с другими инструментами CA (и возможность интеграции с инструментами, не относящимися к CA, но на данный момент их немного) - отслеживание дефектов с помощью Quality Center, устранение неполадок с помощью Unicentre Service Desk, развертывание программного обеспечения на рабочем столе с помощью SDM. Вы можете определить мосты между этими приложениями, что приведет к более тесной интеграции этих проблем с обычно положительным влиянием на точность и своевременность.

Если вы имеете дело с поставкой программного обеспечения для всемирного предприятия, с тысячами настольных компьютеров и серверов, системами основного / среднего / промежуточного уровня, жесткими процессами управления изменениями, сложностью, правилами, контрактами, аудиторами, просто целым набором сложности , Harvest - это всего лишь один инструмент из целого набора инструментов, которые вам могут понадобиться. Если вам просто нужен простой SCM для команды из 10 разработчиков, поддерживающих несколько сотен клиентов, это не лучший вариант.

Я постараюсь добавить кое-что о том, как на самом деле работает Harvest в следующий раз - репозитории, проекты, представления, пакеты, формы, процессы и т. Д. Это может помочь объяснить, почему некоторые организации используют его и почему не для всех.

15
ответ дан 28 November 2019 в 22:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: