为什么不使用ASP.NET中的GDI +

时间:2010-04-01 18:31:25

标签: asp.net gdi+

我被告知使用ASP.NET中的GDI +是危险且未定义的。

是否因为无法保证设备上下文?有人可以解释一下吗?

有哪些替代方案?

以下是MSDN来源:

http://msdn.microsoft.com/en-us/library/system.drawing.aspx

修改

Windows和ASP.NET 服务!那么也许正常的ASP.NET应用程序可以吗?但为什么呢?

修改

这是不是愚人节的笑话,请不要这样对待。

2 个答案:

答案 0 :(得分:4)

主题上有numerous articles,可以从.NET调用此代码。您需要确保处置您创建的任何对象,因此使用C#使用语句非常重要。

System.Drawing可能存在问题的原因是它与Windows的绘制方式密切相关。您应该尽可能地隔离代码。在Windows Vista及更高版本中,Microsoft对服务体系结构进行了一些更改,从而阻止了桌面和Windows服务之间的交互。 ASP.NET在技术上是一种服务,如果它托管在IIS(最常见的情况),所以这就是微软添加注释的原因。未来版本的Windows和IIS可能会使从ASP.NET应用程序中使用System.Drawing变得更加困难或不可能。

挑战在于,有些人可能在其他项目上滥用了这项技术,现在这些人正试图影响你对它的使用。处理这些问题的一种方法(无效或不是视情况而定)是创建一些性能和可靠性指标。然后当你开始使用GDI +演示它的使用效果时。在大多数情况下,这种影响应该是可以接受的,但这取决于你想用GDI +做什么。

答案 1 :(得分:2)

GDI +在Web环境中使用的窗口句柄和资源的创建存在可伸缩性问题。

将ASP.NET GDI +代码放在单例中,以便对调用进行序列化并正确处理对象。

我已经将这种技术用于动态创建的图像而没有任何障碍。