2010-02-12 78 views
4

我爲公司編寫內部軟件。限制在.NET中訪問DLL

我一直想盡可能地利用OOP技術。在這個想法中,我想創建一個獨立於其自己的.DLL中的數據訪問層(DAL)。

如何才能將DAL DLL的訪問限制爲僅限於我的業務邏輯層DLL

我需要的最後一件事就是公司裏有一些人有一些編程知識和訪問系統(通過Active Directory)來安裝.NET Express,參考我的.DLL,並開始觸發真正的數據訪問代碼系統。有沒有.NET機制可以用來限制DLL只能被預選的主機應用程序/ DLL使用?

回答

7

從代碼角度限制訪問權限的最簡單方法是使用好友程序集。您可以製作數據訪問層DLL Friend/Internal中的所有類型。然後只添加您的業務邏輯層組件作爲朋友,他們將能夠使用這些類型。因爲他們沒有內部訪問的DLL,所以公司裏的其他人都不會。

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

+0

-1這是行不通的。將類標記爲內部意味着只有SAME程序集內的類才能訪問它。其他引用該DLL的程序集不會。他特別要求一種方法,他可以將DLL的使用限制在他想要的單獨程序集中。 – Nick 2010-02-12 16:45:53

+0

@尼克,你看了我發佈的鏈接嗎?朋友組件提供了這種確切的行爲 – JaredPar 2010-02-12 16:46:22

+0

我的錯在那裏...以爲這是在談論簡單地使用類的內部關鍵字。 – Nick 2010-02-12 16:47:35

1

你也許可以利用應用程序授權框架的建立爲.NET使用LicenseProvider類。取決於你如何實現它,有一個DLL不足以使用你的庫...他們還需要某種類型的許可證文件,或提供許可證密鑰。 Here is a good article on how to start using it

+0

+1爲一個好的替代視角。但是,對於內部軟件而言,這將過於複雜。但一個不錯的主意! – HardCode 2010-02-12 16:59:29