IoC*_*IoC 0 .net c# asp.net asp.net-mvc-3
我正在开发一个C#项目,并有两个程序员来帮助我完成部分项目.问题是我不相信这些程序员,因为他们最近加入并需要保护我公司的财产.
我需要从两个程序员那里隐藏代码的某些部分,这样他们就看不到它们了,他们仍然可以处理他们的部件并运行完整的应用程序来测试它.
有这样的事吗?:)
Rob*_*t P 13
知道一些事情:
C#让你很容易看到你正在编译的内容,但是对于所有编程语言来说都是如此:如果他们需要编译它们,编译一个dll,或者他们可以运行它,作为DLL或原始C#,他们可以访问它背后的逻辑. 没有办法解决这个问题. 如果计算机可以运行程序并且它全部驻留在您的PC上,那么人类可以查看它并学习如何执行它.
然而!您可以设计程序,使其无需针对它进行编译.
制作其他员工必须编写插件的代码.让他们将他们的代码作为一个完全独立的项目编写到一个接口,在运行时动态加载API的核心部分.
请查看Managed Extensibility Framework以获取执行此操作的工具.
特定保密的组件可以被抽象掉,因此可以隐藏它的工作细节,然后通过Web调用进行调用.这仅适用于您要保护的核心详细信息不是时间敏感的情况.这也无法保护该功能背后的理念:员工需要了解它能够使用它的目的,仅此一项就足以从头开始重建它.
如果您目前不信任您的员工,则需要开发它. 你将无法了解每个人所做的一切. 这不仅仅是编程,而是生活中的关键技能.如果您觉得自己无法信任他们,那么您需要雇用您可以信任的新员工,或者建立对他们的信任.
建立对其能力的信任的一种方法是通过代码审查.首先,确保您使用的版本控制系统允许轻松分支.如果不是,请立即切换到Mercurial*.有一个"整合"区域和个别开发区域,通常通过克隆分支或命名分支.在他们提交代码之前,与员工聚在一起并查看更改.如果你对他们感到满意,那就让他们承诺吧.这将在每次提交时消耗一点时间,但如果您对更改进行快速迭代,那么评论也会很快.
如果您不信任您的员工,他们也可能不会信任您.相互不信任不会滋生忠诚度.没有忠诚,你就没有保护.如果他们可以访问您的存储库,并且您不信任它们,那么他们很有可能只需要一点点努力就可以获得您想要的代码.
大多数人大部分时间都是诚实的.与他们合作.了解他们.如果有人为一个充满敌意的实体工作,那么他们可能已经获得了他们想要获得的东西而且你还是被搞砸了.如果一个人变成病态的骗子或无能者,立即更换它们.通过从他们的眼睛"保护"您的代码,这些问题都不会得到保存.
从安全角度来看,进一步提高员工信任度的方法是进行背景调查.几百美元,几天,你可以找到有关它们的各种信息.如果你准备隐藏他们的代码,并且你是雇主,你也可以在他们窃取宇宙的秘密之前做尽职调查.
我讨厌打破它,但几乎有100%的机会你的代码不是特别的.试图通过默默无闻来保护它是浪费时间和一种已知的,差的保护方法.
祝好运!
**为何选择Mercurial?仅仅因为它是一个易于入手的选项.如果它适合你的想象,请随意使用任何其他,如Git.您使用哪一个完全不是重点,而是与整体讨论无关.*