Computer Engineering 21

Middleware

미들웨어란? 요청 및 응답을 처리하는 앱 파이프라인으로 조립되는 소프트웨어 요청을 파이프라인의 다음 구성 요소로 전달할지 여부 선택 파이프라인의 다음 구성요소 전과 후에 작업 수행 가능 목적) 통신 요청 및 응답을 처리하는 파이프라인 구성 장점) 필요한 미들웨어만 사용 가능 개발자가 파이프라인을 구성할 수 있으므로 통신요청 및 응답의 발생 상황에 대해 쉽게 파악할 수 있음 동작 원리 등록 순서에 따른 요청 순서 Request에 대한 호출 순서: 등록순 Response에 대한 호출 순서: 등록 순서의 역순 종류 1) Use: 파이프라인을 단락할 수 있음 next 요청 대리자를 호출하지 않는 경우 사용 # 요청 파이프라인 단락: 다음 대리자에 요청을 전달하지 않을 때 이를 요청 파이프라인 단락(short -..

개요

용도 웹 앱 및 서비스, IoT 앱 및 모바일 백엔드 빌드 Windows, MacOS, Linux에서 사용 가능 클라우드 또는 온-프레미스에 배포 가능 .NET에서 실행 특징 ASP.NET Core는 더 간결하고 모듈화된 프레임워크를 만드는 아키텍처 변경 내용이 포함됨 웹 UI 및 웹 API를 동일한 과정으로 빌드 테스트 가능성을 고려하여 설계됨 Razor Pages는 더 쉽고 더 생산적으로 코딩 페이지에 초점을 맞춘 시나리오를 만듦 Blazor를 사용하면 JavaScript와 함께 브라우저에서 C# 사용 가능, 모두 .NET으로 작성된 서버 쪽 및 클라이언트 쪽 앱을 공유함 Windows, MacOS 및 Linux에서 개발하고 실행할 수 있음 오픈소스이며 커뮤니티에 중점을 둠 최신 클라이언트 쪽 프레임..

스프링 빈과 의존 관계

생성자에 @Autowired가 있으면 스프링이 연관된 객체를 스프링 컨테이너에서 찾아 넣어줌 이렇게 객체 의존 관계를 외부에서 넣어주는 것을 DI(Dependency injection), 의존성 주입이라고 함 DI에는 필드 주입, setter 주입, 생성자 주입이 있음 @Autowired를 통한 DI는 스프링이 관리하는 객체에서만 동 스프링 빈을 등록하는 방법 1. 컴포넌트 스캔과 자동 의존관계 설정 2. 자바 코드로 직접 스프링 빈 등록 컴포넌트 스캔 원리 @Component 애노테이션이 있으면 스프링 빈으로 자동 등록됨 @Controller 컨트롤러가 스프링 빈으로 자동 등록된 이유도 컴포넌트 스캔 때문 @Component를 포함하는 다음 애노테이션도 스프링 빈으로 자동 등록됨 - @Controlle..

Study / SQLite

SQLiteOpenHelper 클래스, SQLiteDatabase 클래스, Cursor 인터페이스 활용 Cursor : 데이터베이스에 저장되어있는 테이블의 행을 참조하여 데이터를 가져오는 역할 자주 사용되는 메소드 Cursor.getInt(), Cursor.getString .... : DB 테이블의 실제 Data를 가지고 옴 Cursor.getColumnIndex(String colimnName): DB테이블의 해당 컬럼(필드) 이름을 얻어 옴 Cursor.getPosition(): Cursor가 가리키고 있는 DB 테이블 행(Row) Position을 얻어옴 Cursor.getColumnName(int columnIndex): 컬럼(필드) index에 해당하는 컬럼의 이름을 얻어 옴 Cursor.ge..

Study / Context

Context란? 새롭게 생성된 객체가 지금 무슨 일이 일어나고 있는지 알 수 있도록 함 애플리케이션과 액티비티에 대한 정보를 얻기 위해 사용 앱에 관련해 시스템이 관리하고 있는 정보에 접근 안드로이드 시스템 서비스에서 제공하는 API 호출 종류 Application Context application 생명 주기에 귀속 싱글톤: 앱이 죽기 전까지 동일한 하나의 객체를 반환 getApplicationContext() 통해 접근 가장 오래 유지됨 Activity Context Activity 생명주기에 귀속 getContext() 통해 접근 Activity의 범위 내에서 Context 전달 언제 사용하는지? 데이터베이스를 관장하는 AppDatabase처럼 싱글톤으로 존재하는 경우 초기화 시 context가 ..

Study / View 전환

intent: 여러 화면 간의 이동 가능하게 하는 것 inflate: xml에 표기된 레이아웃들을 메모리에 로딩된 후 객체화 시키는 과정 recyclerView(): 데이터 집합들을 각각의 개별 아이템 단위로 구성하여 화면에 출력해주는 뷰 그룹이며, 수 많은 데이터를 스크롤 가능한 리스트 형태로 표시해주는 위젯 의미 viewholder: 넣고자 하는 데이터를 실제 레이아웃의 데이터로 연결시키는 기능, Item 뷰들을 재활용하기 위해 각 요소를 저장해두고 사용, 아이템 생성 시 뷰 바인딩은 한 번만 하고 그 바인딩된 객체를 가져다 사용하여 성능 부분에서 효율적 adapter: 사용자의 데이터를 받아 뷰를 생성해주는 객체로 ListView와는 독립적으로 동작하는 객체 listview() 구현 순서 1) Li..

Repositiry / Service / Test

Controller: 웹 MVC의 컨트롤러 역할 Service: 핵심 비즈니스 로직 구현 Repository: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 Domain: 비즈니스 도메인 객체 1. Entity - 데이터베이스에 쓰일 필드와 여러 엔티티간 연관관계 정의 - 테이블 전체가 엔티티, 1개의 행들이 엔티티 객체 - private Long id; // 하나의 id라는 column을 정의할 수 있음 2. Repository - 엔티티에 의해 생성된 DB에 접근하는 메서드들을 사용하기 위한 인터페이스 - 엔티티를 선언함으로써 데이터베이스 구조를 만들었다면, 여기에 어떤 값을 넣거나 넣어진 값을 조회하는 등의 CRUD(Create, Read, Update, Delete)를 해야 쓸모가 있는..

API

1) 정적컨텐츠: 파일을 그대로 웹브라우저에 내려줌 2) MVC(Model, View, Controller): 가장 많이 쓰는 방식 html을 서버에서 변형해 동적으로 내려줌 3) API: JSON이라는 데이터 구조 포맷으로 클라이언트에게 데이터 전달 (View 없음) 클라이언트와 서버의 비동기 통신 요청(request)메시지: 클라이언트에서 서버로 통신하는 메시지 응답(response)메시지: 서버에서 클라이언트로 통신하는 메시지 웹에서 화면전환(새로고침) 없이 이루어지는 동작들은 대부분 비동기 통신 -> 클라이언트에서 서버로 요청 메시지를 보낼 때, 본문에 데이터를 담아 보내야 함, 서버에서 클라이언트로 응답을 보낼 때에도 본문에 데이터를 담아서 보내야 함 -> 본문: body 즉, 요청본문 requ..