C# 6.0 완벽 가이드/ .NET Framework 개요

  • .NET Framework의 거의 모든 능력은 다종다양한 ‘관리되는 형식(managed type)’들을 통해 제공된다. 이 형식들은 계통구조(hierarchy) 형태의 이름공간들로 조직화되어 있으며, 일단의 어셈블리 파일들로 배포, 설치된다. 이들과 CLR(공용 언어 런타임)을 합친 것이 바로 .NET 플랫폼이다.
  • .NET Framework의 형식들 일부는 CLR이 직접 사용한다. 이들은 관리되는 호스팅 환경에 필수적인 형식들로, mscorlib.dll 이라는 어셈블리 안에 들어 있다.
    • C#의 내장 형식들과 기본 컬렉션 클래스들, 그리고 스트림 처리나 직렬화, 반영(reflection), 스레드 적용, 네이티브 상호운용성을 위한 형식들이 여기에 속한다.
  • 이보다 한 수준 위에는 CLR 수준의 기능성에 살을 붙이는 추가적인 형식들이 있다. 이들은 이를테면 XML 처리나 네트워킹, LINQ 같은 기능을 제공한다.
  • .NET Framework의 그 나머지 부분은 응용 API 들로 구성되어 있는데, 이들 대부분은 크게 다음과 같은 3가지 기능 영역으로 분류된다.
    • 사용자 인터페이스 기술
    • 뒷단(backend) 기술
    • 분산 시스템 기술
  • .NET Framework 4.6의 새로운 기능
    • 쓰레기 수거기가 수거를 실행하는 시점을 좀 더 세밀하게 제어할 수 있는 새 메서드들이 GC 클래스에 추가되었다.
    • 새롭고 더 빠른 64비트 JIT 컴파일러가 도입되었다.
    • System.Numerics 이름공간에 하드웨어 가속 행렬 및 벡터 형식들이 추가되었다.
    • 라이브러리 작성자를 위해 System.AppContext라는 새로운 클래스가 추가되었다. 이를 이용해 라이브러리를 작성하면 라이브러리 사용자가 새로운 API 기능들을 선택적으로 전환할 수 있다.
    • Task 인스턴스 생성시 현재 스레드의 문화 설정과 UI 문화 설정이 반영된다.
    • 더 많은 컬렉션 형식들이 IReadOnlyCollection<T>를 구현한다.
    • WPF가 개선되었다. (더 나은 터치 및 고 DPI 처리 등)
    • ASP.NET이 HTTP/2와 Window 10의 TBP(Token Binding Protocol)를 지원한다.
  • .NET Framework 4.5의 새로운 기능
    • Task를 돌려주는 메서드들을 통한 광범위한 비동기성 지원
    • ZIP 압축 프로토콜 지원
    • 새로운 HttpClient 클래스를 통한 HTTP 지원 개선
    • 쓰레기 수거기와 어셈블리 자원 조회 성능 향상
    • WinRT 상호운용성 및 Windows 스토어 모바일 앱 구축을 위한 API 지원
    • 새로운 TypeInfo 클래스 추가
    • 정규 표현식 부합시 만료 시간을 지정하는 능력 추가
    • 병렬 컴퓨팅 부분에서 생산자-소비자 스타일의 네트워크 구축을 위한 Dataflow라는 특화된 라이브러리가 추가

CLR과 핵심 프레임워크

(기본적인 설명들 생략)

응용 기술

UI 기술

(기본적인 설명들 생략)

ASP.NET

  • ASP.NET으로 작성된 응용 프로그램은 Windows IIS에 호스팅되며, 임의의 웹브라우저를 통해 접근할 수 있다.
  • ASP.NET으로 웹 페이지를 작성할 때는 전통적인 Web Forms를 사용할 수도 있고 좀 더 최근의 MVC API를 사용할 수도 있다. 둘 다 ASP.NET 기반구조를 바탕으로 한다.

WPF (Windows Presentation Foundation)

  • WPF는 .NET Framework 3.0에서 도입되었다. WPF가 Windows Forms에 비해 갖는 장점은 다음과 같다.
    • 임의 변환, 3차원 렌더링, 진짜 투명 등의 정교한 그래픽 기능을 지원한다.
    • 기본 측정 단위가 픽셀이 아니라서 그 어떤 DPI(dots per inch) 설정에서도 응용 프로그램이 제대로 표시된다.
    • 동적 레이아웃을 잘 지원한다. 덕분에 응용 프로그램을 현지화해도 UI 요소들이 겹칠 위험이 없다.
    • 렌더링에 DirectX를 사용하기 때문에 속도가 빠르다. 그래픽 하드웨어 가속을 잘 활용한다.
    • 사용자 인터페이스를 내부 코드 파일들과는 독립적으로 관리할 수 있는 XAML 파일에 선언적으로 서술할 수 있다.

