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

  • brokenbellsVEVO

    brokenbellsV

    11 EYLÜL 2009
  • circuschina

    circuschina

    16 Mart 2007
  • DanceOn

    DanceOn

    6 Mayıs 2006