본문 바로가기

   
Programming/ASP.NET(4.0)

ASP.NET 개념

반응형

ASP.NET 개념


ASP.NET 프로젝트 운용 방식

1. 파일시스템 : IIS가 설치되지 않았거나, IIS와 연동이 필요없는 기능을 개발할때 사용하는 모드 - 개발자를 위한 모드

2. HTTP : IIS 연동 모드, 모든 개발환경이 IIS를 통해서 실행이 되는 모드. 가장 정확한 모드 -> 실제 웹서비스 환경과 동일함

3. FTP, 원격 사이트 : 원격 모드. 외부에서 접속해서 개발 환경





** IIS에서 .NET Framework 4.0 설정 후 aspnet_regiis -i로 재설치





** 프로젝트 저장

- 되도록 사이트 실제 경로에 한글, 공백, 특수문자는 포함안되게..

- 바탕화면.. 내문서.. 추천안함







프로젝트 -> 결과물(cs,리소스) -> 실행파일(exe,dll) <- 응용 프로그램


웹프로젝트(사이트) -> 결과물(html,aspx,리소스) -> 실행파일(dll) <- 웹응용 프로그램









*.htm

 = XHTML + CSS + Javascript


WPF

 = XAML(디자인) + C#(프로그램)


*.aspx

 = XHTML + CSS + Javascript + C#(프로그램) + ASP.NET 태그(디자인)









ASP.NET - 1000

 - Active Server Pages .NET

 - 동적으로 서버에서 웹페이지를 만드는 기술

 - C# / VB.NET 구현



ASP - 10

 - Active Server Pages

 - VBScript, Javascript 구현

 - PHP, CGI, JSP



ASPX 페이지

- + ASPX.CS 파일 <- Behind Code, Beside Code













ASPX 페이지 기본 구성


1. <%@ Page ... %>

- 페이지 지시자

- 웹페이지 처리 프로그램에게 페이지의 정보를 알려주는 역할


2. runat="server"

- 서버측에서 인식하고 핸들링 가능한 요소 표식












ASP.NET 컨트롤


1. ASP.NET 컨트롤

- ASP.NET에서 추가된 컨트롤(전용)

- 브라우저는 인식 못함

- 랜더링을 통해서 브라우저가 인식 가능한 태그로 변환

- <asp:Button runat="server" />


2. HTML 컨트롤

- 태그

- 브라우저가 인식 가능

- 서버측에서 인식 불가능

- <input type="submit" />


3. HTML 서버 컨트롤

- 태그(2번과 거의 유사)

- 태그에 runat="server" 속성을 추가하면 HTML 서버 컨트롤이 된다.

- 서버에서 인식 가능하게 하기 위해서..

- <input type="submit" runat="server" />












포스트백(PostBack)

- 폼의 내부 컨트롤(버튼(submit))이 전송이 되면서 자기 자신 페이지를 action으로 재 호출하는 현상

- 주로 포스트백은 ASP.NET 컨트롤이 발생

- 그중에서도.. ASP.NET 버튼류는 무조건 포스트백을 발생함

- 버튼이외의 컨트롤도 포스트백을 발생시킬 수 있음!!!!!

 (form을 전송 -> document.form1.submit();)


포스트백이 아닌 경우

- 첫요청

- 브라우저 주소창에 직접 주소를 기입해서 페이지를 요청하는경우

- F5 새로고침

- 자바스크립트나 프로그램 처리에 의해서 페이지 요청되는 경우

- ASP.NET 버튼을 눌러서 접근하는 경우를 제외한 나머지..














ASP.NET 페이지 처리 단계

- ASP.NET 페이지 수명 주기

- ASP.NET 페이지 = *.aspx + *.cs

- 클라이언트(브라우저)가 특정 페이지를 요청하면(HTTP Request) 웹서버(IIS)가 처리가 불가능하기 때문에 aspnet_isapi.dll(페이지 생성 사람) 실행기에 처리를 위임한다. 실행기는 넘겨받은 페이지를 미리 정해진 규칙에 따라서 단계별로 처리를 한 후 최종 결과물을 클라이언트에게 반환한다(HTTP Response).

- 페이지 객체 생성부터 페이지 객체 소멸까지의 단계



0. 페이지 객체 생성

- aspx 페이지 소스를 원본으로 클래스 인스턴스를 생성

- cs파일의 내용은 이벤트가 발생하면 실행됨

- cs파일은 초기 객체에는 영향이 없음


1. Init

- 0단계에서 만들어진 페이지 객체가 생성된 직 후 객체 초기화를 위해 제공되는 단계

- ViewState값이 복구되기 전이라 컨트롤 제어는 되도록 안함


2. ViewState 복구

- PostBack 요청시 발생하는 단계

- 페이지 상태 유지 단계 -> 이전 요청때의 상태를 기억했다가 복구 단계를 통해서 페이지 객체의 상태를 유지함

