- - PR -
プロジェクト分割単位
«前のページへ
1|2|3|4
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-04-03 22:23
DLL で分けるということはシステム全体が 1つのプロセスとして実行されるということですよね。この場合、ひとつの UI スレッドを共有することになるのではないでしょうか。50の機能(フォーム)のうちの複数を同時に起動したときに、行儀の悪い機能(フォーム)が UI スレッドを停滞させてしまったとにシステム全体の機能停止を引き起こすリスクがあるように思います。
各機能(フォーム)が UI スレッドを停滞させずにワーカースレッドで処理をおこなったとしても、UI 操作など、いくつかの場面で UI スレッドへの同期化が出てきますよね。そういったことを考えると、DLL での実装はパフォーマンス面で不利になるように思えます。 それとも、各機能(フォーム)ごとに UI スレッド(メッセージループ)を持たせるようなことができますか。 | ||||
|
投稿日時: 2008-04-04 10:41
途中から DLL という前提で派生的な質問に移行してしまったのですが、もし並列に単独起動可能という仕様があるならば exe というアセンブリを視野に入れるべきだと思います。(なので、敢えて 「アセンブリ」 としか書かないようにしました) 個人的には、ライブラリは当然のごとく DLL ですが、UI モノは exe を優先的に選択していることが多いですね。 デメリットとしてはそのアセンブリ (exe) が初回起動される時にやや遅いというところですね。(たいてい 1 秒以内のものですが) どの選択をするかはシステム全体の仕様次第ではありますね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2008-04-04 17:26
うーん、これってリスクと呼んで良いのかなと言う気がしますけれど。 むしろ構造上の欠陥だと言う気がします。0.1秒ルールとかから考えると 問題があるつくりですよね。 こういう問題はテスト段階で排除されるべきだし、 そう考えるとリスクと呼んで良いのかなと。 UIスレッドを使ったマルチスレッドも構造的には可能でしょうけれど、 取り回しが面倒になりそうなのでやりたくないですね。 じゃんぬさんも書かれていますけれど、システムが要求する要件次第になると思います。 オペレーターが複数の画面を同時に開いていたとしても操作時に複数の画面を同時に 扱う場面と言うのはあまり多くないと思うのでそういう意味ではワーカースレッドで うまくハンドリングしてやれば、UIスレッドは一つでも何とかなりそうな気がします。 [ メッセージ編集済み 編集者: ぱてお 編集日時 2008-04-04 17:26 ] | ||||
|
投稿日時: 2008-04-04 19:04
問題はモーダルなダイアログ・画面などを使用したい場合ですね。 こういうことをやりたい場合は複数メッセージループを立ち上げるとかが必要になると思います。 |
«前のページへ
1|2|3|4