ナンシーモジュールプロパティを「リクエストごとの」ストレージとして使用しても安全ですか?

tdubbs

一般的に悪い、悪いパターンであることに加えて、リクエストの存続期間中、オブジェクトをnancyモジュールのプロパティとして格納するためにこのようなことを行うことの影響はありますか?すべてが問題ないように見えますが、これが大規模な奇妙さをもたらすかどうかはわかりません...つまり、リクエスト間のクロストーク、メモリリーク、一般的なシェナニガン。

public class APIModule : NancyModule 
{
    public SomeConvolutedThing MyThing { get; set; }

    public APIModule()
    {
        Before += ctx => {
                try
                {
                    FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(HttpContext.Current.Request.Cookies["MyThing"].Value);
                    MyThing = JsonConvert.DeserializeObject<SomeConvolutedThing>(ticket.UserData);
                }
                catch
                {
                    MyThing = null;
                }             

            return null;
        };

        Get["/api/callit"] = parameters => {
         // check on status of MyThing before deciding what to return
        };
    }

}
サニーミレノフ

@StevenRobbinsが言ったように、あなたはそうすることができます、しかし問題は-なぜですか?提供したスニップの場合、コンストラクターでローカル変数を使用するだけで十分です。

私はこれを持ちたいと思う他のいくつかの理由を想像することができます:

  1. ルートはプライベートメソッドを使用して作業を行います。次に、プライベート読み取り専用フィールドが機能します(同じ理由で、各モジュールは要求ごとに作成されます)。またはさらに良いことに、これらのプライベート関数をパラメーターとしてmyThingを受け入れ、ctorでローカル変数を使用するようにします。

  2. モジュールの外部でこれにアクセスしたい-モジュールの外部でこれを保持するために独自のクラスを作成することをお勧めします。「リクエストごとに」登録し、beforerequestフックを使用してデータを入力し、他の機能が必要とするものに注入します。

(2)について詳しく説明します。

public interface IMyThingBag
{
    MyThing MyThing{get;set;}
}

public class MyBagFiller : IRequestStartup
{
    private readonly IMyThingBag _bag;
    public MyBagFiller(IMyThingBag bad)
    {
        _bad = bag;
    }

    public void Initialize(IPipelines pipelines, NancyContext context)
    {
        _bag.MyThing = new MyThing{.....};
    }
}

これで、チェーンのどこにいても(リクエストごとにパーツを登録する必要があります)、バッグを注入して使用できます:)

そこにデータが必要な場合は、モジュールに挿入することもできます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

シーンオブジェクトインスタンスをシーンのプロパティとして保存してもよろしいですか?

分類Dev

node.jsモジュール-オブジェクトとそのプロパティの両方を関数としてエクスポートします

分類Dev

トランザクション(TypeORM)で複数のオブジェクトを保存するために、エンティティリポジトリのグローバルインスタンスを使用しても安全ですか?

分類Dev

Debianベースのディストリビューションに独自のrpmパッケージをインストールしても安全ですか?

分類Dev

スクロールトップの値としてパーセンテージを使用できますか?

分類Dev

書き込み効率の高い「コンパクトストレージを使用してオプションを使用してテーブルを作成する」と「クラスタリング順序ストレージを使用してオプションを使用してテーブルを作成する」のどちらですか。

分類Dev

pipを使用してモジュールとラッパースクリプトを一度にインストールすることは可能ですか?

分類Dev

エンティティフレームワークでテーブル値とスカラーパラメータの両方を使用してストアドプロシージャを呼び出す方法

分類Dev

メソッドのネストされたプロシージャをwinapiコールバックとして使用しても安全ですか?

分類Dev

VBAクラスモジュール:別のプロパティを使用してオブジェクトからプロパティを取得します

分類Dev

プッシュ通知サブスクリプションオブジェクトの「p256dh」または「endpoint」キーの値をバックエンド内の識別子として使用しても安全ですか?

分類Dev

コンテキストプロパティとしてテーブルを使用したコンクリートタイプごとのテーブル

分類Dev

Linuxモジュールの開発/テストは仮想マシンを使用して安全ですか?

分類Dev

クラウドHSMサービスプロバイダーがシミュレーションソフトウェアではなく物理ハードウェアセキュリティモジュールを実際に使用していることを確認するにはどうすればよいですか?

分類Dev

エクスポートされたクラスのパブリックプロパティXは、外部モジュール「/ rxjs / internal / Observable」から「Observable」という名前を持っているか使用していますが、名前を付けることはできません

分類Dev

リクエストモジュールを使用して、レベルソコンテキストから単語の翻訳を含むサンプル文を取得することは可能ですか?

分類Dev

関数テンプレート内の静的ローカル変数のアドレスをタイプ識別子として使用しても安全ですか?

分類Dev

関数テンプレート内の静的ローカル変数のアドレスをタイプ識別子として使用しても安全ですか?

分類Dev

関数テンプレート内の静的ローカル変数のアドレスをタイプ識別子として使用しても安全ですか?

分類Dev

ジャクソンを使用して、オブジェクトの値(なしdelegate-またはプロパティベースクリエイター)からデシリアライズすることはできません

