Silverlight和DirectX通信时的数据传输问题
公司积累了很多C++代码,都是一些核心的算法,其中包括图像处理。我们现在有一个基于Silverlight的应用,需要调用C++中的方法,但因为安全问题,不能直接调用,我们的做法是把这些C++代码封装成DirectX控件,然后在Silverlight中获取HTML页面中的DirectX Dom对象,通过Dom对象调用C++方法。
调用简单的C++方法并不成问题,但如果方法带有复杂参数(例如参数为一幅图片),则不能成功调用,因为Dom并不能理解Silverlight提供的Bitmap对象,Dom所能够正确理解的数据格式仅是字符串,因此我们必须把所有的Silverlight对象编码成字符串,然后传递给DirectX,DirectX接收后再解码为对应的C++对象。
这种方法在网络传输时很常用,SMTP 中的图像就是编码为Base64字符串,WebSerivice中的WSDL和SOAP更是如此。