- ViewState에 의해서 컨트롤의 상태가 유지됨


2.5 다시 게시된 데이터 처리

- 폼 입력 컨트롤(텍스트박스, 체크박스 등..)의 값이 PostBack에 의해서 현재 페이지로 전송이 되면, 그 전송된 컨트롤의 값을 해당 컨트롤 값으로 적용시키는 단계

- PostBack 요청시 발생하는 단계


3. Load

- 페이지 객체가 메모리에 로드되고 난 직 후 발생

- 윈폼의 Form_Load 이벤트와 동일

- 주로 페이지와 초기 작업을 하는 단계

- Init 단계와 달리 ViewState복구가 완료된 단계이기 때문에 컨트롤에 접근해도 상태가 안정되어 있음(안전)

- 가장 코딩이 많은 단계 중 하나


3.5 게시 변경 알림

- 특정 컨트롤의 이벤트 발생 유무 확인 단계(**)

- 이 단계를 통해서 원격지에 있는 클라이언트 컴퓨터의 브라우저안의 컨트롤이 특정 이벤트를 발생시켰는지 확인 가능

- 2단계와 2.5단계간의 컨트롤 값의 변화를 통해서 확인!!!

4. PostBack

- PostBack 요청이 일어나면 발생하는 단계

- 사용자 및 서버 이벤트 발생 단계

- 버튼 클릭, 아이템 선택, 텍스트 변경 등 모든 컨트롤 이벤트는 이 단계에서 처리가 이루어짐

- Load와 같이 가장 코딩이 많은 단계


5. PreRender

- 페이지 객체를 랜더링하기 바로 전 단계

- 페이지 처리 순서에 의한 논리 오류를 해결하기 위해 만든 단계

- 주로 Load에서 하던 일을 이곳에서 처리


6. ViewState 저장

- 페이지 객체와 그 내부에 있는 컨트롤의 내용을 ViewState 공간에 저장하는 단계

- 보통 컨트롤의 상태를 나타내는 속성값이 저장됨(이벤트는 저장 안됨)

- PostBack 요청시 ViewState 복구 단계에서 이 값이 사용됨

- 2번과 6번 단계에 의해서 ASssP.NET의 상태 유지가 구현됨

//- 폼 컨트롤의 Value값을


7. Render

- 페이지 객체와 그 내부의 컨트롤을 HTML로 변환시키는 단계

- 페이지 객체를 브라우저가 인식 가능한 내용으로 변환

- 브라우저에게 돌려줄 임시 페이지를 만드는 단계

- 페이지 객체 + 컨트롤 + ViewState = 임시 페이지


8. Unload

- 페이지 객체 처리 후 마지막 단계

- 처리가 끝나고 Render까지 마친 페이지 객체를 소멸시키는 단계

- 주로 자원 반환 코드 구현

- 이 단계가 실행되고 나면 0~7단계에 걸쳐 사용된 페이지 객체이하 모든 자원이 서버 메모리상에서 소멸된다








ASP.NET에서의 이벤트

- 예) TextBox1에 TextChanged 이벤트 등록

 a. TextChanged 이벤트 -> 특정 메서드 호출(C#) -> 이벤트 메서드가 실행되는 장소? -> 서버(aspnet_isapi.dll이 페이지 처리 단계중 하나에서 실행)

 b. TextBox1 컨트롤에 TextChanged 이벤트 발생시키는 장소? -> 브라우저가 있는 클라이언트측







정규 표현식(Regular Expression)

- 문자열의 특정 패턴을 이용해서 원하는 데이터 검색하는 표현식


정규 표현식 문법

1. .

- 임의의 한문자

- ex) "...", "표.."


2. 

- 출현횟수(생략X, 중복X)

- ex) "abc"


3. ?

- 출현횟수(생략O, 중복X)

- ex) "a?bc" -> "bc", "abc"

 "홍?길동" ->


4. +

- 출현횟수(생략X, 중복O)

- ex) "a+bc" -> "abc", "aabc", "aaabc", "aaaaabc"

       "0+25" ->  025, 0025, 00025


5. *

- 출현횟수(생략O, 중복O)

- ex) "a*bc" -> "bc", "abc", "aabc", "aaaaaabc"

 "0*25" ->  25, 025, 0025, 00025


6. ^

- 바로 뒤에 나오는 표현으로 시작합니까?

- ex) "^abc"

 "^홍.."


7. $

- 바로 앞에 나오는 표현으로 끝납니까?

- ex) "xyz$"

 "하세요\?$"


8. []

- 열거형

- 나열된 문자 중 1개

