'족보'에 해당되는 글 1건

  1. 2007.05.21 .NET 기술면접 족보 4
posted by 알 수 없는 사용자 2007. 5. 21. 00:59

1. window 2000과 2003의 차이
-윈도우 2003서버는 기본적으로 .net프레임워크가 설치되어 있다.

1-1. IIS란?
-Internet Information Server (인터넷정보서버)

2. 닷넷 프레임워크 3.0의 구성요소
WPF(Windows Presentation Foundation)
- 백터 그래픽 기반의 UI 개발통합환경
WCF(Windows Communication Foundation)
- 서비스 지향 어플리케이션을 신속하게 개발하기 위한 통합된 서비스 프로그래밍
- 통일성, 높은 생산성, 상호 운용성
WF(Windows Workflow Foundation)
- WF로 작업하면 워크플로우를 명확하게 정의할 수 있고,
- 워크플로우가 바뀌었을때 코드를 수정하지 않아도
- 간단하게 Drag&Drop 만으로 작업 흐름을 수정할 수 있다.
CardSpace(Windows CardSpace)
- 사용자가 인터넷으로 이용하는 여러 개의 로그인 ID나 패스워드를 관리하는 방법 개선

2-1. 실버라이트란? [FLEX vs Silver Light]
실버라이트(Silverlight)는 Microsoft에서 밀고 있는 Flash와 유사한 웹용 GUI 플러그인이다.
백터방식으로 DVD급 화질을 느낄 수 있고, Windows Media Encoder로 스트리밍이 가능

