「コア」ライブラリ設計のコンテキストでは何を意味するのでしょうか?
-
16-09-2019 - |
質問
私は、多くの場合、他の開発者が「CORE」でライブラリの命名を参照してください。それが実際に何を意味するのでしょうか?
解決
私の意見では、COREは必要不可欠なものを意味します。数学関数とユーティリティの目的を持つ他の機能は、コアではありません。彼らはむしろ "Utilsの" です。
それなしで、他の人は意味をなさない -コアは、他のすべてが存在する可能部分です。コアではない他のものは、(必ずしも可能な設計によって)削除されることができます。
他のヒント
私はビングは "コア" を定義するを尋ねました。それが思いついた定義の一つだっます:
重要な部分:中央または最も 何かの重要な部分
だから、基本的には、誰かの名前ライブラリコアは、それが彼らのアプリケーションおよび/またはフレームワークの中心的かつ最も重要な一部である場合: - )
私はその規則を使用し、それは基本的には本当に自分のライブラリーに場所がない、一般的なユーティリティクラスとコードとコアクラスライブラリです。
などのクラスの多くにたとえば、拡張メソッド、余分な数学関数、彼らのために全体の他のプロジェクトを正当化するのに十分な大きさではありません物事ます。
どのような他の人でも、私は見当がつかないん。
私は、アプリケーションの抽象的な心などのコアを表示します。 コアは、典型的には、アプリケーション全体の動作を定義するのに十分なロジックを実装します。
だから私のビューのデータ・アクセスおよびプレゼンテーションでコアの一部であってはなりません。これは、Webとデスクトップアプリケーションの両方が同じコアモジュールを共有することができます。
あなたのケースでは、私はコアモジュールに含まれているビジネス・ロジック、エラー処理や構成を持つことになります。
私はまた、大きなコアモジュールを持つための主な理由は、より小さなモジュールの多くを維持することのコストを回避することであることを信じて。
すでにここに掲載の回答に基づいて、どうやらそれはライブラリの開発に関連する「コア」を定義のない「標準」方法はありません。
だから私はあることについて心配しないだろう「正しいです。」あなたが合うように用語を使用します。
これはおそらく異端と判断されますが、データアクセス、ビジネスロジックなどのために別々のプロジェクトと構造化ソリューションの数年後、私は可能性が高くなるようにMyApp.Coreと呼ばれる単一のプロジェクトにそれらの層を置くために、前方つもりです基本的なソリューションは、コアプロジェクトとUIプロジェクトで構成されます。これは、他のプロジェクトが今まで(例えばMyApp.Tests)は必要ありませんまたは追加されると言うことはありませんが、の基本的なの構造は、それらの2に基づくものであろうと。
編集:コメントで提案ごとに要約します。
。私はあなたがそのベンダーから使用することができます他のライブラリのための前提条件としてコアを参照してください。ベンダーは、いくつかの独立したパッケージを提供することがありながら、そう、彼らはすべての物事を成し遂げるためにコアに依存しています。それ以外の場合は深刻なコードの重複になることがあります。