MVC에서 컨트롤러와 라우터의 차이점은 무엇입니까?


19

그것들은 같은 것을 의미합니까 (URL을 액션에 첨부하거나 액션을 URL에 첨부) 또는 누락 된 차이점이 있습니까?

예 : http://github.com/dannyvankooten/PHP-Router vs. http://konstrukt.dk


1
그 라우터는 나에게 영광스러운 프록시처럼 들립니다
래칫 괴물

모델 (데이터베이스), 컨트롤러 (라우터) 및보기 (페이지) 만 있으면됩니다. 그게 다야. 라우터와 컨트롤러가있는 경우 복잡하고 라우터를 사용하여 데이터를 컨트롤러에 전달합니다. 컨트롤러는 라우터이지만 라우터는 컨트롤러가 아닙니다. code.tutsplus.com/tutorials/mvc-for-noobs--net-10488
볼륨 1

답변:


15

라우터:

라우팅은 URI 엔드 포인트 (기본 URL 다음에 오는 URI의 일부)를 가져와 매개 변수로 분해하여 요청을 수신해야하는 해당 컨트롤러의 모듈, 컨트롤러 및 조치를 판별하는 프로세스입니다.

제어 장치:

Controller는»Controller 패턴을 구현합니다. 여기서 모든 요청은 컨트롤러에 의해 인터셉트되고 요청 된 URL (라우터의 요청 라우팅)을 기반으로 개별 액션 컨트롤러로 디스패치됩니다.


4

프런트 엔드 - 컨트롤러는 과 협력해야 라우터디스패처 에 기초하여 결정하기 (HTTP) 요청 에 대한 응용 프로그램 콘크리트 작업이 실행되어야하며 다음을 전달합니다.

디자인이 얼마나 설명에 따라 일부 컨트롤러 없이 작업 라우터 그리고 그들은 자신의 라우팅 또는 라우팅 요청이 처리되는 방법을 설계에 암시 적 않습니다.

일부 Dispatcher는 s의 도 통과 요청 (가) 파견에 객체를 액션 메소드를 . 그런 다음 동작 방법요청 을 부분적으로 분해하여 컨트롤러 동작 조차도 요청에 따라 일부 라우팅을 수행 할 수 있습니다 . 이에 대한 일반적인 예는 프레임 워크가 응답으로 리디렉션을 제공하는 경우입니다. 또한 라우터컨트롤러의 관련성 또는 근접성을 보여줍니다 .

일반적으로 여기에 그려진 차이점은 라우팅은 실행할 조치 방법을 식별하거나 처리하는 데 도움이되고 컨트롤러는이 조치를 제공하지만 요청을 처리하는 것입니다.

보다시피 라우터컨트롤러 의 차이점 은 구현과 프레임 워크에 따라 크게 다를 수 있습니다. 결국, 구체적인 적용은 특정 수준의 추상화가 유용하거나 방해가 될지 여부가 필요합니다.

그러나 나는 컨트롤러 가 전체 응용 프로그램에서 더 큰 역할을 한다고 말하고 있습니다. 이것은 행동이 그렇게 말하는 곳입니다.


3

라우트는 URL을 컨트롤러에 맵핑하며 이는 조치입니다. 때로는 역할이 프레임 워크에 따라 잘 분리되지 않는 경우가 있습니다.


2

라우터는 컨트롤러 계층의 일부입니다 . 라우터 처리 메커니즘은 구식 Front Controller 패턴 (index.php의 큰 스위치)을 대체합니다.

최신 프레임 워크에서 라우터는 가능한 종류의 요청과 프로세서 간의 직접 연결을 정의합니다. 반대로 컨트롤러는 정보를 식별하기 만하면이 데이터를 자체 컨텍스트에서 구문 분석합니다.


0

라우터는 일반적으로 GET 또는 POST 변수와 같은 외부 입력을 기반으로 응용 프로그램을 통해 이동합니다.

그러나 라우터는 MVC의 일부가 아니며 여러 MVC 및 HMVC 프레임 워크는 라우터를 사용하지만 MVC 패턴에 바인딩하지는 않습니다.

또한 MVC의 초기 몇 가지 구현은 실제로 별도의 컨트롤러에 액세스하기 위해 컨트롤러 당 하나의 파일로 파일 기반 작업 분리에 의존하는 것으로 나타났습니다. 보다 강력한 모델의 스키니 컨트롤러를 사용하면 컨트롤러의 특정 방법으로 스크롤 할 필요가 없으므로 한 곳에서 로직 (모델)에 액세스 할 수 있으므로 애플리케이션을 훨씬 더 잘 활용할 수 있습니다. 행동.


-1

라우터 걸리는

의뢰

요청을 처리 할 컨트롤러 / 컨트롤러 방법을 결정합니다.

컨트롤러는 요청을 수락하고 처리합니다!

이제 URL을 분할하고 기본 URL 다음의 첫 번째 부분을 컨트롤러로 사용하고 두 번째 부분을 작업으로 사용하는 컨트롤러를 만들었습니다. 그러면 컨트롤러에 해당하는 파일과 해당 파일 내에 작업에 해당하는 메서드가로드됩니다.

이것은 실제로 컨트롤러가 아니며 (MVC와 관련하여) 라우팅의 일부입니다.

예를 들어 [GET] uri를 사용하십시오. example.com/article/view/123 MVC 라우터는 uri를 구문 분석하고 다음 세그먼트를 찾습니다.

article view 123 기본적으로 대부분의 라우터는 articleController를 인스턴스화하고 123을 매개 변수로 전달하는 view 메소드를 호출합니다. (또는 프레임 워크를위한 디자인 선택 인 getUriSegment (segmentIdx) 메소드를 사용할 수도 있습니다.)

ArticleController에는 $ articleId 매개 변수가있는 view 메서드가 있습니다. 이 방법은 아마도 다음과 같은 작업을 수행 할 것입니다 : 지정된 기사 (예 : 모델을 통해 DB에서)를 가져온 다음 (아마도 모델이 반환 한 기사가 제공된보기를 반환하여 표시)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.