我正在学习WCF,LINQ和其他一些技术,从头开始编写自定义远程控制应用程序,如VNC.我在创建它时考虑到三个主要目标:
现在我正在使用WCF发送一个表示正在发送的窗口的字节数组:
using (var ms = new MemoryStream()) {
window.GetBitmap().Save(ms, ImageFormat.Jpeg);
frame.Snapshot = ms.ToArray();
}
Run Code Online (Sandbox Code Playgroud)
GetBitmap实现:
var wRectangle = GetRectangle();
var image = new Bitmap(wRectangle.Width, wRectangle.Height);
var gfx = Graphics.FromImage(image);
gfx.CopyFromScreen(wRectangle.Left, wRectangle.Top, 0, 0, wRectangle.Size, CopyPixelOperation.SourceCopy);
return image;
Run Code Online (Sandbox Code Playgroud)
它然后通过WCF(TCPBinding,它将始终通过LAN)发送到客户端,并在没有边框的空白窗口形式重建,如下所示:
using (var ms = new MemoryStream(_currentFrame.Snapshot))
{
BackgroundImage = Image.FromStream(ms);
}
Run Code Online (Sandbox Code Playgroud)
我希望这个过程在CPU和内存使用方面尽可能高效,带宽排在第三位.我的目标是让客户端连接到5台服务器,每台服务器有10多个应用程序.
我现有的方法是最好的方法(同时继续使用这些技术)并且我能做些什么来改进它?
我正在研究的想法(但我没有经验):
Rub*_*ias 21
你应该知道这一点:
只是之后通过这一切的步骤,并信纳你的最终代码,你可以下载VncSharp源代码.它实现了RFB协议 (维基百科条目),"a simple protocol for remote access to graphical user interfaces. Because it works at the framebuffer level it is applicable to all windowing systems and applications, including X11, Windows and Macintosh. RFB is the protocol used in VNC (Virtual Network Computing)."
不久前我参与了一个类似的项目。这是我的一般方法:
一些客户端注意事项。在处理通过 WCF 服务传输的大量数据时,我发现HttpTransportBinding和XmlDictionaryRenderQuotas的某些参数设置为相当保守的值。所以你会想要增加它们。
| 归档时间: |
|
| 查看次数: |
24034 次 |
| 最近记录: |