Почему можно было бы использовать REST вместо основанных на SOAP сервисов? [закрытый]

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

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

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
152
задан tugberk 10 August 2014 в 20:56
поделиться

11 ответов

Меньше служебное (никакой конверт SOAP для обертывания каждого призывать)

Меньшему количеству дублирования (HTTP уже представляет операции, нравится, УДАЛЯЮТ, ПОМЕЩАЮТ, ДОБИРАЮТСЯ, и т.д. которые должны иначе быть представлены в конверте SOAP).

Более стандартизированный - операции HTTP хорошо поняты и последовательно работают. Некоторые реализации SOAP могут стать привередливыми.

более человекочитаемый и тестируемый (тяжелее для тестирования SOAP только с браузером).

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

Библиотеки сделали SOAP (довольно) легким. Но Вы абстрагируете далеко большое дублирование внизу, как я отметил. да в теории SOAP может пробежаться через другие транспорты, чтобы не ехать на слое, делающем подобные вещи, но в действительности примерно вся работа SOAP, которую Вы будете когда-либо делать, по HTTP.

159
ответ дан Kendall Helmstetter Gelner 23 November 2019 в 22:11
поделиться

УСПОКОИТЕЛЬНЫЙ сервисы намного более просты использовать, чем , SOAP основывал (регулярные) сервисы. Причина этого состоит в том, что REST основан на нормальных Запросах HTTP, который позволяет намерению быть выведенным из типа выполненного запроса (ПОЛУЧИТЕ = retrive, POST = запись, УДАЛИТЕ =, удаляют, и т.д....), и является абсолютно не сохраняющим состояние. С другой стороны, Вы могли утверждать, что это менее гибко, поскольку это покончило с понятием конверта сообщения, который содержит контекст запроса.

, По моему опыту, SOAP был предпочтен для сервисов в предприятии, и REST был предпочтен для сервисов, которые представлены как общедоступные API.

инструменты With как WCF в платформе.NET это очень тривиально для реализации сервиса как REST или SOAP.

Некоторое соответствующее чтение:

36
ответ дан Грозный 23 November 2019 в 22:11
поделиться

Я предположу, что при высказывании "веб-сервисов" Вы имеете в виду SOAP и WS -* набор стандартов. (Иначе я мог утверждать, что сервисы REST "веб-сервисы".)

канонический аргумент - то, что сервисы REST являются более близким соответствием к дизайну сети - то есть, дизайну HTTP и связанной инфраструктуры. Таким образом использование сервиса REST будет более совместимо с существующими веб-инструментами и методами.

, Конечно, как только Вы развертываете в специфические особенности, Вы узнаете, что оба подхода имеют преимущества в различных сценариях. Это - те специфические особенности, которыми Вы интересуетесь?

13
ответ дан Bruce 23 November 2019 в 22:11
поделиться

REST является агностиком реализации и намного более прозрачный, и это делает его большим для общедоступных API, специально для больших веб-сайтов как Flickr, Amazon или Digg, которые используют их API в качестве маркетинга инструментов и действительно хотят, чтобы люди использовали свои данные. Они не делают , хотят быть содержащими руку 1000-ми разработчиков новичка, которые пытаются отладить их язык сценариев ошибочной библиотеки SOAP выбора.

По сравнению с SOAP и WSDL, которые лучше для внутренних приложений, где у Вас есть общедоступные библиотеки и известные clueful люди на обоих концах. (И Вы, возможно, не должны заботиться о вещах как выравнивание нагрузки интернет-масштаба, HTTP, кэширующийся и т.д.), Тогда, Вы получаете API, которые самодокументируются, сохраняют типы и т.д. с нулевой работой.

7
ответ дан joelhardi 23 November 2019 в 22:11
поделиться

Добрался для чтения Roy Fielding, самого превосходного диссертация по теме. Он делает превосходный случай и был определенно ПУТЬ впереди своего времени, когда он записал его (2000).

7
ответ дан Peter Mortensen 23 November 2019 в 22:11
поделиться

блог Steve Vinoski и его последние статьи определенно стоит просмотреть. Он - бывший гуру CORBA, который записал, вероятно, лучшую книгу по предмету с Michi Henning, "Усовершенствованный CORBAВ® Programming с C++" . Однако он с тех пор видел ошибку своих клиент-серверных путей, и теперь клянется REST.

6
ответ дан Jason Etheridge 23 November 2019 в 22:11
поделиться

REST позволяет Ваши операции невидоизменения (которые обычно используют ПОЛУЧИТЬ глагол) быть , кэшировался . Таким образом, кэшируемый клиентом и/или кэшируемый прокси. Это может быть огромной победой!

5
ответ дан David 23 November 2019 в 22:11
поделиться

REST является в основном просто способом реализовать веб-сервисы. Это - просто способ использовать HTTP правильно для запросов веб-сервисов, которые Вы пытаетесь поразить.

http://www.xfront.com/REST-Web-Services.html http://en.wikipedia.org/wiki/Representational_State_Transfer

3
ответ дан Eric Holscher 23 November 2019 в 22:11
поделиться

Это супер просто и тонко. Вы могли сделать это с браузером через http глагол: ДОБРАТЬСЯ. Я не имею, находят, что браузер может вручную сделать универсальный http запрос POST легко

0
ответ дан Ray Lu 23 November 2019 в 22:11
поделиться

Издержки не так важны, как хорошая архитектура.

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

Другая причина - предсказуемая стоимость протоколов RESTful по HTTP, поскольку она может использовать существующие технологии (в основном прокси). Начальная стоимость RPC довольно низкая, но она имеет тенденцию значительно увеличиваться с увеличением нагрузки.

10
ответ дан 23 November 2019 в 22:11
поделиться

Вот один пункт данных: Amazon предлагает свои API в форматах REST и SOAP. и 85% использования - REST.

REST проще в реализации, проще для понимания и обеспечивает более высокую производительность.

0
ответ дан 23 November 2019 в 22:11
поделиться
Другие вопросы по тегам:

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