2011-02-11 6 views
1

DB 및 캐시의 모든 참조 데이터를로드 (사용자 지정 캐시 서버)하는 RefData 서비스 (비즈니스 서비스)가 있습니다. 많은 컨트롤러가이 데이터가 필요할 때마다이 서비스를 호출합니다.ASP.NET MVC - 하나의 비즈니스 서비스가 다른 서비스를 호출해야합니다.

또한 가격 결정을 위해 외부 WebService에 연결하는 가격 책정 서비스 (Business Service)가 있습니다. 일단 DB에서 일부 콘텐츠 데이터를 가져와 가격 책정 응답과 병합해야 최종 가격을 넘어야합니다. 컨트롤러. 이제 대부분의 데이터 루틴은 이미 RefData 서비스에 의해 노출되어 있습니다. Ref Data Service에서 노출되고 캐시 된 동일한 데이터를 얻으려면 Pricing Service에 중복 메소드를 작성하고 싶지 않습니다. 또한 내 컨트롤러가이 데이터를 필요로하고 가격 책정 서비스에 속하지 않기 때문에이 루틴을 가격 책정 서비스로 옮길 수 없습니다.

가격 책정 서비스에서 RefData 서비스를 호출해야하는 경우 데이터를 전송하기 전에 컨트롤러에 응답을 넘길 수 있습니다. 하나의 비즈니스 서비스가 다른 서비스를 호출하는 경우 업 샘플이나 샘플을 찾을 수 없습니다.

저는 ASP.NET MVC 2와 Unity를 IOC로 사용하고 있습니다. 어떤 접근 방식을 취해야하는지 제안 해 주셔서 감사합니다.

답변

0

내 앱의 시작 부분에 모든 서비스가 IOC 컨테이너에 등록됩니다. 사람이 다른 사람에게 전화 할 필요가있을 때, 나는 필요한 사람을 해결하고 그것을 부르면됩니다.

아마도 내가 당신의 질문에 대해 뭔가를 놓치고 있습니까? Global.asax.cs에서

: 하나 개의 서비스가 다른 서비스를 필요로하는 것은 매우 흔한 일

 var repository = IoC.Container.Resolve<IAuthorizationRepository>(); 
     repository.DoSomething(); 
+0

rboarman, 나는 그것을 할 수 있음을 알고 있습니다. 내가 한 말은 어디에서나 제안되는 것을 보지 못했거나 그러한 시나리오를 처리 할 수있는 더 좋은 방법이 있다는 것을 알기 때문에 One Service를 다른 사람에게 전화하는 것이 좋습니다. 나는 그것이 내 질문에 rigght 넣어하지 않으면 미안 해요 ... – Alex

+0

그것은 매우 일반적이며 어떤 복잡한 모든 시스템에 의해 필요합니다. – rboarman

0

: 나는 서비스를 필요

 var authorizationRepository = new AuthorizationRepository(session); 
     IoC.Container.RegisterInstance<IAuthorizationRepository>(authorizationRepository); 
     var permissionBuilderService = new PermissionsBuilderService(session, authorizationRepository); 
     IoC.Container.RegisterInstance<IPermissionsBuilderService>(permissionBuilderService); 

. 하나의 예가 권한 서비스입니다. 다른 서비스에서 서비스가 필요하다면, 아마도 당신이 상속 할 수있는 기본 서비스를 만드는 시간입니까?

관련 문제