分類Dev

cakephp3でメールとプレーンテキストのパスワードを使用してログインをリクエストする方法

分類Dev

Gulpを使用してモジュール/ディレクトリごとに角度のある$ templateCacheを作成する

分類Dev

「ippでリクエストをインストールしても、「リクエストという名前のモジュールはありません」

分類Dev

プロパティを持つオブジェクトではなく、定義されたエイリアスを持つ単一の値として属性を返すモデルインクルードオプション

分類Dev

プライマリパーティションとして外部ストレージを使用する

分類Dev

エンティティフレームワークを使用してストアドプロシージャからテーブルデータを取得する

分類Dev

NBMSを使用してアプリケーションを更新している場合、以前にインストールされたモジュールを非アクティブ化することはできますか?

分類Dev

ルーターストアを使用して有効なモジュールでナビゲーションするときに、アクティブ化されたルートを取得するにはどうすればよいですか?

分類Dev

SecurityError:SeleniumPythonを使用してiframeのダウンロードリンクをクリックするとクロスオリジンオブジェクトエラーでプロパティ「ドキュメント」にアクセスするためのアクセス許可が拒否されました

Related 関連記事

  1. 1

    シーンオブジェクトインスタンスをシーンのプロパティとして保存してもよろしいですか?

  2. 2

    node.jsモジュール-オブジェクトとそのプロパティの両方を関数としてエクスポートします

  3. 3

    トランザクション(TypeORM)で複数のオブジェクトを保存するために、エンティティリポジトリのグローバルインスタンスを使用しても安全ですか?

  4. 4

    Debianベースのディストリビューションに独自のrpmパッケージをインストールしても安全ですか?

  5. 5

    スクロールトップの値としてパーセンテージを使用できますか?

  6. 6

    書き込み効率の高い「コンパクトストレージを使用してオプションを使用してテーブルを作成する」と「クラスタリング順序ストレージを使用してオプションを使用してテーブルを作成する」のどちらですか。

  7. 7

    pipを使用してモジュールとラッパースクリプトを一度にインストールすることは可能ですか?

  8. 8

    エンティティフレームワークでテーブル値とスカラーパラメータの両方を使用してストアドプロシージャを呼び出す方法

  9. 9

    メソッドのネストされたプロシージャをwinapiコールバックとして使用しても安全ですか?

  10. 10

    VBAクラスモジュール:別のプロパティを使用してオブジェクトからプロパティを取得します

  11. 11

    プッシュ通知サブスクリプションオブジェクトの「p256dh」または「endpoint」キーの値をバックエンド内の識別子として使用しても安全ですか?

  12. 12

    コンテキストプロパティとしてテーブルを使用したコンクリートタイプごとのテーブル

  13. 13

    Linuxモジュールの開発/テストは仮想マシンを使用して安全ですか?

  14. 14

    クラウドHSMサービスプロバイダーがシミュレーションソフトウェアではなく物理ハードウェアセキュリティモジュールを実際に使用していることを確認するにはどうすればよいですか?

  15. 15

    エクスポートされたクラスのパブリックプロパティXは、外部モジュール「/ rxjs / internal / Observable」から「Observable」という名前を持っているか使用していますが、名前を付けることはできません

  16. 16

    リクエストモジュールを使用して、レベルソコンテキストから単語の翻訳を含むサンプル文を取得することは可能ですか?

  17. 17

    関数テンプレート内の静的ローカル変数のアドレスをタイプ識別子として使用しても安全ですか?

  18. 18

    関数テンプレート内の静的ローカル変数のアドレスをタイプ識別子として使用しても安全ですか?

  19. 19

    関数テンプレート内の静的ローカル変数のアドレスをタイプ識別子として使用しても安全ですか?

  20. 20

    ジャクソンを使用して、オブジェクトの値(なしdelegate-またはプロパティベースクリエイター)からデシリアライズすることはできません

  21. 21

    cakephp3でメールとプレーンテキストのパスワードを使用してログインをリクエストする方法

  22. 22

    Gulpを使用してモジュール/ディレクトリごとに角度のある$ templateCacheを作成する

  23. 23

    「ippでリクエストをインストールしても、「リクエストという名前のモジュールはありません」

  24. 24

    プロパティを持つオブジェクトではなく、定義されたエイリアスを持つ単一の値として属性を返すモデルインクルードオプション

  25. 25

    プライマリパーティションとして外部ストレージを使用する

  26. 26

    エンティティフレームワークを使用してストアドプロシージャからテーブルデータを取得する

  27. 27

    NBMSを使用してアプリケーションを更新している場合、以前にインストールされたモジュールを非アクティブ化することはできますか?

  28. 28

    ルーターストアを使用して有効なモジュールでナビゲーションするときに、アクティブ化されたルートを取得するにはどうすればよいですか?

  29. 29

    SecurityError:SeleniumPythonを使用してiframeのダウンロードリンクをクリックするとクロスオリジンオブジェクトエラーでプロパティ「ドキュメント」にアクセスするためのアクセス許可が拒否されました

ホットタグ

アーカイブ