私が取り組んでいるソフトウェアのアーキテクチャについていくつか質問があります!
したがって、基本的に、このソフトウェアを使用すると、ユーザーはいくつかの人気のあるサイトにアクセスできます。
- ソーシャルネットワーク(Facebook、MySpace、...)、
- 一般的なサービス(RSS、メール、Twitter ...)、
- ソーシャルブックマーク(Digg、Delicious ...)、
- チャット(MSN、AOL ...)、
- ..。
現在、アーキテクチャは次のように なっています。モデル(TApp_Core)とユーザーインターフェイス間の相互作用にMVCとObserver/Observableデザインパターンを使用しています。
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);)。
いくつかの質問 !
- 現在のソフトウェア設計は正しいと思いますか?
- 現在、すべてのソフトウェアに対して1つのスレッドしかありません...サービスへの要求ごとに新しいスレッドを作成する方がよいでしょうか?(たとえば、TDiggはボタンからメッセージを受信し、TidHTTPを作成し、サーバーへの要求を生成し、応答を待機し、応答を解析し、各オブザーバーにメッセージを送信し(コールバック)、解放するスレッドを作成します。スレッド。
- すべてのビュー/コントローラーをモデルの各部分にリンクするのは非常に難しいようですが、通常は非常に多くの作業が必要ですか?例:たとえばTwitterで使用してメッセージを送信するには、次のことが必要になります。
- コントローラ(ボタン)をTApp_Core.TMicrobloggingServices_Core.TTwiterオブジェクト(モデル)に接続します
- ユーザーがボタンをクリックするのを待ちます
- TTwiter(モデル)にメッセージを送信する
- サーバーにリクエストを送信するスレッドを作成します
- サーバーからの応答を解析します
- コールバックを実行して、リクエストが実行されたことを通知し、結果を出します
- スレッドを解放します
- 前のアイデアを使用すると、スレッドが多すぎてコンピューターの速度が低下し、責任が減りませんか?ただし、スレッドプールを実装する場合(ただし、使用するのは非常に複雑です)。
- SQLite 3は、すべてのデータをクライアントに保存するのに十分ですか?(データはメール、RSSフィードなどである可能性があるため、時間の経過とともに非常に多くのデータになる可能性があります)。
私の悪い英語をありがとうそしてごめんなさい!