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

  • Alfredo Garcia

    Alfredo Garc

    25 Mayıs 2007
  • How To Cook That

    How To Cook

    16 NİSAN 2011
  • ThisWeekYT

    ThisWeekYT

    14 Mart 2013