- ex) "[abc]"

 "[김이홍]?길동" -> 김길동, 이길동, 홍길동, 길동


 숫자 1개 검색

  - [0123456789]


 숫자 3개 검색

  - [0123456789][0123456789][0123456789]

 

 전화번호 검색

  - [0123456789][0123456789][0123456789]?-[0123456789][0123456789][0123456789][0123456789]?-[0123456789][0123456789][0123456789][0123456789]

  

  - [0-9][0-9][0-9]?-[0-9][0-9][0-9][0-9]?-[0-9][0-9][0-9][0-9]

  

  

   

 알파벳 소문자 1개

  - [abcdefghijklmnopqrstuvwxyz]

 

 알파벳 1개

  - [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]


 영어단어 2글자~20글자


 숫자 1개

  - [0-9]


 영어 소문자

  - [a-z]

 

 영어 대소문자

  - [a-zA-Z]


 한글 1개

  - [가-힣]


 영어 혹은 숫자 1개 -> 식별자 구성 요소

  - [a-zA-Z0-9]



9. {}

- 출현횟수(세세하게 지정 가능)

- {count}

- {minCount,}

- {minCount, maxCount}

- ex) "a{2}b" -> aab

     "a{2,}b" -> aab, aaab, aaaab, aaaaaaaaab

 "a{2,4}b" -> aab, aaab, aaaab


 주민번호 검사(123456-1234567)

 - "[0-9]{6}-[0-9]{7}"

 - "[0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9]"


 전화번호

 - "[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}"


 아이디 입력

  - 길이는 4~12자이내

  - 영어와 숫자로 구성

  

  - 숫자로는 시작 불가


  - _는 사용 가능




10. 표현법

- "\s" -> 공백

- "\d" -> [0-9]

- "\w" -> 영어대소문자,숫자,_


- 홍길동, 홍 길동 -> "홍\s?길동"

- [0-9]{2,3}-[0-9]{3,4}-[0-9]{4}

-> \d{2,3}-\d{3,4}-\d{4}


- 영어와 숫자와 _로 구성된 4~12자이내

-> \w{4,12}






데이터 바인딩(Data Binding)

- 데이터소스(원본) + 컨트롤(출력)

- 데이터 바인딩이란 데이터 소스를 컨트롤 통해서 자동으로 출력해주는 기술

- 데이터소스 : 변수, 배열, 컬렉션, DataReader, DataTable, DataView, Procedure..

- 컨트롤 : 1개 이상의 내부 항목을 가지는 컨트롤..

- 개발자가 편함..(생산성, 유지보수..)



데이터 바인딩의 종류

1. 단일값 바인딩

-> 데이터소스가 단일값일때 컨트롤 통해서 출력

2. 다중값 바인딩(*****)

-> 데이터소스가 다중값일때 컨트롤 통해서 출력



데이터 바인딩 표현식

- <%# 데이터소스 %>

- 현재 표현식 위치에.. 표현한 데이터소스 가져와 대입





ASP.NET의 웹객체


ASP 5가지 객체


 1. Request(요청)

   a. HttpRequest 클래스

   b. this.Request 프로퍼티


 2. Response(응답)

   a. HttpResponse 클래스



 3. Application(사이트 전체)


 4. Session(고객) *****



 5. Server(잡다한것들..)






Application & Session


 - 사용 용도 : 데이터를 저장하는 역할(내부에 컬렉션)

 - Application, Session안에 저장된 데이터는 페이지가 이동되어도 살아있음. (페이지간에 전달 과정없이도 데이터를 인식 가능) -> 상태 유지 가능



Application


 - 공용 데이터를 관리 공간

 - 죽지않는 변수

 - 모든 페이지에서 접근 가능한 변수(전역변수)

 - 모든 사용자가 접근 가능한 변수(공용변수)

  - ex) 연결문자열



Session


 - 개인 데이터를 관리 공간

 - 죽지않는 변수

 - 모든 페이지에서 접근 가능한 변수

 - 개인 사용자만 접근 가능한 변수(다른 사용자의 Session 접근 불가능)






Cookie(쿠키)

- 사이트 방문자에 대한 개별적인 데이터를 사이트 운영중에 유지/관리

- 상태 유지


1. 유지

2. 개별





비교


Application 전역변수 공용변수 Object 서버

Session 전역변수 개인변수 Object 서버 **

Cookie 전역변수 개인변수 string         클라이언트         **

ViewState 지역변수 개인변수 Object 클라이언트






데이터 바인딩 전용 컨트롤


- 템플릿 기반 컨트롤

- 컨트롤 자신이 표현해야하는 형식이 없는 컨트롤

- 컨트롤의 템플릿을 직접 정의해서 바인딩 후 내용물을 어떤 형태로 출력할지 미리 준비하는 컨트롤

- 데이터소스와 함께 바인딩해서 사용함(단독 사용 불가)


1. Repeater : 5개 파트 구성, 가장 원시적(단순,구조 간단), 내마음대로~ 

 - Repeater 자신은 렌더링이 안됨. 하위 템플릿의 내용만 렌더링


2. DataList **

3. DataGrid **

4. GridView ** : 가장 고성능, 개발자가 마음대로 수정이 힘듦


5. DetailsView, FormView, ListView 등..




반응형