본문 바로가기

.Net Technology/.NET General

닷넷에서 CQRS 적용을 위한 가이드 모음 영국에서 엔터프라이즈 마켓은 대부분 은행권 백오피스 시스템이 주를 이룬다. 너무나 복잡한 도메인 지식들 때문에 보다 효율적 유지보수를 위해서 DDD 기반의 아키텍처를 선호해왔다. 도메인 지식과 코드를 최대한 분리시키지 않고자 하는 것이 그 이유이다. 하지만 DDD의 단점은 DAL위에 Repository가 있고 그 위에 다시금 DDD가 있고 심지어 레거시 코드와 많이 융합된 오래된 시스템은 그 DDD위에 다시 BSL이 있는 것을 많이 보게 된다. BSL이 아니더라도 DDD를 ViewModel Factory같은 녀석으로 감싸야 하는 것이 일반적이다. 이렇게 다중 레이어들로 계층을 이루게 되다보니 비지니스 로직이 하나 변경되었을때 모든 레이어들이 수정되어야 한다는 무시무시한 단점이 있다. 심지어 여러 코드들이.. 더보기
닷넷의 리버스 엔지니어링과 CIL 2009년 2월호로 월간 마이크로소프트웨어에 기고한 내용입니다. 지면상 내용을 간추리려고 노력했습니다. 리버스 엔지니어링은 소프트웨어 공학의 한 분야로 이미 만들어진 시스템을 역으로 추적하여 처음의 문서나 설계기법 등의 자료를 얻어 내는 일을 말한다. 역 어셈블리 공학이라고도 부르는 이 리버스 엔지니어링 기술을 보는 시각이 곱지 못하다. 왜냐하면 대부분 다른 이의 소프트웨어를 저작자의 동의 없이 제3의 프로그램을 만들어 내는 것이 가능하기 때문이다. 대표적인 예로 크랙과 같은 프로그램을 만드는 것이 여기에 해당된다. 하지만 리버스 엔지니어링을 좋은 방향으로 잘 이용한다면 여러 방면으로 유용할 수 있다. 먼저 닷넷의 경우 소스코드가 없는 어셈블리를 수정할 수 있을 뿐만 아니라 수정하고 싶지만 미숙한 닷넷 .. 더보기
C# nullable 타입의 동작원리 일반적으로 컴퓨터의 언어에서는 데이터의 부재를 “null”이라는 예약어를 이용해서 표현해 왔다. C#에서 또한 null 타입이 존재하지만 닷넷의 데이터 구조상 null을 표현하기에는 다소 모호한 부분이 있다. 그렇기 때문에 이 null 타입에 대한 이슈는 닷넷 1.0 시절부터 상당히 많이 논의되어왔던 내용이다. 그럼 C#에서 null 타입의 모호한 부분이 무엇이며 null타입의 올바른 사용 방법들에 대해서 살펴보도록 하겠다. null의 진정한 의미 null에 대한 정의를 내리기 전에 먼저 닷넷의 데이터 타입에 대해서 살펴보도록 하겠다. 닷넷의 CTS(Common Type System)에서는 모든 것이 객체다. 여기에는 우리에게 익숙한 int, char, double 등의 간단한 타입부터 string과 같.. 더보기
COM+와 분산 트랜잭션의 이해 이번 강좌에서는 엔터프라이즈급 솔루션을 설계하기 위해서 반드시 알고 있어야 하며 닷넷 프로젝트 설계에 있어서 기본적으로 알고 있어야 하는 개념인 분산 트랜잭션의 개념과 COM+의 개념을 집중 해부 해보고자 한다. 이 글을 읽는 독자는 닷넷과 트랜잭션의 개념은 이미 알고 있다고 가정아래 썰을 풀도록 하겠다. MTS(Microsoft Transaction Server)의 이해 분산 트랜잭션에 대한 이야기를 다루기 전에 10년 전 과거로 올라가 보고자 한다. 마이크로소프트는 엔터프라이즈급 규모로 확장 가능한 서버 애플리케이션 개발 환경을 지원하기 위해 마이크로소프트 트랜잭션 서버(MTS)를 1996년에 만들어 발표하였다. MTS는 COM과 DCOM으로 개발된 기업용 어플리케이션 시스템을 위한 실행 환경을 가지.. 더보기
가비지 컬렉터의 동작원리 흔히 닷넷기반의 환경을 관리되는(Managed) 환경으로 부르곤 한다. 그렇다면 도대체 무엇이 관리가 된다는 것인가? 그 관리의 주체는 바로 메모리이다. 이전 Native 시대에는 메모리를 할당하고 해제하는 부분을 개발자가 직접 처리하였지만 닷넷은 그 부분을 자동으로 관리해주는 것이다. 닷넷이 관리되는 환경의 수행이 가능할 수 있는 것은 바로 “가비지 컬렉터(Garbage Collector)”가 닷넷에 존재하기 때문이다. 관리환경의 장점을 최대한 활용하고 사용하기 위해서는 가비지 컬렉터에 대해서 잘 알아 두어야 하고 동작원리를 파악하고 있어야 한다. 필자는 가비지 컬렉터의 원리에 대한 내용을 2002년도 “Chappell의 .NET 여행”이라는 책에서 처음 접했었고, 이 내용은 닷넷의 메모리 관리를 이해.. 더보기