SORU
13 Aralık 2009, Pazar


Nerede geçerli arama için XML veri saklamak için? ThreadStatic güvenli mi?

Benim hizmet çalışırken, birçok sınıf Kullanıcı erişim gerekir.Geçerli (Bu benim kendi Kullanıcı sınıfı). Güvenle [ThreadStatic] değişken _currentUser saklayabilir miyim? XML konuları yeniden? Eğer durum buysa, ne kadar temiz ThreadStatic verileri olacak? Eğer ThreadStatic kullanarak güvenli değil ise, veri koymalıyım? OperationContext içinde bir yer var.Bu tür verilere deposu nerede mevcut?

12/14/2009 düzenleme:ThreadStatic bir değişken kullanarak güvenli olmadığını iddia edebilirim. XML iş parçacığı bir iş parçacığı havuzu ve ThreadStatic değişken asla yeniden.

CEVAP
13 Aralık 2009, Pazar


IExtension<T> bir uygulama göstermiştir bir blog post var. Ayrıca discussion şuna bir göz atın.

İşte önerilen bir uygulama:

public class WcfOperationContext : IExtension<OperationContext>
{
    private readonly IDictionary<string, object> items;

    private WcfOperationContext()
    {
        items = new Dictionary<string, object>();
    }

    public IDictionary<string, object> Items
    {
        get { return items; }
    }

    public static WcfOperationContext Current
    {
        get
        {
            WcfOperationContext context = OperationContext.Current.Extensions.Find<WcfOperationContext>();
            if (context == null)
            {
                context = new WcfOperationContext();
                OperationContext.Current.Extensions.Add(context);
            }
            return context;
        }
    }

    public void Attach(OperationContext owner) { }
    public void Detach(OperationContext owner) { }
}

Bu gibi kullanabilirsiniz:

WcfOperationContext.Current.Items["user"] = _currentUser;
var user = WcfOperationContext.Current.Items["user"] as MyUser;

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • grickle

    grickle

    22 AĞUSTOS 2006
  • Julian Smith

    Julian Smith

    31 EKİM 2006
  • TrenchTech Computer Repair Tutorials

    TrenchTech C

    19 EYLÜL 2014