Chúng tôi phát triển một ứng dụng web ASP.Net được lưu trữ trên mạng nội bộ. Hiện tại, chúng tôi có một số trang ASPX xử lý các yêu cầu web từ phía máy khách và tương tác với các máy chủ của chúng tôi. Chúng tôi đang bắt đầu phát triển trên phiên bản ứng dụng chính tiếp theo của chúng tôi và chúng tôi đang quyết định về kiến trúc.Dịch vụ web VS. Trang Aspx: Ưu và nhược điểm
Sự khác nhau giữa việc sử dụng các trang ASPX để xử lý các yêu cầu http so với việc sử dụng Dịch vụ Web toàn diện (rất có thể là một Dịch vụ WCF)?
Khi nghiên cứu vấn đề này, tôi đã gặp một số bài đăng có liên quan hữu ích một cách vừa phải, được xem here và here. Sự hiểu biết của tôi về một số khác biệt chính như sau:
- Trang ASPX bị giới hạn trong các loại yêu cầu mà họ có thể nhận được. Họ là đúng HTTP trong khi một dịch vụ WCF có thể có nhiều thiết bị đầu cuối để phục vụ một loạt các giao thức (HTTP, TCP, vv).
- Dịch vụ WCF được xác định cụ thể hơn do ServiceContracts. Điều này có nghĩa rằng nếu một dự án làm cho một tham chiếu đến dịch vụ, họ biết chính xác những gì mong đợi về phương pháp, cách sử dụng và tài liệu. Một trang ASPX là miễn phí cho tất cả về phương pháp chứa và yêu cầu được chấp nhận.
Tuy nhiên, dựa trên các khái niệm, vấn đề của tôi như sau:
- Khả năng hỗ trợ các giao thức khác nhau là một tính năng tuyệt vời về chống và khả năng tương thích trong tương lai, nhưng những gì lợi ích thực sự chúng ta nhìn thấy nếu hiện tại chúng tôi đang chỉ sử dụng nó để tương tác qua HTTP?
- Phù hợp với đối số trước đó của tôi, nếu chúng tôi chỉ tương tác với dịch vụ trên web, có bất kỳ điểm nào trong số đó thực sự tạo ra bất kỳ sự khác biệt nào không? Yêu cầu http không quan tâm đến bất kỳ chi tiết nào tốt hơn hoặc đảm bảo hợp đồng miễn là phương thức mà nó gọi là "chỉ hoạt động".
Có điều gì tôi thiếu không? Bất kỳ lợi ích quan trọng nào khi sử dụng dịch vụ? Cá nhân, tôi hỗ trợ kiến trúc Dịch vụ Web. Tôi thích ý tưởng có một hệ thống linh hoạt và được xác định rõ ràng có thể hỗ trợ phát triển trong tương lai. Những gì tôi về cơ bản tìm cách để có được ra khỏi đây là một cách để đi đến một đồng nghiệp và nói "Đây phải là một dịch vụ cho lý do x y z và chúng tôi có thể thấy một b c cải tiến để làm như vậy".
Thats đúng. Các kỹ thuật tuần tự hóa của WCF được cho là thực hiện nhanh hơn dịch vụ web asmx, đúng không? – yourbuddypal
Meh. Có lẽ một chút, nhưng tôi nghi ngờ các nút cổ chai hiệu suất của bất kỳ webservice sẽ là sự lựa chọn để sử dụng asmx hơn là WCF. Các hình phạt về hiệu năng trong kiến trúc dịch vụ web hầu như luôn là do các giao diện trò chuyện và/hoặc các đồ vật/đối tượng rất lớn. Thực tế, bạn đang thực hiện một cuộc gọi từ xa đến một webservice làm cho sự khác biệt về tốc độ của WCF so với asmx không đáng kể trong hầu hết các trường hợp. WCF là linh hoạt hơn trong thiết kế, đó là một lý do hợp lệ để chọn nó. –
Re: serializers, DataContractJsonSerializer của WCF thực sự kém linh hoạt hơn JavaScriptSerializer của ASMX theo mặc định. JSS sẽ chấp nhận ngày tháng và enums như chuỗi, nhưng DCJS sẽ không.Đó là đặc biệt tẻ nhạt/phiền hà khi nói đến những ngày tháng. –