中の技術日誌ブログ

C#とC++/CLIと
VBと.NETとWindowsで戯れる
 

目次

Blog 利用状況

ニュース

自己紹介

東京でソフトウェアエンジニアをやっています。
お仕事大募集中です。
記事執筆や、講師依頼とかでも何でもどうぞ(*^_^*)
似顔絵 MSMVPロゴ
MSMVP Visual C# Since 2004/04-2013/03

記事カテゴリ

書庫

日記カテゴリ

00-整理

01-MSMVP

プロジェクト分割指針

まず.NET前提とお断り

EXEファイルは基本的にスタートアップしか作成しません。

x86, x64の切り替えや、入り口を増やすときにEXEへの参照はマニフェストファイルの問題もありやってはいけないためです。

DLLはまず基本的に以下の区切りで分割します。

データセット、業務機能無し標準、業務標準、UI

参照を許す許さないの方向などは自明なのであえて書きませんが、双方向参照にはならないように切るのは当然です。

その他の外部モジュール。たとえば指紋認証モジュールがあればそれのラッパクラス群は単独でDLLにしておきます。

後で差し替えられるためという事もありますが、x86しか動かないモジュールはx86にしておくという事も必要な対策です。

UIは基本的に1アセンブリで作成します。サブシステム単位で横割りすると、共通的な使い回しが聞かなくなる可能性があります。

ただここは難しいところですが・・・

1画面1DLLなんて作りはあり得ないことだけは確かで、1画面1EXEなんてあり得ません。

投稿日時 : 2007年10月11日 15:17

コメントを追加

# re: プロジェクト分割指針 2007/10/11 16:12 まどか

> 1画面1DLLなんて作りはあり得ないことだけは確かで、1画面1EXEなんてあり得ません。

メニューEXEから起動したら先頭EXEがログインダイアログを出す。
後続のEXEが認証情報を受け取る。
そんな1画面EXEプロジェクト。

ありえないよねぇ。
理由聞いたら、
「さぁ?」
「複数同時作業できるからじゃないの?」
動機不純でかつ疑問形。
涙、涙。

# re: プロジェクト分割指針 2007/10/11 16:20 Ognac

ありえるから世の中は面白い。
汎用機コボルオンラインなどは、いまだに1画面1exeで製造しているらしく(確認はしてませんが)
その流れをくむPMさんが主催するプロジェクトでは時々あるそうです(2例知ってます)
そのうちの一つは、データエントリーでマスター検索しますよね。
(伝票入力画面で得意先コード欄でクリックしたら得意先検索画面が開くなどの仕様)
なんと、得意先検索が1プロジェトとなっていて、1Exeになってました。
1ソリューションが57プロジェクトから構成されいる........この姿が当たり前になっている...かかわらずに逃げた自分<= コラ

# re: プロジェクト分割指針 2007/10/11 16:29 ぽぴ王子

> 1画面1DLLなんて作りはあり得ない

サーセンwwwいまそんなプロジェクトやってるwwww

○| ̄|_

# re: プロジェクト分割指針 2007/10/11 16:45 Hirotow

>「複数同時作業できるからじゃないの?」
ソース管理使ってないの、その会社?

# re: プロジェクト分割指針 2007/10/11 17:09 HiJun

昔にやったシステムで、複数の会社に分担させて
いるときに、その様な形式をとっていたなぁと
思い出したりして...

# re: プロジェクト分割指針 2007/10/11 18:07 Streetw☆

とりこびとさんの雑記でちょうどこの話をしてました。
私が「作りにくくない程度になるべく小分けするようにしてます」とコメントしたら、とりこびとさんに「このバランスが・・・。」って言われちゃいました。
このバランスとか、中さんの「ただここは難しいところですが・・・」の部分について、何か指針をお持ちの方、いらっしゃらないでしょうか。。。
一つ言えることは、現実は様々ですよねってことw

# re: プロジェクト分割指針 2007/10/11 18:37 黒龍

サーバ境界を越えるようなシステムだと境界を越えるDLLを分けたりしてます。中身はデータセット、引数用クラス、サービスインタフェース、例外クラスあたりですね。
こいつを画面側、サーバ側両方で使います。
画面側はexeには中さん同様スタートアップ(Main関数+アルファ)で実質はDLLにもろもろ記載。
サーバ側も実質はDLLでスタートアップは別に切り出ししてます。(こうしておけばexeでの単体テスト、運用環境もIISホストやサービスを切り替えやすいので)

# re: プロジェクト分割指針 2007/10/12 10:10 オノデラ

>1画面1DLLなんて作りはあり得ないことだけは確かで、1画面1EXEなんてあり得ません

メモリが極端に制限されていた時代の産物です。

# re: プロジェクト分割指針 2007/10/12 11:43 tatsugoro

細かなDLL分割は、自律アップデートのためにやったことあります。
いまだに54kbpsモデムにも対応できるように、小さなサイズでないとだめだったりするんです。
プログラミングしにくくなるのでお勧めできません。

細かなEXE分割は、古い主記憶メモリが少ないPCでも動くのが要件だったりとか、ソース管理ツール無いのに開発者開発会社が多いとか、単にどう作ればいいかしらなかったとか、そういう理由で見かけましたね。

数百もある画面のシステムもあるわけで、そういう時は、どういう分割にするか、いつも迷います。

# re: プロジェクト分割指針 2007/10/17 14:24 商人

あの・・
今の仕事、1画面1exeなんですけど。
orz
>1画面1DLLなんて作りはあり得ないことだけは確かで、1画面1EXEなんてあり得ません。

何でだめか教えてください、誰かすごい人。

# re: プロジェクト分割指針 2010/10/03 23:31 エロイ人

プロセス間通信が発生しないのなら1画面1exeで問題ないのでは?
本質的にプロセスを分けないことによるメリットは、メモリ節約、認証情報などの漏洩防止の2点かと思います。

タイトル
名前
URL
コメント