У меня есть два отдельных приложения - одно клиент (в C#), один сервер (в C++). Они должны обмениваться данными в форме "структур" и ~ приблизительно 1 МБ данных, которые минута отправляется от сервера до клиента.
Что лучше для использования - XML или мой собственный Двоичный формат?
С XML:
С двоичным файлом:
Какие-либо указатели? Разве я не должен рассматривать двоичный файл вообще?? Немного перепутанный, о какой подход взять.
В этом случае нет необходимости вызывать release
. Поскольку используется удобный конструктор, возвращаемый объект является автоматически освобожденным объектом.
При использовании формы размещения/ввода пользователь несет ответственность за деблокирование объекта.
Как вы заявили, XML (немного) медленнее, но гораздо более гибко и надежно. Я бы пошел с XML, пока не будет доказана проблема с производительностью.
В качестве альтернативы также следует использовать ProtoBuff .
После обновления любые требования к кросс-языковым, кросс-платформенным и кросс-версиям сильно отличаются от двоичного форматирования.
-121--4690759-1MB данных в минуту довольно мала, если у вас есть разумное сетевое соединение.
Существуют другие варианты между двоичным и XML - другие форматы сериализации текста, читаемые человеком, такие как JSON.
Когда дело доходит до двоичного, у вас нет проблем с управлением версиями - технологии, такие как протокольные буферы (я предвзят: я работаю на Google и я портировал PB на C # ) явно разработаны с обратной и прямой совместимостью в виду. Существуют и другие двоичные форматы, например Thrift .
Если вы беспокоитесь о производительности, вам следует измерить ее. Я почти уверен, что мой телефон может проанализировать 1MB XML достаточно быстро, чтобы это не было проблемой в данном случае... в основном проработать, что вас больше всего волнует, с точки зрения:
Это все балансирующее действие - но именно вы должны решить, какой вес придать каждому из этих факторов.
Если у вас есть .NET приложения с обоих концов, используйте Windows Communication Foundation . Это позволит вам отложить принятие решения до момента установки, поскольку поддерживает как двоичную, так и XML сериализацию.
Хорошая точка для XML была бы совместимостью. У вас есть другие клиенты, которые также получают доступ к вашему серверу?
Прежде чем использовать свой собственный двоичный формат или REGEX на XML ... Вы считаете пространство имен сериализации в .NET? Существуют двоичные формы, мыльные формы и существует также XMLSerization.
Другое преимущество XML заключается в том, что вы можете продлить данные, которые вы отправляете, добавив элемент, вы не должны изменить код получателя, чтобы справиться с дополнительными данными, пока вы не будете готовы.
Также даже минимальное (быстрое) сжатие XML может драматическое снизить нагрузку на проволоку.
text/xml
binary
Обе формы расширяемы и могут быть обновлены до более новых версий при условии, что вы вставляете поле типа и версии в начале дейтаграммы.
Можно выполнить команду TF.exe status, чтобы получить список файлов, извлеченных из конкретного проекта. также можно выполнять поиск по имени пользователя..
здесь приведена ссылка для получения дополнительной информации.
http://patelshailesh.com/index.php/how-to-get-the-list-of-currently-checked-out-files-in-tfs
Надеюсь, что это поможет
-121--4246258-Получите средства управления питанием TFS - они интегрируются в представление командного обозревателя. Вы получите список людей в команде. Можно щелкнуть правой кнопкой мыши участников коллектива и просмотреть их текущие наборы изменений.
Вы можете ознакомиться с TFS Power Tools на сайте Майкрософт здесь - в октябрьском выпуске 2008 есть функциональность Team Членов.
-121--4246255-Также можно использовать Буферы протокола Google , которые являются компактным двоичным представлением для структурированных данных.
Существует много устаревших примеров удаления с помощью поля идентификатора. Приведенный ниже код будет работать с Lucene.NET 2.4.
Нет необходимости открывать IndexReader, если вы уже используете IndexWriter или для доступа к IndexSearcher.Reader. Вы можете использовать IndexWriter. DeleteDocuments (Термин), но хитрая часть удостоверяется, что вы сохранили свое идентификационное поле правильно во-первых. При сохранении документа убедитесь, что Field.Index.NOT_ANALYZED используется в качестве настройки индекса в поле идентификатора. Это индексирует поле без токенизации, что очень важно, и ни одно из других значений Field.Index не будет работать при использовании таким образом:
IndexWriter writer = new IndexWriter("\MyIndexFolder", new StandardAnalyzer());
var doc = new Document();
var idField = new Field("id", "MyItemId", Field.Store.YES, Field.Index.NOT_ANALYZED);
doc.Add(idField);
writer.AddDocument(doc);
writer.Commit();
Теперь вы можете легко удалить или обновить документ с помощью того же самого устройства записи:
Term idTerm = new Term("id", "MyItemId");
writer.DeleteDocuments(idTerm);
writer.Commit();
-121--2878694- После работы над несколькими проектами миграции, первое, что нужно сделать, это понять, каковы ваши цели миграции. Они могут значительно отличаться от организации к организации, но помогают установить приоритеты во время фактического проекта миграции. Это также помогает лучше оценивать преимущества с учетом рисков и затрат.
Как и другие, важно понимать, что процесс миграции автоматически не улучшит качество кода. Так что если ваша главная цель состоит в рефакторе (и ничего другого), то вы должны знать, что может пройти недели или месяцы, прежде чем у вас будет функционально эквивалентный код (в зависимости от размера кода и сложности миграции).
При этом, .NET действительно имеет некоторые очень хорошие инструменты для рефакторинга и анализа кода, в дополнение к номерам люкс модульных тестов. Автоматические средства преобразования, такие как Visual Basic Upgrade Companion компании ArtinSoft, можно настроить для применения стандартов кодирования или значительного улучшения кода во время преобразования. Это сочетание с другими инструментами модификации кода, такими как ReSharper , значительно ускорит переход на .NET.
По моему опыту, проект миграции - это управляемый проект, если вы знаете, что в нем задействованы усилия вручную. Коммерческие инструменты имеют режимы оценки, которые могут помочь количественно оценить усилия по миграции и дать вам представление о том, с какими проблемами вы можете столкнуться при миграции.
Если вы предпочитаете решение с низким риском и затратами, я бы придерживался рефакторинга кода с прицелом на возможную миграцию. У меня были клиенты, для которых этот подход работал. Так что, когда пришло время перенести их код, некоторые вещи уже были решены.
В основном все новые настраиваемые элементы управления должны быть записаны в .NET и представлены в виде элементов ActiveX для использования приложением VB6. Аналогично, новые функции DLL должны быть помещены в сборки .NET, которые могут использоваться через COM. Таким образом, когда наступит время миграции, вам не придется беспокоиться об этих элементах управления или библиотеках.
-121--1555327-вы не сказали, если они находятся на одной машине или нет. Я предполагаю, что нет.
В этом случае, то есть еще один минус бинарного. Вы не можете просто сбросить структуры на провод, у вас может быть эндианнесса и sizeof проблемы.
XML очень многословен,YAML или JSON намного меньше
Не забывайте, что большинство людей воспринимают XML как XML, сериализованный как текст. Вместо этого он может быть сериализован в двоичный. Это то, что делает netTcpBinding
и другие подобные привязки в WCF. Информационный набор XML выводится как двоичный, а не как текст. Это все еще XML, только в двоичном формате.
Как вы сказали, XML (немного) медленнее, но гораздо более гибкий и надежный. Я бы выбрал XML, пока не возникнет доказанная проблема с производительностью.
Вы также должны взглянуть на ProtoBuff в качестве альтернативы.
И после вашего обновления любые межъязыковые, кроссплатформенные и кросс-версии требования строго указывают на отказ от двоичного форматирования.