C#混合不安全/安全库

时间:2012-06-20 10:18:06

标签: c# unsafe

我正在慢慢构建一个代码库,以便在多个应用程序中使用。一些代码是处理图像和预先存在的消息格式(从C ++转换而来),因此需要不安全的代码。

为什么我通常不应该在同一个库程序集中混合不安全和安全的代码,而不是我必须这样做?

换句话说:我应该维护一个纯粹安全的库并将不安全的代码收集到不同的库/库中吗?

我很欣赏“不安全”库需要考虑信任问题,但由于这些功能对我的大多数应用程序都至关重要,它真的重要吗?要么我的所有代码,安全&不安全,受信任或不受信任,我的应用程序将无法运行。或者我错过了这一点?

1 个答案:

答案 0 :(得分:4)

理论上,您可以使用安全代码开发所需的内容,但我们假设您有充分的理由使用不安全的代码:)

在您运行不安全代码的代码部分中,您可能会忘记释放内存等...所以如果您很好地管理内存,那么您应该没有问题。当你有一个使用COM + dll的C#项目时,你会一直这样做。在你的情况下更好,因为你拥有所有的代码,所以你可以修复任何内存泄漏,如果你能够检测到它。

如果您在单独的库中收集所有不安全的代码

<强>赞成

  • 您可以在以后创建新的安全库
  • 如果您看到dll在执行日志上失败,您将能够更容易地找出问题的根源。

<强> CONS

  • 如果您不得不以不自然的方式拆分安全/不安全的代码,则代码的可读性最差。

所以说实话,决定权归你所有。如果我是你,我会将不安全的代码分成不同的项目,以便能够在需要时用安全代码替换它。