我有一个项目,需要实现一个可能与许多其他项目共享的框架,该框架是关于“订阅”的。
基本上,此操作是在iOS中包装StoreKit
并与我们的服务器通信,然后可能将某些内容保存在数据库中。我在项目中确实有数据库堆栈和网络堆栈,但是我还没有将它们抽象到框架/库中。
所以我的问题是,我不太确定实现此目标的正确方法。我应该先将数据库堆栈和网络堆栈设为2个单独的框架吗?然后通过在其中创建“订阅”框架?但是我也发现它不被称为umbrella framework
。
有什么建议吗?
答案 0 :(得分:1)
我认为,有两种方法可以实现这一目标。
选项A /懒惰
将所有可重用的类构建到一个框架中。该框架将包括/编译完成工作所需的所有支持代码(数据库,网络等)。
然后在您的各种应用程序项目中共享该可重用框架。请记住,不仅要链接到框架,还要将其嵌入到您的应用程序中。
这是最简单的设置,设计和维护(对于一个人)。但是,这也意味着创建一个整体库,该库可能过于宽泛和/或隐藏了太多底层技术。
选项B /热情
将每个可重用组件构建到其自己的框架中。高级框架将链接(但不嵌入)低级框架。
您的应用程序项目随后将链接并嵌入其所需的所有框架。
在运行时,每个框架都会(应该)根据需要神奇地加载自身。
这是很多工作,但有一些优点。每个主要服务都有自己的I / F,因此您的应用程序可以直接使用组件,而不必“深入研究”定义自定义服务的高级框架。
这也可能意味着您在包含哪些代码方面更具灵活性。一个应用程序可能使用客户端注册服务,数据库和服务器连接,而第二个应用程序可能仅使用客户端锁定和服务器。
这也可能使维护(特别是如果由不同的工程师负责每种服务)和回归测试更加容易。
最后,这里没有正确的答案,只是权衡。