1

私が.netの世界にいて、ロギング、認証、トランザクション管理などの横断的な懸念を実行したいときに使用される一般的なパターンであるMVCを使用する場合、AOPと組み合わせたDIを使用して、基本的にプロキシ/ウィービングが必要なメソッドに属性を配置します.

したがって、次のようになります。

public class SomeController
{
   [Authenticate]
   public ActionResult SomeAuthenticatedAction() {}

   public ActionResult NotAuthenticatedAction() {}
}

したがって、上記の場合、 SomeAuthenticatedAction が呼び出されたときに、承認 Cookie の要求がチェックされ、その周りにいくつかのロジックが実行され、401 または何かでユーザーが爆撃されます。実行時にフックしてプロキシすることを知っている属性があるため、これを行うことを知っています。

今、私はJavaScriptの土地にいて、同じ種類の機能を手に入れようとしていますが、そのプラットフォームに最適な方法を実行しています. したがって、javascriptには一種の属性パラダイムがないため、nodejsでこれをどのように行うべきか疑問に思っていapp.* (get,post etc)ます.これも理想的ではありません。

では、実際にロジックを入れずに、メソッドに横断的な懸念を適用する必要があることを示す方法はありますか? このように、Web コードは認証メカニズムを認識せず、アプリのエントリ ポイントは特定のメソッドを認識しません。メタデータを含むすべてのメソッドが必要であることを認識しているだけなのでしょうか?

AOP をあまり使用しない場合は、なぞなぞで話していると思うかもしれませんが、このようにすることで、コードのテストと保守がはるかに簡単になり、アプリケーションを非常に迅速に再構成することもできます。

これまでのところ、パズルのプロキシ部分を実行できるHookerを見つけましたが、基になるリクエスト オブジェクトを取得する方法はよくわかりませんが、JS でのオブジェクトのプロキシ処理がそれほど面倒ではないと思いますが、傍受する方法を特定する方法を見つける必要があるだけです...どんな情報でも素晴らしいでしょう。

== 編集 ==

もう少し読んだ後、私がすべきことは、ミドルウェア層を使用して必要なことを行うことのように見えるかもしれません。これにより、少なくともコードが単純になり、ルートの意図がより明確になるからです。より多くのことを見つけたり、より良い答えが現れたら、戻ってくるのを見続けます.

4

1 に答える 1

0

答えがなかったので、ルートで実行する必要があるロジックを含むクラスを作成し、ミドルウェアのエントリ ポイントとしてエクスポートされる関数を作成したことについて言及します。そうすれば、ロジックを単体テストし、ミドルウェアを使用してそのルートに「懸念」を注入できます。

于 2013-08-08T12:56:21.287 に答える