뒷단 기술들

ADO.NET

  • ADO.NET는 관리되는 자료 접근 API이다. 이름은 90년대의 ADO(ActiveX Data Objects)에서 비롯된 것이지만, 기술 자체는 ADO와 완전히 다르다.
  • ADO.NET에는 다음과 같은 주요 저수준 구성요소 두 가지가 들어 있다.
    • 공급자 계층
      • ADO.NET의 공급자(provider) 모형은 데이터베이스 공급자에 대한 저수준 접근을 위한 공통의 클래스들과 인터페이스들을 정의한다.
      • 데이터베이스 연결, 명령, 어댑터, 판독기를 위한 인터페이스들이 있다.
      • MS SQL Server에 대한 지원은 .NET Framework 자체에 내장되어 있고, 그 밖의 데이터베이스들에 대한 서드파티 드라이버들도 많이 있다.
    • DataSet 모형
      • DataSet은 구조화된 자료 캐시이다. 테이블, 행, 열, 관계, 제약, 뷰 같은 SQL 요소들을 정의한다는 점에서 기본적인 형태의 메모리 내부 데이터베이스(in-memory database)와 비슷하다. 프로그램에서 이런 자료 캐시를 활용하면 서버와의 자료 교환 횟수를 줄일 수 있으므로 서버의 규모 가변성과 리치클라이언트 UI의 반응성이 좋아진다. DataSet은 직렬화를 지원하며, 클라이언트와 서버 응용 프로그램이 연결을 통해 주고받을 수 있도록 설계되었다.
  • 공급자 계층 위에는 다음 두 API가 놓여 있다. 이들은 LINQ를 통해 데이터베이스를 질의하는 기능을 제공한다.
    • Entity Framework
    • LINQ to SQL
  • 두 기술 모두 ORM(object/relational mapping; 객체-관계형 데이터베이스 대응)을 포함한다.
    • 이들은 자동으로 C# 프로그램 안의 객체들을 데이터베이스의 행들에 대응시킨다. 이 덕분에 SQL select 문을 작성할 필요 없이 LINQ를 이용해서 객체들에 대해 질의를 수행할 수 있으며, SQL insert/delete/update 문을 작성하지 않고 객체들을 갱신할 수 있다.
    • 이를 활용하면 응용 프로그램의 자료 접근층의 코드를 줄ㅇ리 수 있으며, 강한 정적 형식 안전성도 얻을 수 있다. 또한 이 기술들을 이용하면 DataSet을 자료 저장소로 사용해야 하는 필요성도 없어진다.

Windows Workflow

  • Windows Workflow는 오랫동안 실행될 가능성이 있는 업무 프로세스의 모형화와 관리를 위한 프레임워크이다. 표준 런타임 라이브러리를 표방하는 Windows Workflow는 일관성과 상호운용성을 제공한다.
  • 또한 Windows Workflow는 동적으로 제어되는 의사결정 트리(decision-making tree)를 좀 더 적은 양의 코드로 구현하는데 도움이 된다.
  • Windows Workflow가 전적으로 뒷단 기술인 것은 아니다. 다른 곳에도 (예컨대 UI의 페이지 흐름 등) 얼마든지 사용할 수 있다.

COM+과 MSMQ

  • .NET Framework의 System.EnterpriseServices 이름공간에 있는 형식들을 이용하면 분산 트랜잭션 같은 서비스를 COM+과 연동해서 구현할 수 있다.
  • 또한 System.Messaging에 있는 형식들을 이용하면 비동기 단방향 메시징을 위한 MSMQ(Microsoft Message Queuing)도 사용할 수 있다.

분산 시스템 기술

WCF

  • WCF(Window Communication Foundation)는 .NET Framework 3.0에 도입된 정교한 통신 기반 구조이다.
  • WCF는 유연성과 구성 능력이 좋기 때문에 그 전신인 Remoting을 완전히 대체할 수 있으며, 또 다른 전신인 Web Services(.ASMX)도 거의 대체할 수 있다.

Web API

  • ASP.NET 위에서 실행되는 한 게층인 Web API는 구조가 Microsoft의 MVC API와 비슷하다. 단, 웹페이지가 아니라 서비스와 자료를 제공하도록 설계되었다는 점이 다르다.
  • WCF에 비한 강점은 대중적인 HTTP 기반 REST 규약을 따를 수 있다는 것이다. 그러면 최대한 많은 플랫폼과의 상호운용성을 손쉽게 얻을 수 있다.
[ssba]

The author

지성을 추구하는 디자이너/ suyeongpark@abyne.com

댓글 남기기

This site uses Akismet to reduce spam. Learn how your comment data is processed.