2010-04-06 31 views
12

Hãy tưởng tượng một ứng dụng CRUD phức tạp hơn có kiến ​​trúc ba tầng và giao tiếp qua các dịch vụ web. Khách hàng bắt đầu một cuộc trò chuyện với máy chủ và thực hiện một số thuật sĩ như công cụ. Để xử lý trình hướng dẫn, máy khách cần phản hồi do máy chủ cung cấp.Các dịch vụ web trạng thái không quốc tịch


Chúng tôi đã bắt đầu thảo luận về các dịch vụ web trạng thái hoặc không trạng thái cho phương pháp này. Tôi đã thực hiện một số nghiên cứu kết hợp với kinh nghiệm của riêng tôi, điều này chỉ cho tôi câu hỏi được đề cập sau đó.

webservices không quốc tịch có các thuộc tính sau (trong trường hợp của chúng tôi):

+ high scalability 
+ high availability 
+ high speed 
+ rapid testing 
- bloated contract 
- implementing more logic on server-side 

Nhưng chúng ta có thể gạch bỏ hai điểm đầu tiên, ứng dụng của chúng tôi không cần khả năng mở rộng cao và tính sẵn sàng.

Vì vậy, chúng tôi truy cập vào dịch vụ web trạng thái. Tôi đã đọc một loạt các blog và bài đăng trên diễn đàn và điểm phát minh nhất thực hiện một webservice trạng thái là:

+ simplifies contract (protocol) 
- bad testing 
- runs counter to the basic architecture of http 

Nhưng hầu như tất cả các ứng dụng web đều có những điểm xấu này? Ứng dụng web sử dụng cookie, chuỗi truy vấn, id phiên và tất cả nội dung để tránh trạng thái phi trạng thái của http.

Vậy tại sao điều đó lại xấu đối với dịch vụ web?

+1

Khá gần với quảng cáo: http://stackoverflow.com/questions/988819/stateful-webservice – gregmac

+3

Đặt trạng thái vào vị trí có thể dễ dàng xử lý trạng thái: cơ sở dữ liệu –

Trả lời

9

Vì việc giữ trạng thái trong một dịch vụ web rất khó và nếu bạn không phải là cực kỳ cẩn thận và/hoặc có kinh nghiệm sớm hay muộn bạn có thể gặp một số lỗi rất khó tìm.

+0

Vâng, điều đó tùy thuộc vào nền tảng. Rất nhiều lần container sẽ chăm sóc phiên cho bạn. –

+1

Tại sao không chỉ đơn giản là sử dụng một container được thiết kế cho mục đích này như một RDMS. –

+0

Tôi không chắc mình hiểu. Nếu bạn đặt công cụ vào RDMS, về cơ bản nó có nghĩa là lăn các phiên của riêng bạn mà có thể sẽ hoạt động tồi tệ hơn. Nó không có vẻ như anh ta cần thông tin liên tục trong phiên, vậy tại sao lại đặt nó ở đó? –

1

Tôi đã có may mắn hợp lý với các dịch vụ web trạng thái. Họ cảm thấy hơi bẩn vì điều cookie phiên lỗ trên đầu trang của HTTP là; nhưng mặt khác, họ là SOAP, vì vậy nó sẽ là loại ngu ngốc để có được quá khó chịu về vẻ đẹp tại thời điểm đó.

Một điều cần lưu ý là khả năng tương tác: nếu bạn đang làm dịch vụ web nhà nước, khách hàng của bạn sẽ phải hỗ trợ cùng một ý tưởng về trạng thái bạn làm (thường là cookie). Nhưng một lần nữa - làm việc tốt cho tôi.

P.S. Tôi cho rằng bạn đang ở trong một container sẽ chăm sóc theo dõi các phiên cho bạn.

2

Bang cũng là nơi mà hầu hết các lỗi đều ẩn.

Các vấn đề liên quan