Когда веб-сервис не должен использоваться?

Я думаю, что это связано с тем, что, когда сравнение «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, потому что интерпретатор не использовал тот же объект, что и я, один ', если бы я сделал это, это сделало бы их одним и тем же объектом.

33
задан DOK 20 October 2008 в 22:54
поделиться

7 ответов

Веб-сервисы являются абсолютно ужасным выбором для доступа к данным. Это - тонна издержек и сложности почти для нулевого преимущества.

, Если Ваше приложение собирается работать на одной машине, почему отклоняют его способность сделать незавершенные вызовы доступа к данным? Я не говорю о прямом доступе к базе данных от Вашего кода 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

веб-сервисы ради веб-сервисов безответственное программирование.

34
ответ дан 27 November 2019 в 18:04
поделиться

Если Вы просто кодируете крошечное (меньше чем 50 пользователей) веб-приложение для Вашей интранет, веб-сервис кажется излишеством. Особенно, если его первичная функция (обеспечение единственной точки доступа ко многим сервисам) не будет использоваться.

5
ответ дан 27 November 2019 в 18:04
поделиться

Я соглашаюсь, что использование веб-сервиса в мелкомасштабном веб-приложении добавляет слой сложности, которая не кажется выровненной по ширине. Большинство моих решений, Интернет и интранет, 10-50 пользователей, не использует веб-сервисы. Я - довольное чувство других то же... Я думал, что был единственным.

3
ответ дан 27 November 2019 в 18:04
поделиться

Для небольшого веб-приложения (Необходимо задать вопрос, "Это будет всегда оставаться мелким масштабом?" хотя), использующий веб-сервисы, отдельные бизнес-слои, слои данных, и т. д. и т. п. могут быть излишеством.

, Прежде чем любой будет стрелять в меня, я действительно соглашаюсь, что разделение логики между слоями наряду с модульными тестами, непрерывной интеграцией, и др. является чертовски блестящим. В моей текущей роли я был бы крайне потерян и качающийся в углу без них. Однако для очень небольшого веб-приложения, привыкшего к, например, контактные номера дорожки и адреса для компании 36 сотрудников, анализ рентабельности предположил бы, что все упомянутые выше "тонкости" будут излишеством.

Однако... Не забудьте задавать вопрос, "Это будет всегда оставаться мелким масштабом?":-)

2
ответ дан 27 November 2019 в 18:04
поделиться

Nick Harrison, блестящий разработчик в Charlotte, предложил эти сценарии, где использование веб-сервиса имеет смысл:

  • На Веб-ферме, где существует несколько веб-серверов, размещающих веб-сайт (веб-сайты), все указывающие на веб-сервис (веб-сервисы), работающий на другом веб-сервере. Это допускает распределение загрузки по нескольким серверам.
  • Клиент/сервер, где приложения форм Windows могут назвать веб-сервис.
  • Кросс-платформенный
  • Прохождение через брандмауэр
15
ответ дан 27 November 2019 в 18:04
поделиться

Просто, потому что инструмент генерирует набор тупиков, не означает, что это - хорошее использование. WS -* выделяется в сценариях, где Вы представляете сервисы к третьим сторонам. Это означает, что каждая операция должна быть на гранулярности бизнес-процесса в противоположность доступу к данным.

множество стандартов может использоваться для описания различных фасетов контракта в мельчайших подробностях, и (гипотетический) полностью совместимый стек WS может устранить много боли от сторонних разработчиков и даже позволить легендарную точку и нажать интеграцию a'la Каналы Yahoo. Со средствами управления надлежащим управлением можно развить открытый интерфейс и управлять обратной совместимостью по мере необходимости.

Все это почти невозможно, чтобы быть сгенерированным автоматически. Тупиковый генератор C# знает только физический интерфейс Вашего класса, но не имеет никакой идеи о семантике включенной. См. данная статья для более детального обсуждения.

при создании веб-сайта, затем создайте веб-сайт. Если Вы хотите асинхронную передачу сообщений в своем приложении, используйте MSMQ. Если Вы хотите представить данные внутренним клиентам, используйте POX. При необходимости в эффективном формате двоичного сообщения проверьте Google Буферы Протокола или если Вам нужна проверка RPC Гессиан для C# или DCOM.

веб-сервисы являются крупномодульным решением для интеграции. Они тверды, они медленнее, чем альтернативы, они прилагают слишком много усилий для преуспевания (и если не преуспевший рядом с бессмысленным).

Для суммирования: "Когда должен веб-сервис не использоваться?" - каждый раз, когда можно уйти без него

6
ответ дан 27 November 2019 в 18:04
поделиться

Я думаю, что для небольшого веб-приложения использование веб-сервисов часто является хорошей идеей, вы можете использовать его, чтобы легко отделить веб-сервер с уровня данных. С требованиями прямой разработки и отличным инструментарием я не вижу проблемы.

Однако не используют веб-службы в следующих сценариях:

  • Когда вы должны использовать Http в качестве транспорта и Xml-сериализации ваших данных, и вам нужно много разных битов данных, синхронно и часто. Будь то REST, SOAP или WS- *, вы столкнетесь с проблемами производительности. Чем больше вызовов вы сделаете, тем медленнее будет работать ваша система. Если вам нужны блоки данных среднего размера реже, асинхронно и вы можете использовать прямой TcpIp (например, Wcf netTcpBinding), вам будет лучше.
  • Если вам нужно запрашивать и объединять данные из вашего веб-сервиса с другими источниками данных, скорее мотивирует к созданию хранилища данных, которое может быть заполнено должным образом консолидированными и рационализированными данными со всего предприятия

Это мой опыт, надеюсь, он поможет.

Чем больше вызовов вы сделаете, тем медленнее будет работать ваша система. Если вам нужны блоки данных среднего размера реже, асинхронно и вы можете использовать прямой TcpIp (например, Wcf netTcpBinding), вам будет лучше.
  • Если вам нужно запрашивать и объединять данные из вашего веб-сервиса с другими источниками данных, скорее мотивирует к созданию хранилища данных, которое может быть заполнено должным образом консолидированными и рационализированными данными со всего предприятия
  • Это мой опыт, надеюсь, он поможет.

    Чем больше вызовов вы сделаете, тем медленнее будет работать ваша система. Если вам нужны блоки данных среднего размера реже, асинхронно и вы можете использовать прямой TcpIp (например, Wcf netTcpBinding), вам будет лучше.
  • Если вам нужно запрашивать и объединять данные из вашего веб-сервиса с другими источниками данных, скорее мотивирует к созданию хранилища данных, которое может быть заполнено должным образом консолидированными и рационализированными данными со всего предприятия
  • Это мой опыт, надеюсь, он поможет.

    3
    ответ дан 27 November 2019 в 18:04
    поделиться
    Другие вопросы по тегам:

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