質問

私の維持に対応したアプリケーションの設計のようになります:

messy code --abuses--> simplePoco (POCO data capsule)

データのカプセルである単純なクラスのsetterか、セッター(物性)を使用するDIの枠組みと一貫して使用は、IoCのコンテナをインスタンスのデータをカプセル(ラッキー!).

の問題については親権者の方の同意が必要を紹介し、"変更届"の仕組みを simplePoco

messy code --abuses--> simplePoco 
               |
               V
         changes logger,
         status monitor
     (I wanna know about changes)

いくつかのオプション:

  • をご紹介 IPoco を変更したり汚コードができるよう、い simplePoco は、速や notifyingPoco りたいときに変更通知を選択的に遅)?ま---

  • 全ての仮想ロマびユーザーインターフェイス notifyingPoco クラストップ simplePoco (低速)?

  • デザインパターンがわからない?

では、クライアント/サーバシステムを構築していると思うだけの変更はサーバーの一部なのでできれば、むしろ ない タッチの汚コードまたはクライアントコードがserializersと反省と怖い忍者スタッフが...)してはならないが破損します。

うインターフェイスを利用防止JITからinliningの電話getter/setter?

どの道のりを考えるとsimplePocoインスタンスが 虐待を受け?

役に立ちましたか?

解決

バーチャルコールの任意の種類(クラスのインターフェイス上、または直接か - のすべてのはインターフェース呼び出しが仮想です!)CLRのJITによってインライン化されることはありません。いえ、インタフェースの呼び出しは、彼らは常に潜在的にリモート/プロキシパスを通過しなければならないので少し遅いです、そして、彼らは関数の本体に入る前に、クラスの先頭にポイントをthisポインタをシフトする必要があるため。クラスはMarshalByRefObjectから派生されていない限り、直接クラスメンバ上の仮想呼び出しは、プロキシのチェックをヒットしない、シフトを行う必要がない、そして決してます。

これら二つの間のパフォーマンスの違いは非常に軽微なものであるので、あなたはおそらくそれらを無視し、代わりに、実装のデザインと使いやすさの清潔さに焦点を当てるべきである、と述べたこと。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top