2010-01-07 22 views
5

Mặc dù bỏ phiếu cho dịch vụ web là có thể, bạn có biết phương pháp nào khác để đẩy các thay đổi cho ứng dụng khách di động ngoại trừ việc sử dụng dịch vụ trao đổi thư của máy chủ trao đổi không?Làm cách nào để đẩy dữ liệu đến máy khách .NET CF?

+0

bạn có nhớ chia sẻ mã nguồn bạn đã đề cập (POC) không? –

Trả lời

3

Như Mark Seemann worte: Tôi đã từng thực hiện POC của hệ thống thông báo khách hàng cho .NET CF khi tôi ở trong nhóm Microsoft Dynamics Mobile.

Lúc đó tôi không tìm thấy bất kỳ giải pháp Out-Of-The-Box nào có thể thực hiện việc này và tôi không muốn kết nối với Exchange Server vì người dùng dự định không có tài khoản AD và hầu hết đều không sử dụng máy chủ trao đổi. Vì vậy, tôi đã ở trong tình trạng tương tự như bạn bây giờ. Tôi bắt đầu tìm kiếm các giải pháp khả thi ...

Tôi nhận ra rằng máy chủ không thể kết nối với máy khách vì địa chỉ IP này liên tục thay đổi (chuyển từ 3G sang WiFi, mất kết nối, v.v ...). Phòng khám phải kết nối với máy chủ. Hơn nữa, tôi thấy rằng hầu hết các mạng đều cho phép kết nối HTTP nhưng không phải lúc nào cũng có các kết nối TCP tùy chỉnh trên các cổng tùy chỉnh.

Tôi đã sử dụng "Sao chổi" để thực hiện các yêu cầu http dài từ máy khách (.NET CF) đến máy chủ (IIS) và đẩy thông báo đến máy khách bằng kết nối này. Nếu khách hàng có một thời gian chờ trước khi một thông báo được đưa ra nó sẽ chỉ đơn giản là thực hiện một yêu cầu mới.

Trên máy chủ, tôi đã sử dụng kết hợp của AsyncHttpHandler và chờ chuỗi đã kiểm tra thư cho các khách hàng được kết nối sau mỗi giây. Điều quan trọng là sử dụng AsyncHttpHandler hoặc bạn sẽ chặn máy chủ IIS.

POC hoạt động tốt và được chứng minh là giải pháp đáng tin cậy. Có một số nhược điểm đối với điều này: nếu bạn không cẩn thận, bạn sẽ tiêu hao pin khá nhanh chóng.

Thật không may, chỉ có quá nhiều dòng mã liên quan đến tôi để đăng mã ở đây, nhưng nếu bạn thích bạn được chào đón liên hệ với tôi và tôi sẽ gửi e-mail cho bạn POC của tôi.

+0

+1 Rất vui khi bạn tham gia bữa tiệc :) –

3

Quay lại khi tôi làm việc trong nhóm Microsoft Dynamics Mobile (cho đến tháng 1 năm 2009), không có cách nào khác được tích hợp sẵn để thực hiện việc này trên .NET CF khác ngoài Exchange Server Mail Transport.

Tuy nhiên, một trong các đồng nghiệp của tôi đã tăng đột biến khi khách hàng di động mở kết nối HTTP tới dịch vụ và giữ nó mở, nhờ đó dịch vụ có kênh mở mà nó có thể đẩy.

AFAIK, đây là cơ bản những gì Exchange Server Mail Transport thực hiện. IIRC, ông đã nhận nó làm việc không sao, nhưng tôi sẽ tweet anh ấy và xem nếu tôi có thể làm cho anh ấy kêu vang trong

-1

Dưới đây là một số tùy chọn để sử dụng trong một mạng nội bộ:.

  1. MSQM
  2. TcpListener

Để tùy chọn 1 bạn cần cài đặt một phần cơ sở hạ tầng khác, nhưng bạn có được API và giao thức chuẩn.

Đối với tùy chọn thứ hai, bạn phải triển khai giao thức của riêng mình.

Cả hai tùy chọn chỉ hoạt động trong môi trường đóng!

+0

@downvoter, có gì sai với câu trả lời của tôi? –

2

Thử kiểm tra WebSync, máy chủ sao chổi cho IIS/.NET. Nó bây giờ có hỗ trợ khung nhỏ gọn đầy đủ.

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