如果你有类似精简版,普通版,终极版和重叠功能集的东西,可能会降低功能,那么从开发的角度来看,这是最简单的方法吗?
我只使用过具有单一许可证,启用/禁用特定组件/功能的子功能许可证或座位/资源许可证的应用程序。我有一些想法,但一些新的见解会很好。
答案 0 :(得分:4)
我一直致力于服务层的应用程序。虽然这可能不是最好的方式,但这就是我看到它的完成方式。
1)确定哪些功能对所有层都是通用的。公共功能不需要任何逻辑,因为每个人都可以使用它们。
2)应该以细粒度的方式分解不常见的功能。所以可以一次启用/禁用它们。
3)为层分配功能矩阵。
我们有一个许可应用程序,基本上是所有细粒度功能的一堆复选框。选择“Lite”将检查相应的框,以便在生成许可证代码时,它将包括这些功能。
启动时,安全地查询了许可证服务器。 (这是一个服务器应用程序,所以它没有经常启动/停止,并且互联网得到保证)允许的功能列表将返回给应用程序。
在代码中,您只需检查天气功能是否已启用,并让许可服务器确定用户所在的等级。
我在PC Games中看到的演示磁盘的另一种方法是为每个层创建一个编译目标。
#DEFINE TIER_NORMAL 1
#DEFINE TIER_LITE etc.
then
#ifdef TIER_NORMAL
do tier normal stuff
#endif
请注意,您必须跟踪3个不同的二进制文件,这可能很痛苦。 但结果是你没有交付用户没有支付的代码。在小型项目中可能比获得正确的许可服务器更容易。