2012-09-11 4 views
3

MVC3 환경에 고전적인 asmx 웹 서비스를 통합하는 가장 좋은 방법을 찾고 있습니다. 커널/컨테이너를 둘 사이에 공유하고 싶습니다. ,MVC3/Ninject 3 환경에서 ASMX 웹 서비스 사용 N/W

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[System.Web.Script.Services.ScriptService] 
public class Service : WebServiceBase 
{ 
    [Inject] 
    public IContextProvider ContextProvider { get; set; } 
... 

이 공유에 WebServiceBase, PageBase 사이에 공유 된 KernelContainer를 사용하여 커널을 이전 Ninject.Web을 사용 : ASP.NET 웹 형태의 과거

나는 다음과 같은 사용 할 수 있었다

이제 Ninject.Web.MVC를 사용하여 MVC3 응용 프로그램을 얻었으며 같은 커널/바인딩을 사용하여 동일한 공간에서 작동하려면 이전 웹 서비스가 필요합니다. 이처럼 설치 프로그램을 실행하는 데 필요한 정보를 찾을 수 없었습니다.

누군가가 나를 가리킬 수있는 아이디어, 샘플 또는 게시물이 있습니까 (asmx 웹 서비스를 사용하지 않는 것 외에)?

답변

4

MVC 프레임 워크는 Ninject for MVC와 통합되는 DependencyResolver를 지원합니다. 이 ASMX 웹 서비스에 대한 사용자 정의 공장을 정의 할 수는 없지만, 당신은 다음 작업을 수행 할 수 있습니다 :

public class Service : WebService 
{ 
    public IContextProvider ContextProvider {get;set;} 

    public Service() 
    { 
    ContextProvider = DependencyResolver.Current.GetService<IContextProvider>(); 
    } 
} 

당신이 당신의 서비스 구축시 의존성을 주입 할 수는 없지만, 당신은 생성자 내에서 직접 확인할 수 있습니다.

+0

감사합니다.이 기능이 작동하며 지금해야 할 일입니다. 불행히도이 서비스는 ASP.NET MVC에 직접 연결됩니다. ( –

+1

@NateRickard 사실, DependencyResolver는 종속성 주입 문제를 일반화하려고 시도하는 구성 요소입니다. 각 IoC 프레임 워크가 자체 시스템을 구현하는 대신 DependencyResolver 시스템을 다른 시스템과 상호 작용하기 위해 연결할 수 있습니다 라이브러리. –

+0

그래, 그 점에서 그것은 좋은데 Ninject에 넥타이하지 않습니다. 내가 가진 문제는이 서비스가/다른 환경에서 사용할 수 있다는 것입니다 - ASP.NET 웹 폼, MVC 등등. 그래서 DependencyResolver를 사용하면 그 네임 스페이스에 있기 때문에 MVC의 의존성. –