Я думаю, что это связано с тем, что, когда сравнение «is» оценивается как false, используются два разных объекта. Если он оценивает значение true, это означает, что внутри он использует один и тот же точный объект, а не создает новый, возможно, потому, что вы создали их за долю в 2 или около того секунд и потому, что между ним нет большого промежутка времени и использует тот же объект.
Вот почему вы должны использовать оператор равенства ==
, а не is
, чтобы сравнить значение строкового объекта.
>>> s = 'one'
>>> s2 = 'two'
>>> s is s2
False
>>> s2 = s2.replace('two', 'one')
>>> s2
'one'
>>> s2 is s
False
>>>
В этом примере я сделал s2, который был другим строковым объектом, ранее равным «одному», но это не тот же объект, что и s
, потому что интерпретатор не использовал тот же объект, что и я, один ', если бы я сделал это, это сделало бы их одним и тем же объектом.
Веб-сервисы являются абсолютно ужасным выбором для доступа к данным. Это - тонна издержек и сложности почти для нулевого преимущества.
, Если Ваше приложение собирается работать на одной машине, почему отклоняют его способность сделать незавершенные вызовы доступа к данным? Я не говорю о прямом доступе к базе данных от Вашего кода UI, я говорю об абстракции Ваших репозиториев далеко, но все еще включая их блоки на Вашем рабочем веб-сайте.
существуют случаи, где я рекомендовал бы веб-сервисы (и я предполагаю, что Вы имеете в виду SOAP), но это главным образом для совместимости.
гранулярность сервисов также рассматриваема здесь. Сервис в смысле SOA будет инкапсулировать операцию или бизнес-процесс. Методы доступа к данным являются только частью того процесса.
, Другими словами:
- someService.SaveOrder(order); // <-- bad
// some other code for shipping, charging, emailing, etc
- someService.FulfillOrder(order); //<-- better
//the service encapsulates the entire process
веб-сервисы ради веб-сервисов безответственное программирование.
Если Вы просто кодируете крошечное (меньше чем 50 пользователей) веб-приложение для Вашей интранет, веб-сервис кажется излишеством. Особенно, если его первичная функция (обеспечение единственной точки доступа ко многим сервисам) не будет использоваться.
Я соглашаюсь, что использование веб-сервиса в мелкомасштабном веб-приложении добавляет слой сложности, которая не кажется выровненной по ширине. Большинство моих решений, Интернет и интранет, 10-50 пользователей, не использует веб-сервисы. Я - довольное чувство других то же... Я думал, что был единственным.
Для небольшого веб-приложения (Необходимо задать вопрос, "Это будет всегда оставаться мелким масштабом?" хотя), использующий веб-сервисы, отдельные бизнес-слои, слои данных, и т. д. и т. п. могут быть излишеством.
, Прежде чем любой будет стрелять в меня, я действительно соглашаюсь, что разделение логики между слоями наряду с модульными тестами, непрерывной интеграцией, и др. является чертовски блестящим. В моей текущей роли я был бы крайне потерян и качающийся в углу без них. Однако для очень небольшого веб-приложения, привыкшего к, например, контактные номера дорожки и адреса для компании 36 сотрудников, анализ рентабельности предположил бы, что все упомянутые выше "тонкости" будут излишеством.
Однако... Не забудьте задавать вопрос, "Это будет всегда оставаться мелким масштабом?":-)
Nick Harrison, блестящий разработчик в Charlotte, предложил эти сценарии, где использование веб-сервиса имеет смысл:
Просто, потому что инструмент генерирует набор тупиков, не означает, что это - хорошее использование. WS -* выделяется в сценариях, где Вы представляете сервисы к третьим сторонам. Это означает, что каждая операция должна быть на гранулярности бизнес-процесса в противоположность доступу к данным.
множество стандартов может использоваться для описания различных фасетов контракта в мельчайших подробностях, и (гипотетический) полностью совместимый стек WS может устранить много боли от сторонних разработчиков и даже позволить легендарную точку и нажать интеграцию a'la Каналы Yahoo. Со средствами управления надлежащим управлением можно развить открытый интерфейс и управлять обратной совместимостью по мере необходимости.
Все это почти невозможно, чтобы быть сгенерированным автоматически. Тупиковый генератор C# знает только физический интерфейс Вашего класса, но не имеет никакой идеи о семантике включенной. См. данная статья для более детального обсуждения.
при создании веб-сайта, затем создайте веб-сайт. Если Вы хотите асинхронную передачу сообщений в своем приложении, используйте MSMQ. Если Вы хотите представить данные внутренним клиентам, используйте POX. При необходимости в эффективном формате двоичного сообщения проверьте Google Буферы Протокола или если Вам нужна проверка RPC Гессиан для C# или DCOM.
веб-сервисы являются крупномодульным решением для интеграции. Они тверды, они медленнее, чем альтернативы, они прилагают слишком много усилий для преуспевания (и если не преуспевший рядом с бессмысленным).
Для суммирования: "Когда должен веб-сервис не использоваться?" - каждый раз, когда можно уйти без него
Я думаю, что для небольшого веб-приложения использование веб-сервисов часто является хорошей идеей, вы можете использовать его, чтобы легко отделить веб-сервер с уровня данных. С требованиями прямой разработки и отличным инструментарием я не вижу проблемы.
Однако не используют веб-службы в следующих сценариях:
Это мой опыт, надеюсь, он поможет.
Чем больше вызовов вы сделаете, тем медленнее будет работать ваша система. Если вам нужны блоки данных среднего размера реже, асинхронно и вы можете использовать прямой TcpIp (например, Wcf netTcpBinding), вам будет лучше.Это мой опыт, надеюсь, он поможет.
Чем больше вызовов вы сделаете, тем медленнее будет работать ваша система. Если вам нужны блоки данных среднего размера реже, асинхронно и вы можете использовать прямой TcpIp (например, Wcf netTcpBinding), вам будет лучше.Это мой опыт, надеюсь, он поможет.