コード構造を改善しようとしているので、主にサービスを処理する方法に関する次の点と質問について入力を得ることができるかもしれません。
サービスはプレゼンテーション層に依存してはならないので、 httpcontext のようなものをコンストラクターなどを介してサービス/サービス関数に渡すことは悪い習慣ですよね?
相互に参照するサービスを持つべきではありませんか? たとえば、リポジトリの依存関係のように、「下向き」にのみ機能する必要がありますか? それとも大丈夫と考えられますか?
サービスには、データベース/リポジトリからの情報のフィルタリングと処理に直接関連する機能のみが含まれますか?それとも、たとえば、純粋に暗号化とランダム文字列/パスワードの生成専用のクラス、またはプロバイダーの依存者機能を処理するクラスもサービスと見なすことができますか? それとも、おそらくユーティリティクラスと見なされるのでしょうか?
サービス内でセッションを操作するための適切で受け入れられている方法はありますか、またはこれをコントローラーに渡してそこで処理する必要がありますか?