如何管理依赖于网络调用和数据库查询的框架?



我有一个项目需要实现一个框架,可能会与许多其他项目共享,这个框架是关于"订阅"的。

基本上,这个所做的是将StoreKit包装在iOS中并与我们的服务器通信,然后可能会在数据库中保存一些东西。我在项目中确实有一个数据库堆栈和网络堆栈,但我还没有将它们抽象成框架/库。

所以我的问题是,我不太确定实现这一目标的正确方法。我应该先将数据库堆栈和网络堆栈作为 2 个单独的框架吗?然后通过将它们放入来创建"订阅"框架?但我也发现这被称为umbrella framework不推荐。

有什么建议吗?

在我看来,有两种方法可以设计它。

选项A/懒惰

将所有可重用类构建到单个框架中。该框架将包括/编译它完成工作所需的所有支持代码(数据库、网络等(。

然后在各种应用项目之间共享该可重用框架。请记住,不仅要链接到框架,还要将其嵌入到应用中。

这是最简单的设置、设计和维护(针对单个人(。但是,这也意味着创建一个可能过于宽泛和/或隐藏太多底层技术的整体库。

选项B/热情

将每个可重用组件构建到其自己的框架中。高级别框架将与低级框架相联系(但不是嵌入(。

然后,您的应用项目将链接到并嵌入它所需的所有框架。

在运行时,每个框架将(应该(根据需要神奇地加载自身。

这是更多的工作,但有一些优点。每个主要服务都有自己的 I/F,因此你的应用可以直接使用这些组件,而无需"钻取"定义自定义服务的高级框架。

这也可能意味着您在包含哪些代码方面具有更大的灵活性。一个应用可能使用客户端注册服务、数据库和服务器连接,而另一个应用可能只使用客户端锁定和服务器。

它还可能使维护(特别是如果不同的工程师负责每项服务(和回归测试更容易。

最后,这里没有正确的答案,只有权衡。

最新更新