3. Enterprise Service(인프라 서비스 라이브러리)
. .net 개체가 Com+서비스에 접근할수 있도록 하는 역할
-순서-
. 클래스라이브러리 생성
. using EnterpriseService
. AssemblyInfo.cs에 using EnterpriseService
. 강력한 이름설정(sn -k 파일이름.snk)
. [Assembly:ApplicationActivation[ActivationOption:Server]]
. [Assembly:ApplicatinoName["화일이름“]]
. [Transaction[TransactionOption.NotSupported]]
. 클래스 상송 public class aaa : ServicedComponent
. 등록 regsvcs 이름.dll

4. SOA(Service Oriented Architecture)
SOA는 아키텍처와 인터페이스의 다른점을 신경 쓰지않고 모든 어플리케이션을 네트워크를
경유하여 서비스로서 자유롭게 조합하여 이용할 수 있도록 하기위한 시스템 설계상의 방법입니다.

5. WebService
SOAP(분산 컴포넌트 간의 정보를 교환하기 위한  XML기반의 메시지 프로토콜)
SOAP와  웹서버를 이용한 Remoting
* 자세히
서로 다른 컴퓨팅 환경에서 사용되는 모든 애플리케이션들이 직접 소통하고 실행될 수 있도록 동적 시스템 환경을 구현해 주는 소프트웨어 컴포넌트. 단순 객체 접근 프로토콜(SOAP), 웹 서비스 기술 언어(WSDL), 전역 비즈니스 레지스트리(UDDI) 등의 표준 기술을 사용하여 네트워크에 연결된 다른 컴퓨터 간의 분산 컴퓨팅을 지원하는 소프트웨어 및 기술들이다. 웹 서비스는 논리적 응용 프로그램의 단위로 데이터와 서비스를 다른 응용 프로그램에 제공하고, 응용 프로그램의 작성 시 HTTP, XML, SOAP와 같은 표준화된 웹 프로토콜데이터 형식을 사용함으로써 운영 체계(OS) 등 특정 플랫폼과 상관없이 모든 컴퓨터 간 원활한 데이터의 흐름을 보장해 준다. 웹 서비스를 활용하면 어려운 프로그램 작성 언어를 배우지 않고도 간단하게 여러 가지 웹 서비스들을 조합하여 새로운 애플리케이션을 만들어 낼 수 있다.

5-1. SOAP란?
SOAP은 XML과 HTTP 통신을 기반으로 하여 네트워크 상에 존재하는 각종 컴포넌트간의 호출을
효율적으로 실현하기 위한 방법을 제시하는 규약

6. .net Remoting
RPC(Remote Procedure Call) 클라이언트가 원격지에 존재하는 함수를 호출한 후,
그결과를 원격지로부터 받아내는 기술
[닷넷 환경에서의 개체기반 RPC 모델]
원격서비스에 등록되어 있는 원격 클래스의 함수를 호출하기위한 아키텍쳐
======================================
Marshaling(마샬링), Unmarshaling(언마샬링)
Serilalization(직렬화), Deserilalization(역직렬화)
[보내기 받기]
======================================
네트워크 통신을 하기 위한 채널(TCP, HTTP)
포맷터(SOAP-xml, Binary-바이너리)
바이너리가 속도는 좋지만 이기종간의 토인을 위해서 SOAP를 사용

채널등록
TcpClientChannel channel = new TcpClientChannel();
ChannelServices.RegisterChannel(channel, flase);

프록시 객체 생성
object obj =
Activator.GetObject(typeof(SaoHello), "tcp:localhost:9009/BaboSaoHello");
SaoHello h = (SaoHello)obj;

원격함수 호출
Console.WriteLine(h.SayHello("홍길동“));

7. Component
. 잘정의된 인터페이스를 가지며
. 그 인터페이스를 통해서만 서비스들을 호출할 수 있고
. 명세화 되어 있고
. 배포될 수 있고
. 독립적인 기능을 수행하는 소프트웨어모듈
. 재사용 가능한 소프트웨어 빌딩 블록

8. MSF/CD
. 컴포넌트 개발 방법론
. 기존방법론에 비하여 물리적인 설계부분에서 강점
 - 개념적(업무프로세스 모델설계)
 - 논리적(클래스와 서비스설계)
 - 물리적

9. CBD란?
CBD (Component Based Development)라는 용어의 약어로 소프트웨어 개발 방법론의 하나로 프로그램의 순서를 따라서 각각의 독립적인 컴포넌트로 구성하고 이를 짜 맞춰 전체 프로그램을 구성하는 것을 말합니다.
이때 컴포넌트는 실행 버튼과 같은 작은 단위에서부터 간단한 프로그램 전체에 이르기까지 그 형태가 다양하며 만들어지며 개발 언어에 비지니스 로직을 접목한 개념이라고도 볼 수가 있습니다.  
CBD를 이용해서 짠 프로그램의 가장 큰 장점은 재사용이 가능하고 다른 프로그램과의 호환성 및 이식성이 우수하다는 것입니다.
따라서 개발 생산성이 전반적으로 높아지는 효과를 가져다 줍니다.
CBD에 입각해서 만들어진 컴포넌트들은 특정 애플리케이션에 구애 받지 않으며 데스크톱용 프로그램이나 웹 브라우저 등 어떤 소프트웨어 환경에서도 표준 프로토콜을 이용해 불러 들일 수가 있습니다. 게다가 한 번 사용한 컴포넌트는 버리는 것이 아니라 다른 종류의 애플리케이션을 만들 때 재사용할 수가 있다는 것입니다.

10. Stored Procedure(저장프로시저)
쿼리를 하나로 묶은 것, 자주 사용하는 SQL 쿼리를 매번 입력하는 것이 귀찮게 여기질 때 유용하게 사용할 수 있다.
저장 프로시저를 만들어 놓으면 이후로는 저장프로시저의 이름을 호출하는 것만으로 SQL쿼리를 실행할 수 있다.
. 어떤 동작을 일괄처리하기 위한 용도
. 저장프로시저도 데이터베이스의 개체
. 프로그램기능, Return, try/catch, 매개변수가 가능
. 수정은 ALTER, 삭제는 DROP Procedure를 사용
Create Proc test
@testValue NVARCH(10),
@outValue INT OUTPUT
AS
Insert Into testTbl Values(@test);
select @OutValue = IDENT_CURRENT('testTbl');
Exec test 'aaa';

11. DB모델링
계획-분석-설계-구현-테스트-유지보수

업무분석
개념적 모델링 - 업무분석을 토대로 엔티티 추출, 속성, 관계정의
논리적 모델링 - 정규화를 통한 스키마설계
물리적 모델링 - 제약조건, 인덱스, 역정규화

12. 정규화 : 자료의 중복성과 비정규성을 제거하고 검색키를 설정하기 위해 데이타베이스의 logical schema를 작성하는 것

제1정규화
 - 반복되는 그룹 속성을 제거한 뒤 기본 테이블의 기본키를 추가해
새로운 테이블을 생성하고 기존테이블과 일대다의 관계를 형성한다.
- 반복되는 그룹의 속성이 존재할 경우 그 그룹을 분리하여 새로운 실체를 추가한 후 기존의 실체와 일대다의 관계를 형성함으로서 속성들의 원래 제자리를 찾아준다.

제2정규화
- 복합키에 전체적으로 의존하지 않는 속성들을 제거한다.
- 복합키의 일부에만 종속되는 속성들을 제거

제3정규화
-기본키에 의존하지 않고 일반컬럼에 의존하는 컬럼들을 제거한다.

기타 정규형
BCNF(Boyce Codd Normal Form)라고도 하는 제 4 정규형과 제 5 정규형도 있지만 이 형식은 실제 디자인에서 거의 고려되지 않습니다. 이러한 규칙은 무시해도 데이터베이스 디자인의 완벽성은 덜하겠지만 기능적으로는 영향이 없습니다.

정규화의 문제점
때로는 정규화 이론에 어긋나는 릴레이션 구조를 선택해야 할, 실용적인 필요성이 우선하는 경우도 있습니다. 정규화 작업은 특히 처리속도와의 trade-off관계가 심사숙고의 대상이 되며 고도의 정규화를 추구하다보면 레코드의 종류가 늘어나고 프로그래밍도 복잡해 져서 결국은 전체적인 performance가 떨어지게 됩니다. 이는 양자간의 절충으로 어느정도 해결될 수 있지만 개발자와 사용자간에 깊이 생각해 보아야 할 문제라고 할수 있겠군요.

13, 인덱스
- 데이터베이스 내의 테이블에서 원하는 데이터를 좀더 빨리 찾아줄 수 있게끔 데이터의 위치정보를 모아놓은 데이터베이스 내의 개체이다.
클러스터드인덱스(영어사전) - 범위검색에 용이
비클러스터드인덱스(일반책) - 특정값 검색에 용이

14. 트리거 : 특정 테이블이나 테이블의 레코드에 어떠한 사건(이벤트)이 발생하였을 때 내부적으로 실행되도록 데이터베이스에 저장된 프로시져를 말함.
부탁된 테이블에 특정한 업무 수행시 자동 실행(스토어드 프로시저랑 비슷)
- DML(Insert, Update, Delete)
- DDL(Create, Drop, Alter)

이 프로그램은 QL/SQL 혹은 자바로, 또는 C의 콜아웃(callouts)으로서 작성될 수 있다. 오라클에서는 사용자가 이들 프로그램을 정의할 수 있으며, insert, update, delete문이 연관된 테이블, 뷰, 또는 데이터베이스 작업을 대상으로 수행 될 때에 이들을 수행할 수 있다.

트리거는 데이터베이스 보안의 적용, 유효하지 않은 트랜잭션의 예방, 업무 규칙의 적용, 감사(auditing) 제공, 복제된 테이블의 유지등에 사용될 수 있다.

Create Trigger test
ON testTbl
After Delete, Update
AS
Print ('메세지‘);

14-1. 커서의 개념
커서는 테이블에서 여러 개의 행을 쿼리한 후에, 쿼리의 결과인 행 집합을 한 행씩 처리하기 위한 방식이다. 항 행씩 읽을 때마다 파일 포인터는 자동으로 다음 줄을 가리키는 것과 같은 동작을 한다.
단점.커서는 SQL Server의 성능을 떨어뜨리는 큰 요인 중 하나임.

15. Thread
- 하나의 프로그램 내에서 실행되는 함수
- 한순간에 두 개의 함수가 동시에 실행되면 두 개의 스레드가 동작하는 것.
(우선권, 동기화)
- 프로세스, 멀티테스킹

16. .net Framework
 -공용런타임(Common Language Runtime)
. 시행환경을 제공하며 CLS의 언어규칙을 따라야 CLR에서 실행된다.
-.net framework클래스 라이브러리
.개발에 필요한 모든 라이브러리 환경을 제공

17. 자바에서 String과 String Buffer 의 차이점
String Class는 문자열을 저장 및 기본적인 문자열을 다룰수 있는 메소드들을 제공하고 있고, StringBuffer Class는 문자열에 관한 연산들, 즉 문자열을 다루는 고급적인 메소드들이 있다고 대충 생각 하시면 됩니다.

18. 트랜젝션 : 트랜잭션은 하나의 논리적 작업 단위로 수행되는 일련의 작업
트랜젝션의 특성은 크게 4가지 단어로 표현을 하고 각 단어의 첫 단어를 따서 ACID 라고 불린다.
Atomic, Consistent, Isolated, Durable

Atomic (원자성)
트랜젝션은 하나이상의 단위업무를 묶은 작업의 단위이다.
원자성은 모든작업이 이루어지거나 그 반대로 아무것도 이루어지지 않거나 하는것을 이야기 한다.
만약 모든 단위업무가 정상적이라면 트랜젝션은 성공된 것이고, 어떤 단위업무라도 실패가 난다면 전체 트랜젝션이 실패가 난 것이고 롤백이 이루어진다.

Consistent (일관성)
트랜젝션의 성공, 실패여부와 상관없이 일관성있는 상태를 유지해야한다.

Isolated (독립성)
트랜젝션 수행시 다른 트랜젝션이 중간에 끼어들지 못하도록 보장하는것을 말한다.
따라서, 각각의 트랜젝션은 독립적이어야하며 동일한 데이터를 동시에 읽고 쓸 수 없어야한다.

Durable (영속성)
트랜젝션이 완료가 되면 시스템에 어떤 오류가 있던지간에 그 결과는 영구히 반영이 되어야 한다.

19. 제약조건
제약조건이란 테이블에 부적절한 자료가 입력되는 것을 방지하기 위해서 여러 가지 규칙을 적용해 놓는거라 생각하면 됨. 간단하게 테이블안에서 테이터의 성격을 정의하는 것이 바로 제약조건
 ★ 데이터의 무결성 유지를 위하여 사용자가 지정할 수 있는 성질
 ★ 모든 CONSTRAINT는 데이터 사전(DICTIONARY)에 저장
 ★ 의미있는 이름을 부여했다면 CONSTRAINT를 쉽게 참조할 수 있음.
 ★ 표준 객체 명명법을 따르는 것이 좋다.
 ★ 제약조건은 테이블을 생성할 당시에 지정할 수도 있고, 테이블 생성 후 구조변경(ALTER)명령어
     를 통해서도 추가가 가능하다.
 ★ NOT NULL제약조건은 반드시 컬럼 레벨에서만 정의가 가능하다.

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

* 8번, 9번 추가내용
MSF(Microsoft Solution Framework)는 팀이나 기관으로 하여금 그들의 고객에게 비즈니스 요구에 따른 기술적 솔루션을 보다 성공적으로 제공할 수 있도록 하는, 마이크로소프트에 의해 실제적으로 입증된 여러 인적, 프로세스적 가이드라인으로 구성된다.
MSF/CD(Component Design)는 특히 컴포넌트 기반의 개발 방법론인 CBD를 위한 것이다. 요구사항 분석, 아키텍처 수립, 개념 설계, 논리 설계, 물리 설계를 위한 모든 과정의 가이드라인을 충실히 제공하고, 각 단계의 산출물을 정형적으로 정의함으로써 컴포넌트 기반의 애플리케이션 구축을 전반적으로 지원한다.
본서에서 제시하는 가이드라인은 RUP와 같은 다른 CBD 방법론과 많은 특성을 공유하지만 다음과 같은 부가적인 특징이 있다.
1) 아키텍처 측면에서 볼 때 데이터베이스 액세스뿐만 아니라 외부 서비스와의 통합을 위한 서비스 에이전트를 데이터 계층에 포함시켜 설명하고 있고, 비즈니스 계층에서도 외부에 기능성을 공개하기 위한 서비스 인터페이스를 도입하고 있다. 이들은 이질적인 플랫폼에서 개발되고 운영되는 프로그램의 통합과 상호운용을 활용하기 위한 서비스 지향 아키텍처(Service-Oriented Architecture, SOA)를 설계 방법론에 적극 도입한 결과이다.
2) 설계 지원 도구는 수단일 뿐 목표가 아니므로 특정 도구에 의해 방법론이 왜곡되거나 특정 도구만을 위한 방법론을 개발하는 것은 바람직하지 않다. 본서는 MSF/CD를 개념과 실천을 위한 가이드라인으로 충실하게 소개하고, 여러 도구를 사용하여 구현 사례를 산출함으로써 도구 중립적인 특징이 있다.
3) Visual Studio Team System이 도입될 경우 본 방법론에 따른 프로젝트의 전체 라이프사이클과 모든 산출물을 보다 자동적이고도 체계적으로 관리할 수 있을 것이다.
모든 기술은 상황에 적합하여야만 의미가 있으며, 단지 기술을 사용하기 위하여 문제를 오히려 복잡하게 하거나 왜곡시키는 것은 결코 바람직하지 않다. 비유적으로 말하자면 손에 망치를 가졌다고 주변의 모든 사물을 못으로 착각해서는 안 될 것이다.
본서를 통하여 설계 방법론의 여러 원칙과 기술을 충실히 배양하고, 적절한 문제에 이들을 효과적으로 적용하는 경험과 안목을 더하는 것은 고급 개발자가 되기 위한 필수적인 과정일 것이다. 많은 개발자가 있지만 시스템 분석과 설계에 높은 안목을 가진 아키텍트는 절대적으로 부족한 현실에서 본서가 진정한 아키텍트와 수준 높은 개발자의 길로 안내하는 데 큰 도움을 주리라 확신한다.