라이브러리와 프레임워크를 혼용하여 사용하는 경우가 많다.

이유는 아마 그 차이에 대해 명확하게 정의된 것이 없기 때문에 그런것이다.

자료를 찾아보니 굳이 명확히 구분을 짓고자 한다면 다음과 같은 특징들을 잡을 수가 있었다.


- 프레임워크는 틀, 골격의 의미로 라이브러리를 내포 할 수 있다.

- 내가 만든 소스코드에서 부르게 되면 라이브러리, 반대로 내가 만든 소스코드가 불려가 동작하게 된다면 프레임워크이다.

- 라이브러리는 연장/기능을 담은 집합, 프레임워크는 이런 연장들의 사용방식 및 API, 규칙, 절차에 대한 명세


풀어서 정리하자면, 라이브러리는 내가 그냥 가져다 사용 할 수 있는 모듈이며 수정이 용이하다.

그렇기 때문에 내가 라이브러리를 가져다 쓴다고 생각 할 수 있다.

프레임워크는 이미 정해진 명세, 규칙이기 때문에 수정이 어렵다.

소스코드를 짤때 이 규칙을 토대로 프레임워크를 사용하므로, 프레임워크가 명시한 대로 사용 할 수 있을 뿐이다.

그래서 내가 짠 소스코드는 프레임워크에 의존하여 동작하게 하게 된다.


http://imcreator.tistory.com/7

위 링크에서 이 질문에 대한 답을 명확히 이해 할 수 있었다.

모듈은 가장 상위에 위치하는 구현의 단위,

컴포넌트는 런타임 엔티티를 참조하는 단위라고 생각하면

금방 그 차이를 이해 할 수 있을거라고 생각된다.

따라서 모듈과 컴포넌트는 상위와 하위관계를 명확히 구분짓기 어렵고

서로 다른 개념으로 바라보아야 한다고 생각한다.

그렇기 때문에 모듈 1000개가 모여 하나의 컴포넌트가 될 수도있고,

컴포넌트 1000개가 모여서 하나의 모듈을 구성 지을 수도있다.


쉽게 설명해서, 모듈이란 실질적으로 구현이 된 단위를 의미한다.

자료구조, 알고리즘 등 이를 제공하는 인터페이스라고도 할 수 있을 것이다.


반면, 컴포넌트는 실제적으로 동작하고있는 엔티티로써

활동중인 독립적인 단위를 중점적으로 보고 있다.


상위에 있는 링크에서는 서버와 클라이언트의 예로 설명하고 있다.

1개의 서버에게 서비스를 제공받는 100개의 클라이언트가 존재한다고 가정하자.

위에 설명한 내용으로 모듈, 컴포넌트의 개수를 각각 세어보면

서버가 구현된 모듈 1개, 클라이언트가 구현된 모듈 1개이므로

이 시스템 인프라의 총 모듈 개수는 2개이다.

컴포넌트의 경우 실제 동작하고 있는 엔티티를 의미하므로 총 101개가 된다.


 MVC(Model, View, Control)패턴의 정의

MVC란 Model View Controller의 약자이다. 즉, 애플리케이션의 구성요소를 Model, View, Controller로 구분지어 개발함으로써 표현계층과 데이터를 처리하는 로직을 분리한다. 이 과정을 통해 중복적인 코딩을 미연에 방지 할 수 있으며 재사용성을 높일 수 있는 디자인 패턴이다. 애플리케이션의 흐름제어나 사용자의 처리요청은 컨트롤러에 집중되도록 고안되어 있다. 일반적으로 웹 애플리케이션 개발에 널리 사용된다. MVC 패턴이 가지는 구조는 다음과 같다.


위 그림에서 보이듯, 사용자는 Controller를 조작하고, Controller는 Model을 이용하여 데이터를 가져온다. 해당 데이터를 기반으로 시각적인 표현에 대한 기능을 수행하는 View를 컨트롤하여 사용자에게 실질적으로 전달된다.


 Web과 MVC

  1. 사용자가 웹사이트에 접속한다. (Uses)
  2. Controller는 사용자가 요청한 웹페이지를 서비스 하기 위해서 모델을 호출한다. (Manipulates)
  3. 모델은 데이터베이스나 파일과 같은 데이터 소스를 제어한 후에 그 결과를 리턴한다.
  4. Controller는 Model이 리턴한 결과를 View에 반영한다. (Updates)
  5. 데이터가 반영된 VIew는 사용자에게 보여진다. (Sees)
(발췌된 내용 입니다. 출처 : https://opentutorials.org/course/697/3828)


◐ Codelgniter와 MVC

Controller

사용자가 접근 한 URL에 따라서 사용자의 요청사항을 파악한 후에 그 요청에 맞는 데이터를 Model에 의뢰하고, 데이터를 View에 반영해서 사용자에게 알려준다. 

Model

일반적으로 CI의 모델은 데이터베이스 테이블에 대응된다. 이를테면 Topic이라는 테이블은 topic_model이라는 Model을 만든다. 그런데 이 관계가 강제적이지 않기 때문에 규칙을 일관성 있게 정의하는 것이 필요하다.

View

View는 클라이언트 측 기술인 html/css/javascript들을 모아둔 컨테이너이다. 

(발췌된 내용 입니다. 출처 : https://opentutorials.org/course/697/3828)


위에 출처로 남겨진 링크로 이동하면 동영상 강의로 잘 설명되어 있다.

+ Recent posts