【发布时间】:2009-10-01 20:16:26
【问题描述】:
我有几个关于我正在开发的软件架构的问题!
所以基本上,这个软件允许用户访问一些流行的网站:
- 社交网络(Facebook、MySpace、...)、
- 公共服务(RSS、邮件、Twitter...),
- 社交书签(Digg、Delicious...),
- 聊天(MSN、AOL...),
- ...
目前架构如下: 使用 MVC 和 Observer/Observable 设计模式在模型(TApp_Core)和用户界面之间进行交互。
TApp_Core
TBookmarkingServices_Core
TDelicious (implement IBookmarkingServices)
TDigg (implement IBookmarkingServices)
etc... (implement IBookmarkingServices)
TChatServices_Core
TMSN (implement IChatServices)
TGoogleChat (implement IChatServices)
TAOLChat (implement IChatServices)
etc...
TRSSServices_Core
...
因此软件创建了一个 TApp_Core 实例,然后根据用户的选择,它创建了一些其他服务的实例(例如:App_Core.BookmarkingServices_Core.AddServices(Digg, User, Password);)。
一些问题!
- 您认为目前的软件设计对吗?
- 目前所有软件只有一个线程...为每个服务请求创建一个新线程会更好吗? (例如,TDigg 从一个按钮接收消息,它创建一个线程,该线程将创建一个 TidHTTP,向服务器生成请求,等待响应,解析响应,向每个观察者发送消息(回调)然后释放线程。
- 似乎很难将所有视图/控制器与模型的每个部分链接起来,这是否正常需要这么多工作?
例如:要发送一条消息,例如使用 Twitter,它需要:
- 将控制器(按钮)附加到 TApp_Core.TMicrobloggingServices_Core.TTwiter 对象(模型)
- 等待用户点击按钮
- 向 TTwiter(模型)发送消息
- 创建一个线程将请求发送到服务器
- 解析来自服务器的响应
- 执行回调以通知请求已执行并给出结果
- 释放线程
- 如果我用之前的思路,会不会造成线程过多,导致电脑变慢,不负责任?除非我实现了一个线程池(但使用起来相当复杂)。
- SQLite 3 是否足以在客户端存储所有数据? (数据可以是邮件、RSS 提要等……所以随着时间的推移,它可能是相当多的数据)。
感谢和抱歉我的英语不好!
【问题讨论】:
标签: delphi model-view-controller design-patterns social-networking