Aktualnie pracuję nad aplikacją webową C# MVC REST i próbuję wybrać jedną z dwóch możliwości naszego projektu.C# Static Method vs Object Instance
Bez wchodzenia zbyt głęboko w nasz projekt, zamierzamy mieć klasę dostępu do danych, którą nazwiemy DataSource
. Każdy DataSource
będzie musiał wykonać małe, zamknięte bloki logiczne, aby poprawnie zbudować odpowiednią odpowiedź. Z powodu chęci do szybkiego ładowania kodu w przyszłości, nie chcemy po prostu mieć tych funkcji na DataSource
, zamiast tego chcielibyśmy, aby były dostarczane przez inne zespoły. Mamy dowód na to, że to wdrożone, i jak dotąd, tak dobre.
Co próbuję zdecydować między jest pisanie klasy statycznej z pojedynczą statyczną funkcją ExecuteQuery
lub pisanie metody fabryki do tworzenia wystąpień tych klas, które mają metodę instancji o nazwie ExecuteQuery
.
Jakie są względy wydajnościowe między tworzeniem wielu obiektów krótkotrwałych dla każdego żądania w porównaniu do wywoływania metod statycznych?
Intuicyjnie metody statyczne byłyby szybsze, ale już się spodziewam, że napotkam trochę bólu głowy, wywołując je przez odbicie (w celu wsparcia wymagającego kodu).
Jeśli nie ma ogromnej kary za obiekty krótkotrwałe, to mogą wygrać tylko w prostocie.
Istotne informacje o naszych oczekiwać obciążenia:
- Czasy reakcji w 300ms - zakresu 800ms
- średnie obciążenie około 2000 klientów internetowych
- obciążenia szczytowego około 4000 klientów
- Klienci robią zapytania co 2 - 5 sekund
- Maksymalna stawka klienta 1 zapytanie co sekundę
Ponadto każde z nich tworzyło maksymalnie 8, średnio 3 z tych wystąpień.
Prawdopodobnie twój zamiar użycia odbicia spowoduje większą skuteczność niż użycie statycznego względem instancji. Jak skomentowali inni, powinieneś wybrać formę, która najlepiej nadaje sens. Alternatywnie, ponieważ masz pewne zamierzone metryki, możesz sfałszować implementację statyczną/instancji i zorientować się, na jakie obciążenie napotkasz. –