我有几个关于我正在开发的软件架构的问题!
所以基本上,这个软件允许用户访问一些流行的网站:
- 社交网络(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 提要等......所以随着时间的推移它可能是相当多的数据)。
感谢和抱歉我的英语不好!