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

  • CasinoRoyaleMovie's channel

    CasinoRoyale

    1 AĞUSTOS 2006
  • DragsterMC Gaming

    DragsterMC G

    30 HAZİRAN 2013
  • Gan Eden Productions

    Gan Eden Pro

    11 HAZİRAN 2011