2009-02-12 45 views
6

Là một phần của công cụ hỗ trợ khách hàng, tôi muốn cung cấp một số chức năng để có thể yêu cầu xem/điều khiển từ xa một phiên máy tính. Có một số cách để có được một màn hình chụp và sau đó dòng nó, nhưng tôi muốn tìm hiểu đặc biệt, tại sao RDP (Remote Desktop/Terminal Services vs VNC kinh nghiệm là rất khác nhau.Tôi đang sử dụng RDP vs VNC chỉ vì chúng dường như sử dụng các phương pháp khác nhau mạnh mẽ để truyền màn hình đến máy kháchSự khác nhau giữa các dịch vụ RDP/Terminal và các kỹ thuật trực tuyến VNC

Nếu tôi phải đoán, RDP sẽ truyền các khối đồ họa bitmap (nói 100x100px) để xây dựng hình ảnh đầy đủ (có thể khá chậm) nhưng dường như chuyển hình dạng/hình mờ được vẽ bình thường, hoặc vẽ phông chữ cho khách hàng cực kỳ nhanh chóng, VNC dường như chụp những bức ảnh khổng lồ của màn hình, so sánh hình ảnh trước đó và truyền các thay đổi cho khách hàng. Tôi cảm thấy rằng RDP là một giao thức chất lượng cao và mượt mà hơn bất cứ thứ gì khác ngoài đó, vậy kỹ thuật nào nó sử dụng để thực hiện điều này?

EDIT-Chỉ cần làm rõ, tôi hỏi về các kỹ thuật đồ họa này cụ thể như một phương pháp lập trình giao thức truyền trực tuyến - không phải sản phẩm/công nghệ hiện có để sử dụng để giải quyết yêu cầu kinh doanh này.

Trả lời

9

Khi bạn phát hiện ra, chúng đều khác nhau theo cách chúng thay đổi luồng. Giao thức RDP từ MS là và mở rộng ITU standard (T.128) có thể được mua trực tuyến.

RDP thực hiện rất nhiều kỹ thuật tiết kiệm băng thông bổ sung cho nhau và làm cho nó rất hiệu quả trên băng thông thấp.

VNC mặt khác có các kỹ thuật nén rất cơ bản: nó sẽ gửi các khối bitmap đã thay đổi và sẽ sử dụng các loại nén cơ bản, từ RLE đến jpeg để truyền các khối đó hiệu quả.
Thật không may, nó vẫn khá lãng phí so với băng thông thấp.

VNC về cơ bản không có kiến ​​thức về nguyên thủy đồ họa cơ bản được sử dụng để tạo màn hình. Điều đó giúp dễ dàng sử dụng trên bất kỳ máy nào vì nó chỉ giám sát các thay đổi đối với bitmap của màn hình.
RDP mặt khác móc sâu hơn vào API Windows và có thể tối ưu hóa luồng của nó dựa trên lượng thông tin tối thiểu cần thiết để tạo cùng một bản cập nhật trên máy khách.

Nếu bạn muốn tích hợp chức năng máy tính từ xa, bạn có một vài lựa chọn:

  • cho RDP bạn có thể sử dụng ActiveX sử dụng cho các chức năng điều khiển từ xa web. Bạn có thể muốn xem wrapper để tích hợp nó vào phần mềm của riêng bạn.
    Nếu bạn muốn tìm hiểu sâu hơn về điều này, có sẵn mã nguồn cho máy khách linux rdesktop kết nối với các máy Windows trên RDP.

  • cho VNC có một số triển khai nguồn mở. Copilot
    FogCreek của thực sự sử dụng một và bạn có thể nhận được nó source vì nó được xây dựng trên TightVNC

Ngoài ra còn có một số dự án trên CodeProject on RDPVNC.

3

Như Renaud đã nói, VNC chỉ gửi các thay đổi bitmap theo khối mà không biết bất kỳ nội dung nào. RDP thông minh hơn nhiều.

Bạn có thể kiểm tra chính xác những gì RDP làm từ hai thông số kỹ thuật sau đây:

Protocol mức: mức http://msdn.microsoft.com/en-us/library/cc240445(PROT.10).aspx

Graphics: http://msdn.microsoft.com/en-us/library/cc241537(PROT.10).aspx

Tôi nghĩ rằng lợi ích lớn nhất RDP đến từ:

  • Caching: Khách hàng có thể lưu trữ một lượng lớn tiền các khối bị chặn và máy chủ có thể cho khách hàng biết cách sử dụng chúng. Ngoài ra đây là những tồn tại như vậy khi một khách hàng kết nối với một máy chủ nó đã được để nó có thể quảng cáo những gì khối nó có trên đĩa. Rất hữu ích khi các cửa sổ được di chuyển. Ngoài ra nhiều phần của cửa sổ, giống như thanh tiêu đề đều giống nhau.

  • Vẽ đường/khối. Như bạn đã đoán RDP có các hoạt động cho vẽ, vẽ nhiều và vẽ trực tiếp. Với các cửa sổ vẽ, chúng được sử dụng khá nhiều.

  • Bản vẽ phông chữ. RDP có cách gửi qua gylphs cho phông chữ và yêu cầu khách hàng hiển thị chúng.

  • Hiển thị con trỏ. Các biểu tượng con trỏ được gửi dưới dạng glyph. VNC chỉ cần sử dụng một dấu chấm

Đó là những điều quan trọng nhất bạn cần lưu ý. Kiểm tra phần 2.2.7 Khả năng Bộ thông số giao thức cho danh sách đầy đủ các tính năng vẽ.

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