Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
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 ");
}
}
}
Меньше служебное (никакой конверт SOAP для обертывания каждого призывать)
Меньшему количеству дублирования (HTTP уже представляет операции, нравится, УДАЛЯЮТ, ПОМЕЩАЮТ, ДОБИРАЮТСЯ, и т.д. которые должны иначе быть представлены в конверте SOAP).
Более стандартизированный - операции HTTP хорошо поняты и последовательно работают. Некоторые реализации SOAP могут стать привередливыми.
более человекочитаемый и тестируемый (тяжелее для тестирования SOAP только с браузером).
не должны использовать XML (хорошо, Вы отчасти не имеете к для SOAP ни один, но это едва имеет смысл, так как Вы уже делаете парсинг конверта).
Библиотеки сделали SOAP (довольно) легким. Но Вы абстрагируете далеко большое дублирование внизу, как я отметил. да в теории SOAP может пробежаться через другие транспорты, чтобы не ехать на слое, делающем подобные вещи, но в действительности примерно вся работа SOAP, которую Вы будете когда-либо делать, по HTTP.
УСПОКОИТЕЛЬНЫЙ сервисы намного более просты использовать, чем , SOAP основывал (регулярные) сервисы. Причина этого состоит в том, что REST основан на нормальных Запросах HTTP, который позволяет намерению быть выведенным из типа выполненного запроса (ПОЛУЧИТЕ = retrive, POST = запись, УДАЛИТЕ =, удаляют, и т.д....), и является абсолютно не сохраняющим состояние. С другой стороны, Вы могли утверждать, что это менее гибко, поскольку это покончило с понятием конверта сообщения, который содержит контекст запроса.
, По моему опыту, SOAP был предпочтен для сервисов в предприятии, и REST был предпочтен для сервисов, которые представлены как общедоступные API.
инструменты With как WCF в платформе.NET это очень тривиально для реализации сервиса как REST или SOAP.
Некоторое соответствующее чтение:
Я предположу, что при высказывании "веб-сервисов" Вы имеете в виду SOAP и WS -* набор стандартов. (Иначе я мог утверждать, что сервисы REST "веб-сервисы".)
канонический аргумент - то, что сервисы REST являются более близким соответствием к дизайну сети - то есть, дизайну HTTP и связанной инфраструктуры. Таким образом использование сервиса REST будет более совместимо с существующими веб-инструментами и методами.
, Конечно, как только Вы развертываете в специфические особенности, Вы узнаете, что оба подхода имеют преимущества в различных сценариях. Это - те специфические особенности, которыми Вы интересуетесь?
REST является агностиком реализации и намного более прозрачный, и это делает его большим для общедоступных API, специально для больших веб-сайтов как Flickr, Amazon или Digg, которые используют их API в качестве маркетинга инструментов и действительно хотят, чтобы люди использовали свои данные. Они не делают , хотят быть содержащими руку 1000-ми разработчиков новичка, которые пытаются отладить их язык сценариев ошибочной библиотеки SOAP выбора.
По сравнению с SOAP и WSDL, которые лучше для внутренних приложений, где у Вас есть общедоступные библиотеки и известные clueful люди на обоих концах. (И Вы, возможно, не должны заботиться о вещах как выравнивание нагрузки интернет-масштаба, HTTP, кэширующийся и т.д.), Тогда, Вы получаете API, которые самодокументируются, сохраняют типы и т.д. с нулевой работой.
Добрался для чтения Roy Fielding, самого превосходного диссертация по теме. Он делает превосходный случай и был определенно ПУТЬ впереди своего времени, когда он записал его (2000).
блог Steve Vinoski и его последние статьи определенно стоит просмотреть. Он - бывший гуру CORBA, который записал, вероятно, лучшую книгу по предмету с Michi Henning, "Усовершенствованный CORBAВ® Programming с C++" . Однако он с тех пор видел ошибку своих клиент-серверных путей, и теперь клянется REST.
REST позволяет Ваши операции невидоизменения (которые обычно используют ПОЛУЧИТЬ глагол) быть , кэшировался . Таким образом, кэшируемый клиентом и/или кэшируемый прокси. Это может быть огромной победой!
REST является в основном просто способом реализовать веб-сервисы. Это - просто способ использовать HTTP правильно для запросов веб-сервисов, которые Вы пытаетесь поразить.
http://www.xfront.com/REST-Web-Services.html http://en.wikipedia.org/wiki/Representational_State_Transfer
Это супер просто и тонко. Вы могли сделать это с браузером через http глагол: ДОБРАТЬСЯ. Я не имею, находят, что браузер может вручную сделать универсальный http запрос POST легко
Издержки не так важны, как хорошая архитектура.
REST - это не протокол, это архитектура, которая поощряет хороший масштабируемый дизайн. Его часто выбирают потому, что слишком большая свобода в RPC может легко привести к плохому дизайну.
Другая причина - предсказуемая стоимость протоколов RESTful по HTTP, поскольку она может использовать существующие технологии (в основном прокси). Начальная стоимость RPC довольно низкая, но она имеет тенденцию значительно увеличиваться с увеличением нагрузки.
Вот один пункт данных: Amazon предлагает свои API в форматах REST и SOAP. и 85% использования - REST.
REST проще в реализации, проще для понимания и обеспечивает более высокую производительность.