2011-06-21 10 views
5

Właśnie zauważyłem, że moja usługa programu Excel działa znacznie szybciej. Nie jestem pewien, czy są jakieś warunki środowiskowe. Wprowadziłem zmianę do metody. Gdzie wcześniej byłoC# - Czy WebMethodAttribute może niekorzystnie wpłynąć na wydajność?

class WebServices{ 
[ WebMethod(/*...*/) ] 
public string Method(){} 
} 

Teraz jego atrybutem jest usuwany i sposób przeniesiony do innej klasy

class NotWebService { 
public string Method(){} 
} 

Ale zrobiłem to, ponieważ metoda ta jest nazywana nie lub wykorzystywane jako usługa. Zamiast tego został wywołany za pośrednictwem tego samego zestawu i wewnątrz tego samego zestawu. Teraz, gdy wywoływam metodę, wydaje się, że czas odpowiedzi uległ zwiększeniu. Czy WebMethodAttribute może spowolnić lokalne połączenia?

Odpowiedz

2

Rzeczywiście atrybut WebMethod dodaje wiele funkcji w celu udostępnienia metody za pośrednictwem usługi XML WebService.

Część funkcjonalności, które powoduje napowietrznych są następujące cechy uważane za część konfigurowalnego rzeczy do sposobu internetowej:

  • BufferResponse
  • CacheDuration
  • Session Handling
  • Postępowanie transakcja

F więcej informacji lub po prostu sprawdzić WebMethod attribute documentation

Pozdrowienia,

0

wiem, jest to stara sprawa, ale aby uniknąć dezinformacji czuję potrzebę, aby go odebrać i tak.

Nie zgadzam się z oceną wacdany.

Metoda oznaczona jako webmethod nie powinna mieć dodatkowego narzutu, jeśli jest wywoływana bezpośrednio jako metoda, a nie przez HTTP. W końcu kompiluje się do dokładnie tego samego języka pośredniego, innego niż obecność niestandardowego atrybutu.

Dodanie niestandardowego atrybutu może mieć wpływ na wykonanie, jeśli jest to jedno z wyjątków dla kompilatora lub środowiska wykonawczego. WebMethodAttibute nie jest ani.

Chciałbym następnie rozważyć, czy nie ma żadnych dodatkowych narzutów do budowy obiektu usługi webservice. Jeśli dodałeś konstruktor, może być trochę, ale domyślnie nie ma prawdziwego narzutu, ponieważ konstrukcje klas bazowych są trywialne.

Dlatego jeśli naprawdę wywoływałeś metodę bezpośrednio, nie powinno być prawdziwego nadmiaru, mimo że jest to również dostęp do usługi usługi sieciowej. Jeśli doświadczyłeś znaczącej różnicy, dobrze byłoby sprawdzić, czy tworzyłeś prawdziwą klasę WebServices, a nie jakoś niewłaściwie używać serwera proxy usługi internetowej, być może z powodu dodania odwołania do usługi WWW do projektu.

Powiązane problemy