프로그래밍/C# & .NET 17

CLR 메모리 구조 (노트)

CLR 메모리 참고 자료 http://www.simple-talk.com/dotnet/.net-framework/understanding-garbage-collection-in-.net/ 에 있는데, JVM이 client모드와 server모드가 있듯이 workstation 모드와 server 모드 두개를 가지고 있다. (current and synchronous). 간략하게 정리하자면 concurrent mode는 JVM의 concurrent GC 모드와 유사하게 pause time을 최소화하는 것이고 주로 desk ap에서 응답 시간 위주로 튜닝하고자할때 사용되고, synchronous 모드는 JVM의 Thoughput collector와 비슷한 원리 같은데, pause를 주더라도 collection을..

자바개발자가 본 .NET 프레임웍

.NET 프레임웍이란? MS에서 개발한 프레임웍으로 개발 환경 : 다양한 컴파일 환경과, C#,VB등의 언어를 지원하고 있다. 개발 프레임웍 다양한 라이브러리들을 제공한다. ASP.NET과 같은 MVC기반의 웹개발환경 WebForm과 같은 웹 UI환경 WPF와 같은 클라이언트 UI개발 WCF와 같은 통신 프레임웍 ADO.NET과 같은 DB 접근용 개발 프레임웍등을 제공한다. 런타임 프레임웍 : 자바와 유사하게, Virtual Machine과 같은 런타임환경을 지원한다. 이다. .NET 프레임웍의 런타임 동작 방식 .NET으로 만들어진 프로그램은 컴파일된후 .exe 파일로 존재하는데, 이 exe 파일은 실제 실행 파일이 아니라 자바의 .class 파일 처럼 Machine에 종속적이지 않은 byte code..

ApplicationDomain

.NET에는 Application Domain이라는 개념이 있는데, 사실 시스템의 장애에서 가장 중요한것은 장애의 발생을 막는것도 중요하지만, 장애가 다른 애플리케이션으로 전파되지 않도록 막는것이다. OS에서는 Process가 가장 작은 단위로 별도의 주소 공간, 별도의 Thread 공간을 가지고 가지기 때문에 일반적으로 Process가 가장 작은 Isolation 단위이다. .NET에서는 이를 확장해서 ApplicationDomain이라는 개념을 사용하는데, 하나의 Process를 ApplicationDomain이라는 논리적인 단위로 나눠서 관리하고, 하나의 Application이 하나의 ApplicationDomain 위에서 동작된다. 각 Application Domain은 독립된 주소 공간과 Thr..

Microsoft Sync Framework (MSF)

오늘 제안 관련해서 잠깐 살펴본 내용인데, MS에는 MSF라는 프레임웍이 있다. 무엇인가 하니, 두개의 DataSource를 동기화 시켜주는 것이다. Outlook client와 Win Phone 동기화 시켜주는것, ITunes에서 컨텐츠 동기화와 같은 동기화가 대표적인 예이다. MSF는 소스 데이타스토어(이하 DS)에서 타겟 DS로 데이타를 동기화 시켜주는데, 기본적인 원리 자체는 소스 DS의 Item들에 Time stamp 등을 달아서, SRC와 DES을 비교하여 동기화를 해주고, 만약에 Confliction이 발생하면 Call back에 정의된 Rule에 따라서 Confliction을 처리해주게 된다. 간단한거 같은데, 왜 MSF가 필요하냐? 일단 구조를 보면, 데이타를 가지고 오고 비교하기 위한 ..

ildasm (C# 디컴파일러)

C#에도 자바의 JAD와 비슷하게 디컴파일툴이 있는데, ildasm.exe라는 도구이다. *.exe 파일을 ildasm을 통해서 디컴파일 해보면 어셈블리코드로 대략 어떤 작업을 하고 있는지 볼 수 있다. (Reverse engineering할때 유용할듯) 사용방법은 프로그램 > 시작 > Visual Studio Folder > Visual Studio Command Prompt를 실행한 후 ildasm 을 치면 GUI 툴이 뜬다. 파일메뉴에서 EXE 파일을 열면 된다. 보고싶은 메서드를 더블 클릭하면 어셈블리 코드를 보여준다. 아래는 간단한 HelloWorld.cs를 디어셈블해본 내용 HelloWorld.cs using System; using System.Collections.Generic; using..