0

jQuery を使用して PageMethods を呼び出しています。特定の操作では、現在のユーザー資格情報を検証する必要があり、他の操作では、他の静的メソッドを呼び出す必要があります。サンプルコードは次のとおりです。

サンプル #1

[WebMethod]
public static void PostComment(string comment)
{
    UserAuth auth = new UserAuth();
    if (auth.isAuthenticated)
        {
            //Post comment here...
        }
}

サンプル #2

[WebMethod]
public static string GetComment(int commentId)
{

    commentDto comment = //get comment data from the database...
    string friendlyDate = ConvertFriendlyDate(comment.commentDate);

    return friendlyDate + " " + comment.text;
}

public static string ConvertFriendlyDate(DateTime commentDate)
{
    string friendlyDate = //call static utility method to convert date to friendly format

    return friendlyDate;

}

この種の操作を安全に使用できますか?

ページ メソッドを削除して、AJAX 要求に対して別の ASPX ページを呼び出す方がよいでしょうか?

4

4 に答える 4

1

http://msdn.microsoft.com/en-us/library/system.web.ui.page.aspxから

「このタイプ [ページ] の public static (Visual Basic で共有) メンバーはスレッド セーフです。インスタンス メンバーは、スレッド セーフであるとは限りません。」

したがって、静的メソッドがクラス スコープ オブジェクトに触れない限り、問題はありません。たとえば、これは悪いかもしれません:

static UserAuth auth;
[WebMethod]
public static void PostComment(string comment)
{
    auth = new UserAuth();
    if (auth.isAuthenticated)
        {
            //Post comment here...
        }
}
于 2010-12-14T15:38:34.677 に答える
0

クラスが不変であるかどうかを確認してください。変更された場合、誰もその状態を変更できません。スレッドの問題について心配する必要はありませんが、共有状態を変更する場合は、同期について考える必要がありますが、iあなたの場合、スレッドの同期は必要ないと思います。

于 2010-12-14T15:39:38.913 に答える
0

あなたが与えた例はうまく見えます。オブジェクトのインスタンスを再利用する場合は、そのオブジェクトがスレッド セーフであることを確認します。

于 2010-12-14T15:34:07.807 に答える
0

共有リソースに触れていない限り、スレッドセーフである必要があります。

于 2010-12-14T15:34:52.877 に答える