모바일 응용 프로그램이있는 MVC 프로젝트를 작업 중이므로 모바일 응용 프로그램에서 사용할 수 있도록 Web API를 사용해야한다는 것이 분명합니다.
웹 사이트 개발을 시작할 때 API를 만든 후 혼란스러워 API를 사용할지 또는 Business Object에 직접 액세스하는지에 대해 논의했습니다. 그리고 우리는 비즈니스 객체를 직접 사용하는 대신 웹 API를 소비하는 더 숙련 된 개발자의 의견 양식을 얻은 후에 끝났습니다.
이 솔루션 구조와 관련하여 혼란 스럽습니다.
1) 왜 우리는 Web API를 사용하고 HTTP 솔루션 (시간이 많이 걸리는)을 작성하여 동일한 솔루션에있는 비즈니스 오브젝트 대신 데이터를 가져 오거나 넣을 수 있습니다.
2) 인수를 한 후 클라이언트가 다른 클라우드 서버에서 API와 웹을 호스팅하고 API에만 스케일링을 적용하려는 경우 API와 웹에 액세스하기 위해 다른 URL을 원할 수도 있습니다 (논리적 임). 그렇다면 동일한 솔루션으로 MVC 응용 프로그램에서 Web API를 호출해야합니까?
3) 우리가 다른 호스팅에서 API와 웹을 호스팅하는 경우 웹은 WebClient를 사용하고 각 탐색마다 HTTP 호출을해야합니다. 맞아?
4) 우리가 다른 서버에서 API와 웹 호스팅을 모두 비즈니스 객체로 만들려면 BL의 변경 사항이 두 서버 모두에서 빌드를 업데이트해야합니다.
5) 또는 API 용 프로젝트를 하나만 작성해야하며 웹 인터페이스를 개발하기 위해보기 또는 HTML 페이지를 추가하여 ajax에서 API를 직접 호출 할 수 있습니다.
내 지식에 따르면 # 5는 최상의 솔루션이거나 API는 타사 액세스 전용입니다. 동일한 솔루션에 DB, EF, 데이터 계층 및 비즈니스 계층이있는 경우 API를 사용하여 HTTP 호출을 작성하고 비즈니스 오브젝트에 직접 액세스하지 않아야합니다. 모바일 응용 프로그램이나 데스크톱 또는 응용 프로그램에 액세스하려고 할 때 동일한 저장소 및 데이터 계층을 가질 때 API가 필요합니다.
내 시나리오에서는 모바일 응용 프로그램이 있으므로 API를 만들고 프로젝트 API 측에서는 비즈니스 계층 (별도의 프로젝트)이라고하고 비즈니스 계층은 데이터 액세스 계층 (별도의 프로젝트)이라고합니다. 따라서 내 질문은 API와 웹을 다른 서버에 호스팅하는 경우 프로젝트를 만들 때 비즈니스 계층의 메서드를 사용하고 비즈니스 계층의 .dll을 만들 때 HTTP 요청 인 API를 호출하면 비즈니스 계층의 메서드를 사용하는 것보다 시간이 오래 걸릴 수 있습니다. API 컨트롤러에서는 비즈니스를 json 형식으로 변환합니다.
인터넷에서 검색했지만 확실한 대답을 얻지 못했습니다. 나는 같은 요점을 다시 논의 하는 블로그 http://odetocode.com/blogs/scott/archive/2013/07/01/on-the-coexistence-of-asp-net-mvc-and-webapi.aspx를 찾았 습니다. 그 블로그에서 제 질문은 왜 시나리오 3을 고려해야합니까?
업데이트 : 우리는 다른 API 프로젝트와 MVC 프로젝트를 가질 수 있으며 jvascript를 사용하여 웹에서 API를 호출하거나 MVVM 패턴을 사용할 수 있습니다.