2024-소프트웨어과 1학년/ASP

ASP 중간고사 대비 정리본 1편

simless786-it 2024. 10. 21. 00:55

<네트워크 기반 프로그램>

  • 하나 이상의 컴퓨터에서 자료와 자원을 공유하며 업무를 처리함.
  • 서버(server): 자료나 자원을 제공.
  • 클라이언트(client): 자료나 자원을 요구

<웹 애플리케이션(웹 응용 프로그램)>

웹 프로그래밍 = 웹 애플리케이션 개발

서버(IIS, Apache, Tomcat, PHP..)

클라이언트(웹 브라우저)

웹을 통한 상호 커뮤니케이션 형태 진화

다양하고 창의적인 웹 애플리케이션 개발 필요성 대두

[정적 웹 페이지]

<웹의 구성>

  • URL(Uniform Resource Locator): 웹 페이지의 위치를 표현하는 주소
  • HTTP(Hypertext Transfer Protocol): 자원을 주고받기 위한 약속(protocol 규약)
  • HTML(Hypertext Markup Language): 자원을 표현하고 자원 사이의 이동을 쉽게 할 수 있도록 개발된 언어.

<정적 웹 페이지(static web Page)

클라이언트에서 문서 요청-> 저장된 문서 그대로 클라이언트에게 전달.

서버에 있는 문제가 수정되지 안는 한 항상 같은 웹 문서 응답.

<웹 사이트(web site)>

서로 관련 있는 웹 페이지들을 모아 놓은 것.

[동적 웹 페이지]

<동적 웹 페이지(Dynamic Web Page)>

  • 시시각각 변화하는 데이터를 반영하는 페이지
  • 웹 애플리케이션

[ASP.NET]

<ASP.NET>

웹 애플리케이션 개발 언어 중 하나이다.

ASP, ASP.NET, JSP, PHP, Ruby(on Rails)...etc

웹 애플리케이션 구축을 위한 프로그래밍 프레임워크

<MS사의 웹 솔루션 발전 과정>

  • 1세대 CGI(Common Gateway Interface)
  • 클라이언트의 요청으로 서버에서 프로그램 실행-> HTML 문서 생성
  • C나 Perl로 프로그램 작성
  • 사용자 요청 때마다 이를 처리하기 위한 새로운 프로세스 생성.(동시 접속자 수가 늘어날 경우 웹 서버에 막대한 부하)
  • 2세대 ISAP(Internet Server Application Programming)
  • CGI가 실행 파일 형식인 반면 ISAP는 DLL(Dynamic Linking Library)형식
  • DLL(동적 연결 라이브러리)은 여러 함수의 공유 라이브러리(프로세스에서 해당 프로세스의 실행 코드에 포함되지 않은 함수 호출 가능, 데이터와 자원 공유 용이, 여러 개의 응용 프로그램이 메모리에 있는 하나의 DLL 복사본 내용 동시 엑세스, DLL을 사용하지 않는 응용 프로그램보다 컴퓨터 부하 감소)
  • 3세대 IDC(Internet Database Connector)
  • MS사가 선보인 최초의 스크립트 방식의 웹 솔루션.
  • 스크립트(기계어로 변환하는 컴파일 과정을 거치지 않고도 해석 가능한 프로그래밍 코드, 서버 스크립트와 클라이언트 스크립트로 구분)
  • 서버스크립트=ASP,ASP.NET, JSP, PHP..
  • 클라이언트 스크립트= 웹 브라우저에서 처리되는 코드로 자바스크립트, VB스크립트 등
  • 액세스나 엑셀 등에 저장된 데이터 이용 동적인 웹 페이지 구현

<ASP의 단점>

HTML 태그와 스크립트로 인한 복잡한 코드

=스파게티 코드 (HTML태그와 스크립트 혼합)로 유지 보수에 어려움.

한정된 데이터형

variant 데이터형만 지원. 변수에 대한 명시적인 데이터형 선언이 불가능. 물리적, 논리적 오류 발생 가능성이 높다


<ASP.NET의 특징>

이벤트 기반 프로그래밍 모델

체계적인 프로그래밍 구조 제공

높은 재사용성, 쉬운 공유, 작성 용이, 높은 가독성

컨트롤 기반 페이지

부품을 조립하여 완성품을 만들듯 쉽고 직관적으로 프로그래밍

언어 독립적인 플랫폼(Platform) 제공

스크립트 언어뿐 아니라 컴파일된 언어도 제공

