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

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

ただいまの
回答率

90.62%

  • C#

    6834questions

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

  • Visual Studio

    1763questions

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

  • .NET Framework

    444questions

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

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 237

GrayWingAliance

score 140

 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番目に関して

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Zuishin

    2018/05/01 01:20

    さっぱりわかりません。

    キャンセル

回答 2

checkベストアンサー

0

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

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

追記

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/01 10:26

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

    キャンセル

  • 2018/05/01 10:27

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

    キャンセル

  • 2018/05/01 10:29

    なるほど、調べてみます。

    キャンセル

  • 2018/05/01 10:35

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

    キャンセル

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • C#

    6834questions

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

  • Visual Studio

    1763questions

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

  • .NET Framework

    444questions

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

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