Вы пытаетесь создать приложение в реальном времени, такое как чат и визуализация в реальном времени. Чтобы добиться этого, я предлагаю вам написать с NodeJs SOCKET.IO
. Если вы используете PHP, это сделает ваш сервер более загруженным, чем программы JavaScript, такие как socket.io.
Ваш вопрос: Он работает нормально, но я не знаю, есть ли лучшее решение вместо использования СЕССИЙ и интервальной функции?
Ответ: Определенно это плохая практика, которая запускает сервер каждые секунды, даже если нет новых обновлений. Предположим, у вас есть 100 пользователей одновременно, поэтому ваш сервер будет вызываться 100 раз в секунду, что на самом деле больше нагрузки на сервер.
Вызов a.Equals (b)
возвращает false
, поскольку a и b не являются одинаковыми объектами (хотя они, конечно, являются идентичными перечислениями ). Метод Equals
, если он не переопределен, автоматически сравнивает объекты по их ссылке, что и происходит в этом случае.
Assert.AreNotEqual
немного умнее, чем этот. Он разработан для целей отладки, в отличие от метода Equals
, поэтому фактически сравнивает последовательности, полученные в результате двух перечислений, поскольку он распознает IEnumerable
как специальный тип. Вы также должны заметить, что это делает другие интересные вещи, такие как возвращение true
, когда два параметра численно идентичны, но имеют разные типы значений (например,
Я не смотрел исходный код NUnit, чтобы увидеть, как ребята из NUnit закодировали AreNotEqual , Тем не менее, я могу рассказать вам, как это делается для MbUnit с таким же поведением.
Сначала в AssertNotEqual (a, b) проверяет, равны ли ссылки, выполняя такой код:
if (Object.ReferenceEquals(left, right))
return true;
В вашем случае это не удастся. Затем он проверяет, являются ли объекты типом IEnumerable. Если они есть, выполните итерацию по ним и сравните, если элементы одинаковы и в том же порядке.
Однако в T тип в IEnumerable более сложен, чем строка, или ValueType в MbUnit AssertNotEqaual (a, b) не завершится ошибкой.
var a = (IEnumerable<StringBuilder>)(new[] { new StringBuilder("one"), new StringBuilder("two") });
var b = (IEnumerable<StringBuilder>)(new[] { new StringBuilder("one"), new StringBuilder("two") });
Assert.IsFalse(a.Equals(b)); // Success
Assert.AreNotEqual(a, b); // Success