어떠한 .NET(VB,C#,J#)언어로도 ASP.NET 페이지 작성 가능

만들어진 웹 페이지는 CLR(Common Language Runtime)이 지원되는 운영체제에서 구동 가능.

<Code-behind>

ASP의 스파게티 코드의 문제점 극복을 위해 UI와 업무 로직 분리

사용자 UI-HTML부분으로 사용자들에게 보여지는 부분

업무 로직- 업무 처리를 위한 코드 부분

 

<ASP.NET의 특징>

성능 향상

  • 인터프리터 방식인 ASP와 달리 ASP.NET은 컴파일 언어 사용 페이지 작성
  • 컴파일 된 페이지를 캐싱(Caching) 기법에 의해 메모리에 올려놓아 성능 향상
  • 가비지 컬렉터(Garbage Collector)에 의한 객체 관리
  • 메모리 누수와 같은 원인으로 서버가 다운되는 일 최소화

다양한 웹 브라우저의 지원

  • 인터넷 익스플로러, 파이어폭스, 구글 크롬..
  • 모바일 폰, PDA, 스마트폰 등에도 적합하게 동작하는 콘텐츠 동적 구성 기능 보유

<홈 디렉터리(루트 디렉터리) 사용의 문제점>

보안의 문제: 웹 주소의 구조가 루트 디렉터리의 구조, 루트 디렉터리의 구조 공개로 악의적 침입에 의한 주요 문서 유출 가능, 루트 디렉터리의 권한 획득으로 하위 폴더 접근.

공간 부족 현상: 홈 디렉터리에만 모든 사이트의 문서 저장 불가능.


<가상 디렉터리>

물리적으로 루트 디렉터리 또는 이에 종속된 하위 디렉터리가 아님에도 불구하고 웹에서 웹 사이트의 하위 디렉터리로 인식되는 디렉터리. 가상 경로와 실제 경로를 서로 대응시키는 작업 필요.

<가상 디렉터리 설정하기>

  1. XAMPP Control Panel에서 모두 Stop으로 중단
  2. IIS 관리자 실행 및 시작 Defult Web Site/고급설정
  3. IIS 실행->고급 설정, 이름, 실제경로 변경
  4. IIS 실행-> Defult Web site 시작
  5. 가상 디렉터리 추가
  6. 별칭, 실제 경로 설정
  7. ASP 가상 디렉터리 사용권한 편집
  8. 보안/고급/사용권한/User권한에서 읽기 및 쓰기 실행 체크
  9. EditPlus 실행 새파일/다른 파일들/VBScript
  10. 예제삽입
  11. 파일저장. 확장자 .ASP
  12. 웹브라우저 URL창에 localhost/asp/파일경로/파일이름.asp 입력

<정적 웹 페이지와 동적 웹 페이지>

정적 웹 페이지: 수정하지 않는다면 늘 동일한 웹 페이지

동적 웹 페이지: 사용자에 따라, 실시간으로 변화하는 내용에 따라, 저장된 데이터를 바탕으로 만들어지는 페이지

<웹 프로그래밍>

웹을 기반으로 실행되는 프로그램을 웹 애플리케이션(응용 프로그램)이라 하고 이를 개발하는 것을 프로그래밍 한다고 함.

<동적 웹 페이지 개발 언어의 종류>

동적 웹 페이지를 만들기 위해서는 웹 애플리케이션을 개발하여야 하고 개발에 사용되는 언어에는 ASP, ASP.NET, JSP, PHP, Ruby(on Rails)등이 있음

<ASP.NET의 특징>

  • 기존 ASP의 모든 기능을 제공하고 ASP와 완벽 호환
  • ASP의 문제(스파게티 코드, 한정된 데이터형 등) 해결
  • 웹 애플리케이션을 구축하기 위한 프로그래밍 프레임워크
  • 웹 애플리케이션을 실행하고 서비스하기 위해서는 IIS 서버를 설치해야함
  • 이벤트 기반프로그래밍 모델을 통해 체계적인 프로그래밍 구조제공
  • 컨트롤들을 통해 쉽고 직관적으로 프로그래밍할 수 있는 컨트롤 기반 페이지
  • CLR(Common Language Run time)을 통한 언어 독립적인 플랫폼 제공
  • Code-behind모델로 ASP의 스파게티 코드 문제 해결
  • 컴파일 언어를 사용하여 페이지 작성, 컴파일된 페이지는 캐싱(Caching)기법을 통해 성능 향상
  • 가비지 컬렉터로 메모리 누수와 같은 원인으로 인해 서버가 다운되는 일 최소화
  • 다양한 웹 브라우저 지원

<가상 디렉터리>

가상 디렉터리란 물리적으로 루트 디렉터리 혹은 이에 종속된 서브 디렉터리가 아님에도 불구하고 웹에서 웹 사이트의 하위 디렉터리로 인식되는 디렉터리.

<ASP 단점>

스파게티 코드(HTML태그와 스크립트가 혼합된 형태)로 이루어져 유지보수에 어려움이 있음.

Variant 데이터형만 지원되어 변수에 대한 명시적인 데이터형 선언이 불가능하고, 하나의 변수에 대한 명시적인 데이터형 선언이 불가능하고, 하나의 변수에 문자나 숫자 등과 같은 서로 다른 데이터형 값이 대입되어 예기치 않은 물리적/ 논리적 오류가 발생할 가능성이 높다.


1. 웹 응용 프로그램 구성

2. 가상 디렉터리 설정

  • 홈 디렉터리의 문제점:
    • 보안 문제: 루트 디렉터리의 구조가 드러나 보안 취약점이 생길 수 있습니다.
    • 공간 부족: 하나의 홈 디렉터리에 모든 사이트 파일을 저장하기 어렵습니다.
  • 가상 디렉터리: 물리적 경로와 웹의 가상 경로를 대응시켜 홈 디렉터리 외부에도 데이터를 저장할 수 있도록 합니다.

3. 연습문제 요약

  1. 정적 웹 페이지 vs 동적 웹 페이지: 정적 페이지는 변하지 않는 페이지, 동적 페이지는 사용자의 요구에 따라 변하는 페이지입니다.
  2. 웹 애플리케이션: 웹을 기반으로 동작하는 프로그램입니다.
  3. ASP 단점:
    • HTML과 스크립트가 혼합된 스파게티 코드로 유지 보수 어려움.
    • 데이터 형 선언이 불가해 오류 발생 가능성 높음.
  4. ASP.NET 특징:
    • 기존 ASP와 완벽 호환.
    • 이벤트 기반 프로그래밍 모델과 다양한 컨트롤 제공.
    • Code-behind 모델로 코드 구조 개선.
    • 가비지 컬렉터를 통해 메모리 누수 방지.
  5. 물리적 경로:

<TCP 포트>

  • TCP 포트는 포트 번호를 입력하는 것으로, HTTP에서 가지는 포트 번호는 80번이다. 하지만 HTTP프로토콜은 기본적으로 사용되는 것이기 때문에 포트 번호는 생략해도 무관하다. 그러므로 웹 브라우저의 주소 입력 창에 해당 URL만 입력하면 바로 접속할 수 있다.
  • 기본적으로 80이 설정되어있음.

<ASP의 Variant 데이터 타입>

다양한 종류의 데이터를 저장할 수 있는 특별한 데이터 타입. 각 하위 형식의 의미는 다음과 같음:

  1. Empty: 데이터가 초기화되지 않은 상태. 변수가 선언되었지만 값이 할당되지 않았을 때 나타남.
  2. Null: 변수에 유효한 데이터가 없음을 나타냄. 일반적으로 데이터베이스에서 값이 없는 경우 사용됨.
  3. Boolean: True 또는 False 값을 가질 수 있는 데이터 타입.
  4. Byte: 0부터 255까지의 정수 값을 저장할 수 있는 데이터 타입. 1바이트의 메모리를 차지함.
  5. Integer: -32,768부터 32,767까지의 정수 값을 저장할 수 있는 데이터 타입. 2바이트의 메모리를 차지함.
  6. Currency: 고정 소수점 숫자로, 금액을 정확하게 표현하기 위해 사용됨. 15자리의 숫자를 저장할 수 있음.
  7. Long: -2,147,483,648부터 2,147,483,647까지의 정수 값을 저장할 수 있는 데이터 타입. 4바이트의 메모리를 차지함.
  8. Single: 단정밀도 부동 소수점 숫자를 저장할 수 있는 데이터 타입. 약 7자리의 정확성을 가지고 있으며, 4바이트의 메모리를 차지함.
  9. Double: 배정밀도 부동 소수점 숫자를 저장할 수 있는 데이터 타입. 약 15자리의 정확성을 가지고 있으며, 8바이트의 메모리를 차지함.
  10. Date: 날짜 및 시간을 저장하는 데이터 타입. 100년 1월 1일에서 9999년 12월 31일까지의 날짜를 나타냄.
  11. String: 길이가 약 20억 문자까지에 이르는 가변 길이 문자열을 가짐.
  12. Object: 객체를 가짐.
  13. Error: 데이터의 오류 번호를 가짐.

<ASP에서 자주 사용되는 변환 함수들의 의미와 사용 형식>

  1. Asc
    • 의미: 주어진 문자열의 첫 번째 문자의 ANSI 값을 반환함.
    • 형식: Asc(문자열)
  2. CBool
    • 의미: Variant로 변환된 식을 반환함.
    • 형식: CBool(식)
  3. CByte
    • 의미: 바이트 하위 형식의 Variant로 변환된식을 반환함.
    • 형식: CByte(식)
  4. CCur
    • 의미: 통화(Currency) 하위 형식의 Variant로 변환된 식을 변환함.
    • 형식: CCur(식)
  5. CDate
    • 의미: Date하위형식의 Variant로 변환된식을 반환한다.
    • 형식: CDate(날짜)
  6. CDbl
    • 의미: 더블 하위 형식의 변수로 변환된 식을 반환함
    • 형식: CDbl(식)
  7. Chr
    • 의미: 주어진 ANSI 값에 해당하는 문자(Character)를 반환함.
    • 형식: Chr(charcode)
  8. CInt
    • 의미: 주어진 값을 정수(Integer)로 변환함.
    • 형식: CInt(식)
  9. CLng
    • 의미: 주어진 값을 롱(Long) 정수로 변환함.
    • 형식: CLng(식)
  10. CSng
    • 의미: 주어진 값을 단정도(Single) 부동 소수점 숫자로 변환함.
    • 형식: CSng(식)
  11. CStr
    • 의미: 주어진 값을 문자열(String)로 변환함.
    • 형식: CStr(식)
  12. Hex
    • 의미: 주어진 숫자를 16진수(Hexadecimal) 문자열로 변환함.
    • 형식: Hex(수)
  13. Oct
    • 의미: 주어진 숫자를 8진수(Octal) 문자열로 변환함.
    • 형식: Oct(수)

변수 (Variable)

  • 정의: 변수는 데이터를 저장할 수 있는 메모리 공간의 이름으로, 실행 중에 값이 변경될 수 있음.
  • 특징:
    • 값의 변경이 가능함.
    • 프로그램 실행 중에 언제든지 새로운 값으로 업데이트할 수 있음.

상수 (Constant)

  • 정의: 상수는 프로그램 실행 중에 값이 변하지 않는 데이터를 저장하는 메모리 공간임. 한 번 값이 할당되면 변경할 수 없음.
  • 특징:
    • 프로그램의 여러 부분에서 같은 값을 사용할 때 유용함.
    • 값을 변경할 수 없으므로 안정성을 제공함.

<ASP에서 사용되는 Dim, Public, Private, ReDim 문의 설명과 사용 형식>

1. Dim

  • 설명: Dim 문은 변수를 선언할 때 사용됨. 변수를 선언하고 저장 공간을 할당함.

2. Public

  • 설명: Public 문은 변수를 선언하고 저장 공간을 할당하는데, 프로그램 처음부터 끝까지 사용하는 전역 변수를 선언함.

3. Private

  • 설명: Private 문은 특정 모듈 내에서만 접근 가능한 변수를 선언할 때 사용됨. 다른 모듈에서는 이 변수를 사용할 수 없음. 해당 프로시저가 종료되면 함께 종료됨.

4. ReDim

  • 설명: ReDim 문은 동적 배열 변수를 선언하고 저장 공간을 할당하거나 다시 할당할 때 사용하는 것임.

<option Explicit>

옵션 익스플릭트(Option Explicit)는 VBScript 및 VBA에서 사용되는 구문으로, 변수를 선언해야만 사용할 수 있게 강제함. 이 옵션을 활성화하면 코드의 가독성과 오류 방지를 높일 수 있음.

예를 들어, 변수를 선언하지 않고 사용하면 오류가 발생하므로, 변수를 미리 Dim, Private, Public 등의 키워드로 선언해야 함.

Option Explicit

Dim myVariable ' 변수를 선언
myVariable = 10 ' 이제 사용 가능

이렇게 사용하면 코드의 명확성이 향상되고, 의도치 않은 오류를 줄일 수 있음.