2008-09-22 20 views
7

Tôi có nên để lộ một tập dữ liệu được nhập mạnh từ một dịch vụ web và liên kết trực tiếp với khách hàng không? hoặc có cách nào hợp lý hơn cho các dịch vụ web asmx? Tôi đang thực hiện các hoạt động CRUD (Tạo, Đọc, Cập nhật, Xóa).Tôi có nên trả lại tập dữ liệu được nhập mạnh từ một dịch vụ web không?

Tôi thấy việc làm việc với bộ dữ liệu trở nên khó chịu và khó làm việc khi ví dụ khi chèn vào bảng trong ví dụ. Nó không có vẻ hợp lý để gửi toàn bộ tập dữ liệu tới và lui khi chỉ chèn một bản ghi hoặc khi chỉ nhận được một bản ghi từ một bảng cụ thể trong tập dữ liệu.

Có cách nào tốt hơn không?

Tôi có nên chuyển đổi sang các đối tượng và sử dụng các đối tượng trên webservice không? Thực hiện chuyển đổi trên khắp nơi để có được các đối tượng được truyền đi xung quanh có lẽ chỉ là tẻ nhạt?

Trả lời

4

Tùy thuộc vào các yêu cầu về khả năng tương tác của bạn. Mặc dù hoàn toàn có thể xử lý các XML của DataSet từ thực tế bất kỳ môi trường nào mà nó có thể khó sử dụng. Nếu bạn không tương tác, tôi chắc chắn khuyên bạn nên sử dụng tuyến dữ liệu đã nhập bởi vì nó cực kỳ đơn giản để sử dụng từ C# và "chỉ hoạt động".

2

Lưu ý rằng Dataset là cụ thể của .NET. Nếu bạn muốn làm cho bạn có khả năng tương thích với API, bạn nên gắn vào các kiểu dữ liệu và cấu trúc cơ bản (nếu không, tình huống có thể là cồng kềnh đối với các nhà phát triển không phải NET).

Sau đó, các dịch vụ web không được thiết kế để truyền các đối tượng lớn trong một chuyến đi. Nếu tập dữ liệu của bạn chứa hơn vài trăm KB, bạn có khả năng kết thúc với thời gian chờ HTTP phía máy khách hoặc phía máy chủ (xem xét cài đặt mặc định).

Đối với các hoạt động CRUD, tôi chỉ đơn giản đề xuất hiển thị từng hoạt động trực tiếp thông qua WS.

0

Tôi đồng ý với Joannes ... gắn bó với các đối tượng và phương pháp cụ thể cho các loại hoạt động bạn muốn hiển thị.

+0

Nếu bạn chỉ gửi bài đến đồng ý, tại sao không bạn chỉ upmod thay thế? –

+0

Câu hỏi hay, não không hoạt động. Xin lỗi và bầu cho Joannes - đã hoàn thành và thực hiện. –

3

Tôi muốn nói chọn tham gia đối tượng, Số liệu có thể bị lộn xộn. Các đối tượng có thể sạch hơn rất nhiều để xem xét và tất nhiên là gỡ lỗi.

Hãy cẩn thận khi làm việc với các kiểu trừu tượng mặc dù chúng có thể hơi đau để tuần tự hóa nếu bạn có bộ sưu tập dựa trên lớp trừu tượng/giao diện. Tuy nhiên, tôi đã gặp vấn đề với điều này trong quá khứ, tôi found a solution.

2

Tôi đã đạt được thành công lớn với DataSets (máy chủ sử dụng và trả về tập dữ liệu được nhập mạnh, trong khi khách hàng sử dụng nó làm tập dữ liệu chuẩn). Giống như Tomer cảnh báo, tôi có lợi ích là không có mối quan tâm về khả năng tương tác.

Liên quan đến cập nhật, gửi toàn bộ tập dữ liệu là ý tưởng tồi. Có một phương thức trên cả hai đối tượng DataSet và DataTable được gọi là GetChanges() sẽ trả về tất cả các chỉnh sửa kể từ khi AcceptChanges() được gọi. Điều này sẽ giúp bạn giảm lưu lượng truy cập mạng.

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