Czy w porządku będzie korzystać z HttpContext w warstwie z serwisami? Czy można używać cookies w serwisach? Czy to raczej elementy, które powinny pozostać w webie i po prostu przekazywać wartości do serwisów przez kontroler? Czy może jeszcze inne rozwiązanie powinno być zastosowane?
HttpContext to element infrastruktury, i tam powinien pozostać. Zmapuj go sobie na inny typ, który przekażesz do serwisu. Łatwiej to będzie też testować.
Czyli chcę coś w akcji zapisać do sesji albo cookies, to powinienem to zrobić w kontrolerze?
W kontrolerze albo w filtrze, zależy co to jest i po co. Tylko warstwa webowa powinna być świadoma istnienia czegoś takiego jak sesje, ciasteczka i HTTP w ogóle.
A z HttpContextu po prostu wyciągnij sobie odpowiednie wartości (nie cały) i udostępnij przez jakąś klasę, której implementacja będzie w webie, a kod serwisów będzie operował na interfejsie tej klasy.
Chcę wyświetlić użytkownikowi kilka widoków, gdzie wypełnij on pewne dane, następnie wyświetlę mu wszystkie widok z podsumowaniem tj. wszystkie informacje. W kolejnym kroku użytkownik zatwierdza je przyciskiem i powstaje nowy obiekt, który leci do bazy. Jak najlepiej przechowywać dane tak, aby nie zgubić ich po drodze, a także żeby użytkownik mógł cofnąć się i ewentualnie poprawić swoje dane?
Rozwiązałem to w ten sposób, iż w serwisie mam metody, które ustawiają pola obiektu przechowywanego w sesji, który finalnie przekazywany jest do funkcji, która zapisuje go do bazy danych. Co sądzicie o takim rozwiązaniu?