본문 바로가기

개발 노트/닷넷 프레임워크 수업 (2015-04 ~ 2015-08)

.NET Enterprise Architecture 1일

반응형

Windows = OS, Win32 = Platform

여기서 플랫폼이란 무엇일까?

 -> Platform = A set of APIs(Application Programming Interface) 

cf. wineHQ(LinuxOS + Win32) : Linux에서 Win32 플랫폼을 제공해주는 플랫폼

-------------------------------------------------------------------------

   Win32    vs      .NET

[Managed]  vs [UnManaged]

-------------------------------------------------------------------------

Hacking 대응방안

1. bug patch : 버그가 발견되면 버그리포팅을 통해 고쳐나가는 식

2. secure coding : 처음 코딩할 때 부터 보안을 고려해 보안을 강화한다.

3. 언어 / 플랫폼 교체

 -> C, Cpp의 언어적 문제 : buffer overrun / boundary check :: cf. int a[5]; a[7]=10; non error!!

 언어 자체의 문제로 MS사에서는 Win32를 버리고 .NET플랫폼을 새롭게 내옴.

-------------------------------------------------------------------------

MS CLR (Common Language Runtime) = Java JVM (Java Virtual Machine)

1. Platform Independent (CLR은 사실상 완벽하지 않다. 닷넷이 윈도우에만 깔린다..)

2. "Security" -> Sandbox model 

 (외부로부터 들어온 프로그램이 보호된 영역에서 동작해 시스템이 부정하게 조작되는것을 막는다.)

-------------------------------------------------------------------------

1. 장점 : 보안이 좋다. 사용자가 관리하는 영역이 적어져 개발이 쉽다.

2. 단점 : 성능이 Win32에 비해 떨어진다.

-------------------------------------------------------------------------

3-tier/N-tier

C(Web Browser)-S/C(Web Server)-"S/C(Middleware)"-S(DBMS)      

<-FE(Front End)-><-           BE(Back End)                  ->

 

Middleware / WAS(Web Application Server)

WAS : 웹 기반 분산 시스템 개발을 쉽게 도와주고 안정적인 트랜잭션 처리를 보장해 주는 일종의 미들웨어 소프트웨어 서버. 3계층 웹 컴퓨팅 환경에서 기존 클라이언트/서버 환경의 애플리케이션 서버와 같은 역할을 하며, 클라이언트와 서버 환경에서 트랜잭션 처리 및 관리와 다른 기종 시스템 간의 애플리케이션 연동 등을 주된 기능으로 하고 있다.

-------------------------------------------------------------------------

DBMS

1. Transaction : All or Nothing, 논리적 작업 단위, 한 트랜잭션이 끝나면 모든일이 완료되고 중간에 취소가 되면 다시 처음으로 돌아가야 한다.

2. Stored Procedure : 데이터베이스 안에서 함수를 정의해놓고 반복해서 사용할 수 있는 쿼리.

3. Trigger : 테이블에 대한 이벤트에 반응해 자동으로 수행하는 사용자가 정의하는 쿼리.

-------------------------------------------------------------------------

commit / rollback

줄단위 commit 모드(auto commit)

cf. try / catch

cf. A(atomicity) C(Consistency) I(Isolation) D(Durability) [https://ko.wikipedia.org/wiki/ACID]

-------------------------------------------------------------------------

 DynamicSQL   vs    StaticSQL

SQL Interpreter vs   Precompile

-------------------------------------------------------------------------

Middleware(Engine, Framework, WAS)

 -> Transaction관리 / Thread 관리 등을 한다.

-------------------------------------------------------------------------

3계층 + MVC

View       : Presentation Layer(ASP.NET, HTML)

Controller : Business Logic Layer -> WAS/ Middleware

Model     : Data Access Layer (RDBMS -> Object Mapping)

-------------------------------------------------------------------------

Responsive Web(반응형 웹) : 주로 HTML5, 화면 사이즈에 자동적으로 반응한다. 모바일과 PC버전을 따로 만들 필요가 없음. WebApp / Hybrid Web이라고 한다.

-------------------------------------------------------------------------

OOP -> Component -> MVC(ORM/SQL Mapper) -> IoC/DI

 cf. BEA Tuxedo -> Weblogic

-------------------------------------------------------------------------

Object - Relation Mapping

 Object 조작(CRUD) -> SQL 생성

 Java Hibernate

-------------------------------------------------------------------------

SQL Mapper : MyBatis ( iBatis )

-------------------------------------------------------------------------

Inversion Of Control / DI (Dependency Injection)

 cf. loosely coupled vs tightly coupled <- (engine / framework)

 cf. Killer application

-------------------------------------------------------------------------

OOP의 4단계

1. class define

2. object declare

3. object instantiate

=============== 준비

4. method invoke

-------------------------------------------------------------------------

Object-Oriented(위주, based) vs Function-Oriented

 cf.  connection-oriented      vs   connectionless

-------------------------------------------------------------------------

resource pooling(thread, process, connection, ...)

 cf. 인력풀제

-------------------------------------------------------------------------

Asynchronous

1. 호출한 뒤 결과가 나올 때까지 기다리지 않음 ( 비동기 )

2. 실시간의 의미 (cf. getKeyState() vs getAsyncKeyState())

cf. Redundancy(fail over, hot swap), load balancing

Synchronous

1. 한번에 하나의 결과만 수행하고 수행한 결과를 다른 곳에서 참조를 하기도 함 ( 동기 )

-------------------------------------------------------------------------

반응형