Với những lĩnh vực đó, tôi có thể đưa ra một cái nhìn tổng quan, nhưng tôi không thể đưa ra kết luận của bạn cho bạn. Có hai lĩnh vực chính mà hai giao thức khác nhau:
- Định dạng tin nhắn
- Khám phá dịch vụ
Định dạng tin nhắn là dễ hiểu nhất. Bao bì SOAP cho cả yêu cầu và phản hồi có trọng lượng khá nặng. Có phong bì SOAP chứa cả phần tiêu đề và phần thân. Tiêu đề có thể được sử dụng bởi một số bộ lọc trong chuỗi yêu cầu để thực hiện một số loại nhận dạng, ủy quyền, v.v. Tuy nhiên, XML rất tốn kém để phân tích, điều này mang lại một hình phạt nhất định đối với khả năng mở rộng của hệ thống của bạn. Bao nhiêu tùy thuộc vào lớp xử lý SOAP trong ngăn xếp của bạn.
Khám phá dịch vụ là nơi bạn có thể sẽ có sự tranh chấp nhất. REST về bản chất cung cấp các điểm cuối có thể dự đoán được và nội dung của yêu cầu là một yêu cầu HTTP đơn giản. Lợi ích là không có chi phí bổ sung và người dùng cuối có thể đoán được cách thực hiện những gì họ cần một khi họ hiểu cấu trúc URL của trang web của bạn. Tất nhiên, những người có ý thức bảo mật ngây thơ sẽ coi đó là một điểm yếu. Sau tất cả, với SOAP, bạn phải sử dụng WSDL để biết điểm cuối là gì. Tất nhiên, với SOAP, bạn đã được cung cấp toàn bộ định dạng thư để bạn có thể thực hiện các cuộc tấn công được nhắm mục tiêu nhiều hơn.
Được chia nhỏ theo danh mục bạn đã đưa ra:
Bảo vệ
Không phải là vốn đã an toàn hơn so với khác. Sử dụng các nguyên tắc bảo mật tốt:
- Mã hóa thông tin liên lạc
- Đảm bảo bạn xác thực và ủy quyền cho người dùng trước khi xử lý
- Thói quen mã hóa tốt để tránh các cuộc tấn công trực tiếp
- Và đó chỉ là danh sách ngắn.
Nhớ tối nghĩa! = Bảo mật.
Hiệu suất
Cả hiệu năng thô và khả năng mở rộng sẽ chuyển đến REST do yêu cầu theo các giao thức HTTP đơn giản. Hầu hết các ngăn xếp SOAP sử dụng phân tích SAX (phân tích dựa trên sự kiện) giúp cải thiện đáng kể khả năng mở rộng của các ngăn xếp SOAP, nhưng có tác động có thể đo lường được đối với chi phí chung. SOAP có chi phí xử lý HTTP bình thường bên cạnh chi phí phân tích cú pháp XML. REST chỉ có chi phí xử lý HTTP.
Phức tạp
Từ quan điểm của hệ thống, REST thắng. Có ít bộ phận chuyển động hơn, chuỗi yêu cầu gọn hơn, v.v. Điều đó có nghĩa là dễ dàng hơn để làm cho đáng tin cậy.
Từ quan điểm của lập trình viên, SOAP có thể giành chiến thắng nếu IDE hoặc khung bạn đang sử dụng cung cấp hỗ trợ tốt cho nó. Về cơ bản, với REST, trách nhiệm của bạn là thực hiện công việc tiền xử lý (xác thực / ủy quyền / v.v.) trong khi với SOAP, phần lớn có thể được thực hiện bằng chuỗi xử lý có thể cắm được.
Quyền của tôi
Tôi rất thoải mái với các yêu cầu HTTP và tôi biết web hoạt động như thế nào. Kết quả là, cách tiếp cận REST thích hợp hơn với tôi. Tuy nhiên, tôi biết rằng một số khách hàng của tôi không thoải mái với điều đó. Họ đã đọc một số bài báo trong ngành tố cáo tính bảo mật của REST so với SOAP, v.v. Điểm mấu chốt là không cách tiếp cận nào đảm bảo an ninh. Đó là vào bạn để đảm bảo ứng dụng được an toàn như nó cần phải có. Rõ ràng, một ứng dụng web xã hội không đòi hỏi (hoặc mong muốn) bảo mật nhiều như hệ thống ngân hàng hoặc chính phủ. Nhiều ngăn xếp SOAP bao gồm các bộ xử lý mà bạn có thể cắm vào để cung cấp một số lợi ích bảo mật, nhưng bạn vẫn có trách nhiệm tìm kiếm chúng và đặt chúng vào vị trí.