【问题标题】:Limiting Access to a DLL in .NET限制对 .NET 中 DLL 的访问
【发布时间】:2010-02-12 16:39:15
【问题描述】:

我为一家公司编写内部软件。

我总是想尽可能地利用 OOP 技术。在这个想法中,我想创建一个独立于自己的.DLL 中的数据访问层 (DAL)。

我可以做些什么来限制 DAL DLL 只能访问我的业务逻辑层 DLL

我最不需要的是公司里有一点编程知识并且可以访问系统(通过 Active Directory)来安装 .NET Express,引用我的 .DLL,并开始在外部启动数据访问代码真实系统。是否有任何 .NET 机制可以用来限制 DLL 只能由预先选择的主机应用程序/DLL 使用?

【问题讨论】:

    标签: .net vb.net architecture code-access-security


    【解决方案1】:

    从代码角度限制访问的最简单方法是使用友元程序集。您可以将数据访问层 DLL 中的所有类型设为 Friend/Internal。然后只需将您的业务逻辑层组件添加为朋友,他们将能够使用这些类型。公司中的任何其他人都不会,因为他们没有具有内部访问权限的 DLL。

    文档 - http://msdn.microsoft.com/en-us/library/bb384772.aspx

    【讨论】:

    • -1 那行不通。将类标记为 Internal 意味着只有 SAME 程序集中的类才能访问它。其他引用 DLL 的程序集不会。他特别要求一种方法,可以将 DLL 的使用限制为他想要的单独程序集。
    • @Nick,你读过我发布的链接吗?朋友程序集提供了这种确切的行为。
    • 我的错在那里......以为它只是在谈论在类上使用 internal 关键字。
    • 太棒了!我不知道这样的程序集范围的概念。谢谢。
    【解决方案2】:

    您可能可以使用 LicenseProvider 类来利用 .NET 中构建的应用程序许可框架。根据您实现它的方式,拥有 DLL 不足以使用您的库......他们还需要某种许可证文件,或提供许可证密钥。 Here is a good article on how to start using it.

    【讨论】:

    • +1 以获得良好的替代视角。但是,对于内部软件来说,这将过于复杂。不过是个好主意!
    猜你喜欢
    • 1970-01-01
    • 2013-09-07
    • 2010-11-27
    • 2011-10-28
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    相关资源
    最近更新 更多