Ограничения подключения WCF

У нас есть служба WCF net.tcp на сайте с высоким трафиком. http://www.artedelcorpo.com/

Некоторое время он работает очень хорошо, затем останавливается и возвращает ошибку тайм-аута. При перезапуске IIS он запускается снова.

Почему? Существует ли ограничение на подключения?

-121--1751216-

Дельта-кодировка для объектов JSON Существует ли стандартная библиотека или средство для вычисления и применения различий к документам JSON? В основном у меня куча больших документов, которые я хочу синхронизировать по сети,...

Существует ли стандартная библиотека или инструмент для вычисления и применения различий к документам JSON? В основном у меня есть куча больших документов, которые я хочу синхронизировать по сети, и я бы предпочел избежать необходимости пересылать все их состояние каждый раз, когда я хочу синхронизировать их (так как многие из этих переменных не будут меняться). Другими словами, я хочу передать только те поля, которые изменились, а не повторно передать весь объект. Я думаю, что было бы удобно иметь что-то вроде следующего набора методов:

//Start with two distinct objects on the server
// prev represents a copy of the state of the object on the client
// next represents a copy of the state of the object on the server
//
//1. Compute a patch
patch = computePatch(prev, next);

//2. Send patch over the network

//3. Apply the patch on the client
applyPatch(prev, patch);

//Final invariant:
//   prev represents an equivalent object to JSON.parse(JSON.stringify(next))

я, конечно, мог бы реализовать один сам, но есть довольно много краевых случаев, которые нужно рассмотреть. Вот некоторые из простых (хотя и несколько неудовлетворительных) методов, о которых я могу думать, например:

  1. Roll my own JSON patcher. Асимптотически, это, вероятно, лучший способ, так как можно было бы поддерживать все соответствующие особенности документов JSON, наряду с поддержкой некоторых специализированных методов для выполнения таких вещей, как различия, двойки и последовательности (используя относительное кодирование/редактировать расстояние). Тем не менее, у JSON есть много особых случаев, и я немного склонен пытаться сделать это без большого тестирования, и поэтому я бы предпочел найти что-то, что уже решает эту проблему для меня, чтобы я мог доверять ей, и не стоит беспокоиться о появлении сетевых Heisenbugs из-за ошибок в моем JSON-исправлении

  2. Просто рассчитайте расстояние редактирования непосредственно между последовательностями JSON с помощью динамического программирования. К сожалению, это не работает, если клиент и сервер имеют разные реализации JSON (то есть порядок их полей может быть сериализован по-разному), и это также довольно дорого, поскольку квадратичная операция времени.

  3. Используйте буферы протокола. Буферы протокола имеют встроенный метод diff, который делает именно то, что я хочу, и они хороший двоичный сериализуемый сетевой дружественный формат. К сожалению, поскольку они также строго набраны, им не хватает многих преимуществ использования JSON, таких как возможность динамического добавления и удаления полей. Прямо сейчас это подход, к которому я сейчас склоняюсь, но это может сделать будущее обслуживание действительно ужасным, так как мне нужно будет постоянно обновлять каждый из моих объектов.

  4. Сделайте что-то действительно противное, как сделать пользовательский протокол для каждого типа объекта, и надеюсь, что я получу его правильно в обоих местах (да, правильно!).

Конечно, я на самом деле надеюсь, что кто-то здесь на stackoverflow пройти и сохранить день со ссылкой на пространственно эффективный javascript объект отличается/патчер, который был хорошо протестирован в производственных средах и в нескольких браузерах.

* Обновление *

Я начал писать свой собственный патчер, его ранняя версия доступна по адресу github:

https://github.com/mikolalysenko/patcher.js

Я предполагаю, что поскольку здесь, кажется, не так много, я вместо этого приму в качестве альтернативного ответа список интересных тестовых примеров для патчера JSON.

37
задан Mikola 8 September 2011 в 08:35
поделиться