質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

Q&A

解決済

2回答

5699閲覧

プロジェクトファイル(exeごと)の分離もしくは、結合する場合のメリットデメリット

GrayWingAliance

総合スコア218

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

0グッド

0クリップ

投稿2018/04/30 15:06

編集2018/04/30 17:37

Exeファイルは分離するべきか?

現在、IIS及びWindowsアプリケーションの両方で同等の機能を持ったアプリケーションの開発にあたっています。
これは、もちろんフロントとバックエンドは分離する予定なのですが、それぞれの機能がCLIコマンドとして使えるとAPIとして使いやすいのではないかと思い、exeとして、完全に分離しようかと考えています。

ただ、このAPI自体は外に配布するものではないので、必須の仕様ではなく、exe同士の呼び出しなどを考えたときにデメリットなどがどれくらいあるのかが気になりました。

もし、詳しい方がいらっしゃいましたら、ご教示いただきたいです。

追記:
わかりづらいという指摘がありましたので、整理してみました。
まず、上記の

** IIS及びWinodwsアプリケーションの両方で同等機能を持つアプリケーションの開発 **

という点でいくつかの方法があると考えており、自分の思いつく方法としては、以下の方法です。

  • 1つのプロジェクトとして実装する
  • フロント(GUI及びHTML)の実装とバックエンド(実際に機能として存在する部分)を分離して実装する方法
  • フロントとバックエンドを分離するほかにバックエンドの機能ごとに別のプロジェクト(dll)として実装する。
  • フロントとバックエンドを分離するほかにバックエンドの機能ごとに別のプロジェクト(exe)として実装し、フロントのexeから呼び出す。

1番目に関して

今回フロントが2種類存在していることからメリットがあまりないように感じます。
(アプリケーションの速度が2倍3倍とかわってくるなら、考えるかもしれません。)

2番目に関して

実装は一人のため工数を優先するなら、これがベストだとは感じてます。
(大きなデメリットがあれば知りたいです。)

3番目に関して

機能を分離したときに別に呼び出すためのexeファイルを使用しなければならないことを考えると、あまりメリットがないように感じます。(共有プロジェクトとして、作成するのであれば、1番目と2番目の中庸くらいになるんですかね?共有プロジェクトが、静的リンクであれば選択する余地はあるのかもしれません。)

4番目に関して

実装した各機能をコマンドラインから使用したいなという思いがあり、これも視野に入れています。
(パフォーマンスがあまりに出ない可能性があるとこれは除外せざるを得ないのかな、と思っています。)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2018/04/30 16:20

さっぱりわかりません。
guest

回答2

0

APIをexeで提供すると、そいつを呼び出すたんびにファイルをロードし、プロセス起こして実行し、プロセス終了しメモリを解放し...パフォーマンス落ちます。それでもかまわんなら。

投稿2018/04/30 23:04

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

一人で開発していて他人に配布する予定も無く独立した機能も提供しないならプロジェクトを分ける必要は特に無いと思います。

プロジェクトはアセンブリと一対一対応するので、Windows UI アプリと WEB UI アプリの二つを提供するのであればプロジェクトは二つで構いませんし、両者の共通部分を DLL として提供するのであれば三つで大丈夫です。

###追記

CLI が Common Language Infrastructure でなく Command line interface ならもう一つ追加です。

投稿2018/04/30 22:10

編集2018/04/30 22:29
Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

GrayWingAliance

2018/05/01 01:26

Windows UIとWeb UIの共通部分は確実に別プロジェクトとして切り分けた方が管理コストの面から、よいと思うのですが、それぞれ1つのプロジェクトでよいというのはなぜでしょうか? 共通部分に修正があったら、両方修正した方がよいということでしょうか?それとも片方修正すればもう片方にも修正が自動的に入る機能などがVisual Studioに存在するということでしょうか?
Zuishin

2018/05/01 01:27

複数のプロジェクトで同じソースを使いまわしできます。
Zuishin

2018/05/01 01:35

「既存のファイルを追加」でダイアログが開いたら目的のファイルを選択して「追加」ボタンの右のメニューボタンをクリックし、「リンクとして追加」です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問