代码之家  ›  专栏  ›  技术社区  ›  Richard B

为产品的多个版本开发代码库

  •  4
  • Richard B  · 技术社区  · 16 年前

    我知道这是可能的,因为有这么多的包可用,你有一个“标准”,“专业”和“企业”版本的包…但是,有没有关于uisv如何学习开发软件的分层特性部分所涉及的技术的像样的教程呢?

    我已经通过你通常使用的不同渠道(google、msdn等)进行了多次搜索,但到目前为止都是空的。

    如有任何意见/建议,将不胜感激。

    谢谢。

    6 回复  |  直到 16 年前
        1
  •  2
  •   Arjan Einbu    16 年前

    最简单的方法是创建一个包含所有功能的程序,并根据产品密钥启用/禁用它们。

    第二个选择是为程序创建一个最小的sceleton,并使用一个插件架构来添加更多的功能。这意味着您只能部署所部署版本所需的部分。

    使用.NET,您可以查看System.Addin命名空间或反射内容…

        2
  •  1
  •   zendar    16 年前

    我会寻求更简单的解决方案:

    • 将代码放入程序集中
    • 创建只包含主窗体的shell项目,每个版本都有菜单和工具栏。菜单和工具栏只能从程序集激活窗体/功能。

    这样,您就不需要配置文件来启用/禁用功能,如果您将所有内容都放在一个应用程序中,就不会有“功能访问”代码。而且,你的用户不可能破解你的应用程序或密钥,并获得他没有付费的功能。

    缺点是你不能仅仅通过发送新的密钥就把用户从“标准”升级到“专业”,用户必须下载并安装新的应用程序。

        3
  •  0
  •   Bramha Ghosh    16 年前

    您可能需要查看.NET成员资格提供程序中基于角色的安全性(假设它是一个Web应用程序)。您可以添加角色“第1层”和“第2层”,也可以为层允许用户使用的每个功能添加角色。然后在实现分层功能的页面上,如果user.isinrole(“featurename”)显示它。

        4
  •  0
  •   Orentet    16 年前

    这取决于您要阻止用户使用哪些功能。 如果您的所有功能都是独立的,那么bramha的解决方案是一个很好的解决方案,但是如果您的功能不是独立的,那么这是一个完全不同的故事,您需要开发一个内部“框架”,允许对每个功能进行抽象。

        5
  •  0
  •   Gary Willoughby    16 年前

    我可能会使用编译器指令来分离这些特性。这样,您就有了一个代码库,但可以“编译”应用程序中的几个不同的特性。如果你把所有的东西都编译进去,然后用不同的串行键把这些功能分开,盗版者就很容易了。毕竟,如果不存在的话,特征不能被道奇连续剧解锁。

        6
  •  0
  •   Michael Stum    16 年前

    从软件盗版的角度来看,您可能希望使用条件编译(使用 #define and #if )或者单独的程序集-基本上:如果一个特性在标准版或试用版中不可用,不要禁用它,而是完全删除它。

    如果尝试使用某种全局枚举“licensetype{standard,enterprise}”,请记住 Crack.net 可以轻易改变它的存在。

    另一方面:只有一个包含所有特性的可执行文件,并且在每个键的基础上启用/禁用它们,这使得部署和版本管理更加容易。