2011-01-25 14 views
5

Belirli bir web hizmetinde bulunan web yöntemleri koleksiyonu için bir sarıcı yazmam gerekiyor. Aynı tür bir nesneyi etkilediğinden, bu yeni sarıcı yöntemini aynı hizmete yapıştırmak mantıklıdır.Web yöntemlerini aynı web hizmetinden arama

Bu web yöntemlerinin çoğu, diğer dosyalarda statik yöntemleri çağıran, ancak bu statik yöntem çağrıları öncesinde bazı güvenlik mantığına sahip olan ince yöntemlerdir. Sarmak istediğim her yöntem çağrısından önce güvenlik mantığını yeniden oluşturmak yerine, yerel olarak aynı hizmetin içinden diğer web yöntemlerini çağırmak mümkün mü yoksa bu kötü uygulama mı? İşte

bir örnek: Eğer olabildiğince olarak temiz fiili uygulamasından web hizmetinin kamu arayüzü ayırmak isteyeceksiniz Genelde

[WebMethod] 
public int SmallMethod1(int a) 
{ 
    //SecurityLogic 
    return AnObject.StaticMethod1(); 
} 

[WebMethod] 
public int SmallMethod2(int b) 
{ 
    //SecurityLogic 
    return AnObject.StaticMethod2(); 
} 

[WebMethod] 
public int WrapperMethod(int c) 
{ 
    return AnObject.StaticMethod1() + AnObject.StaticMethod2(); 
} 

cevap

4

, sizin örnekte siz AnObject onları kapsül içine alarak yapmış Bu, kapsüllenmiş metotların ayrı ayrı test edilmesini sağlar (bu özellikle web metotları ile büyük bir problemdir).

bir test perspektifinden bunu yaparken daha ziyade öneririm söyledikten:

[WebMethod] 
public int WrapperMethod(int c) 
{ 
    return AnObject.WrapperMethod(c) 
} 

Bu oldukça AnObject.StaticMethod1() + AnObject.StaticMethod2() için test yeniden çalışmak yerine, test WrapperMethod doğrudan (AnObject kapsüllü) testleri yazmak için izin verecek Ünite testlerinizde - bu hızlı bir şekilde dağınık olur çünkü artık iki farklı noktada aynı mantığa sahipsiniz.

+0

Test yönleriyle ilgili önemli noktalar. Teşekkürler! –

0

Hiç de değil. Bu mantığı kapsüllemek için çok iyi bir fikir. Bir AnObject.WrapperStaticMethod() olabilir.

İlgili konular