12

これは、既存のASP.NetベースのWebアプリ(バックエンドとしてLINQ-to-SQLベースのSQL DBを使用しています)と統合したい、シンプルでありながら効率的なアクティビティログフレームワークに関するものです。私はサービスアーキテクチャのようなものを使用してDB操作を実行しています。つまり、関連するLINQ操作を呼び出しています。私はほぼすべてのエンティティ(つまりDBテーブル)のサービスクラスを持っており、CRUD操作を処理します。

一般に、次のようなアクティビティを追跡する必要があります-Mr.Xが新しいアイテムを追加した、My.Yがこのフィルターで検索した、Mr.Zがグリッドの結果をExcelドキュメントにエクスポートした、など...および同様の簡単な操作ベースのロギング(フィールドレベルのロギングは今のところ遠いです)

それで、SO、他のフォーラム、およびWebでの2日間のR&Dで私が見つけたものは次のとおりです。

アプローチ1: 2つのテーブルを使用する単純な古い方法:Activity(すべてのアクティビティをそのアクターとともに格納する)とActivityType(アクティビティのタイプをリストする)。私はサービスレイヤーを持っているので、すべてのCRUDイベントをタップして関心のあるイベントをログに記録する「ServieBase」クラスを持つことができます。すべてがコード内から処理されます。

例: http ://dotnetslackers.com/articles/aspnet/Tracking-User-Activity.aspx

アプローチ2: データベースTRIGGERを使用して、テーブルレベルでイベントをタップしてから、ログを実行します。これは、アプリにとって完全に「抽象的」です。各テーブルに「LastModifiedBy」フィールドがあるので、「actor」データを取得してログを記録できますが、これによりDB操作が制限され、他のアプリアクティビティを個別に追跡する必要が生じる可能性があります。しかし、その価値があれば、私はそれを考えることができます。

アプローチ3:(概念的、より多くのガイダンスが必要)

3.1 MVCアプローチ-将来的にMVCを採用することを考えており、MVCでいくつかの効率的なロギングトリックを見つけました-(従来のL2SベースのWebアプリのようなものはありますか?)

ASP.NETMVCアプリケーションでユーザーアクティビティをログに記録 するasp.netmvcWebサイトのユーザーアクティビティ/アクションを追跡しますか?

3.2追跡サービスWindowsで「追跡サービス」機能に出くわしました-そのWebに相当するものはありますか?

http://msdn.microsoft.com/en-us/magazine/cc163466.aspx http://www.codeproject.com/KB/WF/WWF__Tracking_Service.aspx?msg=2879654

3.3その他-私が出くわしたがあまり説得力がないように思われる他のいくつかのオプション、または私は彼らが彼らの仕事をしているが私のものではないと言ったほうがいいです:-)

参照-

http://learn.iis.net/page.aspx/480/sample-web-analytics-tracking-module/

SQLプロファイラー: https ://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5054787.html http://technet.microsoft.com/en-us/ library / cc966515.aspx

それで、何と言いますか?任意の提案や新しい考えを歓迎します。今のところ、最初の2つのアプローチの間のどこかに着陸するようです。これは、将来、ログに記録するアクティビティを追加できるようにするのが簡単になるようにするためです。

ありがとうございました。

4

2 に答える 2

1

最初の 2 つのアプローチの方が単純で簡単に見えるため、最終的にこれらのアプローチを使用することになりました。何よりも、それらはより多くの制御を提供し、必要に応じて物事を柔軟に保つことができます (つまり、実際のバックエンドコーディングに近いため、アクセスしやすくなります)

他に大規模なレビューがなかったので、私はそれをマークしています。

于 2012-08-30T15:20:52.410 に答える
1

ツールキットに追加するもう 1 つの項目があります: Sql Server Change Tracking。しかし、ここで探しているすべてのことを行うわけではありません。Command patternを見てください。インターフェイス ITrackedCommand を作成し、それらをユーザーが実行できるコマンドとして実装します。次に、それぞれが ITrackedCommand.Log を自動的に呼び出すコマンド ディスパッチャーを介して実行されます。そうすれば、必要な場所にたどり着けると思います。

于 2011-01-10T20:01:50.097 に答える