ライブラリは、少なくともAspectJと比較する必要があります。.NETの世界で使用する成熟したAOPライブラリはありますか?
答えて
あなたは箱から出してAOPを備え、さまざまなIOCコンテナを試すことができる(例えばSpring.Net強力なAOPのfreameworkがあり、城ウィンザーはInterceptorsを持っているので、Unityはない)、それらまたはPostsharpのようなIL-ウィーバーを使用してSnapを使用しています。開発の初期段階ではあるが - - 有望に見える
更新は 私はちょうど「Afterthought」を知りました。 Postsharpの代わりにOpenSourceを目指しています。
そして、私は同様にIL織りが可能であるMono.Cecilを言及するのを忘れてしまった:簡単な英語で
を、セシルと、あなたは、既存のマネージアセンブリをロード含まれるすべての種類を参照し、その場でそれらを変更することができます変更されたアセンブリをディスクに戻して保存します。
Fodyは、製織にCecil toを使用し、ビルドフェーズでそのステップを統合することができます。いくつかの便利なアドイン(例えば、INotifyPropertyChanged
を実装するか、コンパイル後にパブリックプロパティからToString
メソッドを生成します)が付属しています。
私はまったく同じことを何年も見てきましたが、私は自信をもって、.Netの中には、あらゆる面でAspectJに匹敵するものは何もないと自信を持って伝えています。
.netの世界では、ダイナミックプロキシがよくAOPメカニックとして使用されていることがわかりました。 PostsharpやAfterthoughtsのような実際のIL織りをサポートするツールはほんのわずかですが、どちらもアスペクトオリエンテーションを行う方法として属性を使った宣言型プログラミングがあります。彼らはどちらも使いやすいですが、AOPの背景(AspectJ)から来た場合は、AOPと呼ぶのかどうかはわかりません。
これまでのところ、「真の」AOPパターン(正式に10年前に定義された、つまりポイントカット、ジョインポイント、アドバイス、アスペクトなど)の.Net実装は見られませんでした。おそらく、一般的なAOPであり、一般的にはIoCと属性で通常十分なロギング、トランザクション管理、例外ポリシーに限定されます。
ビジネスルールとドメイン主導型コードのAOPは、.Netのこの段階ではまだほとんど見られません(どんなツールでもサポートされていません)。
私はこのギャップ(http://sheepaop.codeplex.com)を埋めるようになったばかりの私が最近出会ったオープンソースプロジェクトがありますが、まだ非常に早いですが、AspectJ-ishの実装として期待しています。先ほど言いましたように、AspectJ(あなたの質問によると)とはまだ比較されませんが、ressemblanceは非常に明白であり、意図的です。
質問が.NETについてあるので、強力なメタプログラミング機能を持つNemerle言語を使用できます。
Nemerleは、マクロ属性でC#ソースをコンパイルすることもできます。 この方法でC#でAOPを取得できます。 –
NemerleコンパイラにはC#コンパイラが含まれていますか? – ironic
はい、NemerleはC#のソースを解析してコンパイルできます。 .csファイルをプロジェクトに追加すると、それが動作します。さらに、VB.NetのようなNemerleコンパイラにフロントエンドを書くことができます。ソースはhttps://github.com/rsdn/nemerle/tree/master/snippets/csharp-parserです。 –
- 1. .Net CLR用のかなり成熟したLisp/Scheme/Clojureコンパイラはありますか?
- 2. .NET世界のフロントエンド開発者 - 何を知る必要がありますか?
- 3. ANTLR Dターゲット - 成熟した実装はありますか?
- 4. SOAアーキテクチャ.NETを使用した実世界サンプル
- 5. tcp traversalを達成する成熟した方法はありますか?
- 6. .NETの世界にはどのようなOSソフトウェアがありませんか?
- 7. こんにちは、ライブラリを使用していない世界
- 8. 実世界のC++ライブラリ
- 9. .netでAOPを使用したロギング
- 10. 現実世界で出会うiPhoneハッカーコミュニティグループはありますか?
- 11. 2Dの世界を作成します
- 12. Javaの世界で可変長のマップがありますか?
- 13. 実際の世界でのContravarianceとCovarianceの使用方法.net
- 14. .Netを使用してリモートでエラーを記録するためのフレームワークまたはライブラリはありますか?
- 15. 実世界のアプリケーションでレクサー/パーサーを効果的に使用したことがありますか?
- 16. Cの成熟標準ライブラリ
- 17. .NET OpenSource IMapライブラリはありますか?
- 18. 現実世界のカスタム.NET属性の使用
- 19. PCLプロジェクトで.NETライブラリを使用する方法はありますか?
- 20. C++世界にスレッド固有のクロックがありますか?
- 21. ベストディストリビューションのシナリオで成熟したアルゴリズムや理論がありますか?
- 22. SOAの世界で大量にあります
- 23. EXCELの式またはマクロで "世界"の文字列を検索しますが、 "世界的な"単語を含むべきではありません。
- 24. .NETのプリミティブは、値の世界の半分、参照の世界の半分のように見えます
- 25. Word文書用の無料の.NETライブラリはありますか?
- 26. Yii 2のAOPはありますか?
- 27. .NET用のXSLT 2.0ライブラリはありますか?
- 28. .NET 2.0用のTwitterライブラリはありますか?
- 29. R:世界ネットワークマップの作成
- 30. ナビゲーション用のカスタムマップ(世界地図ではない)を作成します。
+1 PostSharpの場合、非常に強力で使いやすいです。 –