.NET Framework 1.0 (2002)

C# 1.0 / Visual Basic.NET (7.0)

첫 통합 개발 환경

CLR 및 기본 클래스 라이브러리 파일 포함


.NET Framework 1.1 (2003)

C# 1.1 / Visual Basic.NET (7.1)

Windows Server 2003 -> .NET Framework 1.1 표준 탑재


.NET Framework 2.0 (2005)

ASP.NET 2.0, ADO.NET 2.0, Windows Form 2.0

C# 2.0 / Visual Basic 2005 (8.0)

SQL Server 2005

제네릭 클래스 도입, 리팩토링 기능, 코드 스니펫

Visual Studio Team System (VSTS)

ALM (Application Lifecycle Management, 애플리케이션 수명주기관리)


.NET Framework 3.0 (2006)

코어부분은 .NET Framework 2.0

WPF (Windows Presentation Foundation) : UX (User Experience)

WCF (Windows Communication Foundation) : Messaging Model 기반 분산통신기술 통합

WF (Windows Workflow Foundation)

CardSpace

Windows Vista -> .NET Framework 3.0 기본 탑재


AJAX.NET (2007)

ASP.NET AJAX 1.0 (추가 모듈) : AJAX Web Application 개발 용이

Expression Blend : WPF 어플리케이션 GUI 구축


.NET Framework 3.5 (2007)

WPF의 GUI 설계

Javascript 디버그 기능 및 IntelliSence

ASP.NET AJAX 표준 탑재

.NET Framework 2.0, 3.0, 3.5 선택 가능

C# 3.0 / Visual Basic 2008 (9.0)

LINQ 기능

SQL Server 2008

Windows Server 2008

Visual Studio Team System 2008


.NET Framework 3.5 Service Pack1 (2008)

ASP.NET Dynamic Data

ADO.NET Entity Framework / Data Services

WCF Atom Pub Services

클라이언트 프로파일 (Client Profile)

Visual Studio SDK 1.1 (SP1)

Visual C++ 2008 -> 오피스 리본 스타일 Interface / 고급 GUI 컨트롤


.NET Framework 4.0 (2010)

Base Class Library 개선

MEF (Managed Extensibility Framework) 

: 어플리케이션과 컴포넌트의 재사용성을 높이기 위한 라이브러리
- 확장성이 쉬운 선언과 사용
- 런타임 확장 모니터링

데이터 구조 추가

: 64비트 프로그래밍을 위한 새로운 데이터 구조
- BigInteger & CodePlexNumber
- Tuple, SortedSet

IO 개선
- 메모리 매핑 파일
- 모델 해제 통일

Parallel Computing

TPL (Task Paralleel Library)

: 병렬 처리를 하기 위한 확장 메서드
- 수평적인 병렬 작업의 실행
- 최대 효율을 위한 Stealing 알고리즘 작업
- 상위 레벨을 추상화 (더 이상 스레드의 지식이 필요없다)

PLINQ (Parallel LINQ)

: 선언적인 데이터 병렬처리 (초점은 '무엇이' '어떻게'가 아니다)
- LINQ to Object 를 사용하여 단순한 병렬 처리

CDS (Coordination Data Structures)

- 병렬 처리를 쉽게 하기 위한 공통 구조

.NET Framework Client

WPF (Windows Presentation Foundation)

- 클라이언트 프로파일 (Client Profile)
- 비지니스 컨트롤에 초점
- 실버라이트 시너지 효과
- Windows7 지원 (멀티터치 등)

ASP.NET 4.0

ASP.NET Dynamic Data 개선

ASP.NET MVC

MVC 에 ASP.NET Dynamic Data 지원

- 데이터 중심으로 뷰와 커스텀 컨트롤 만들기 쉽게

CSS, ID, ViewState 컨트롤이 더 좋아진 ASP.NET

확장할 수 있는 캐싱 프레임워크 (Caching Framework)

Velocity

.NET 을 위한 분산 캐싱

ASP.NET 의 Session State Provider

: .NET 이 지원하는 가장 대표적인 분산 캐싱

유연하고, 서로 다른 캐싱 모델

- Partitioned
- Replicated
- Local

Windows Workflow & Communication Foundation

완전 선언적인 서비스

워크플로우 개선

- 프로그래밍 모델 개선
- 새로운 플로우차트 모델 스타일 & 확장 활동 팔레트
- 워크플로우 규칙 통합
- 디자이너 경험 향상
- 상당한 성능 향상
- 상호 메시지

WCF 개선

- Duplex 내구성
- In-process Channel
- WS-Discovery & UDP Channel

ADO.NET Data Services

관계형 데이터 지원

'오프라인' 상태 지원

ASP.NET AJAX

자바스크립트 UI 템플릿과 데이터 바인딩

AJAX 컨트롤 툴킷 개선

DOM Selection, 애니메이션 등


  • IIS가 웹 리소스 요청을 받았을때 처리 하는 방식
  • IIS 5.X 버전과 IIS 6.0 의 버전간 차이가 있다.

  • IIS 5.X
  1. 클라이언트의 모든 HTTP 요청은 IIS의 실행 프로세스인 inetinfo.exe 가 받아 들인다.
    inetinfo는 요청 리소스의 형식을 확인하여 확장자와 매핑되어 있는 ISAPI Extension 모듈로 요청을 전달한다.
    ex)
    asp -> asp.dll,
    aspx, asmx, ashx -> aspnet_isapi.dll,
    txt, 이미지, 스크립트 없는 asp 파일이 요청되면 inetinfo는 외부 모듈 연계없이 직접 처리함.
  2. aspnet_isapi.dll 은 닷넷 웹 리소스를 직접 처리 하지 않고 ASP.NET Worker Process 인 aspnet_wp.exe 로 요청을 전달하는 dispatcher 로서 역할을 수행한다.
  3. aspnet_isapi.dll 과 aspnet_wp.exe 사이의 연결은 프로세스 경계를 넘어 데이터를 전송하기 위한 Win32 메커니즘인 명명 파이프를 통해 이루어 진다.
  4. ASP.NET Worker Process 인 aspnet_wp.exe 는 닷넷공용언어런타임(CLR)을 호스트하며 HTTP 파이프라인을 활성화하여 웹 리소스의 실제 처리를 시작한다.
  5. 각 웹 응용프로그램들은 Worker Process 의 가상 디렉터리로 식별되며, AppDomain 이라는 응용프로그램 도메인에 속하게 된다.
    - 각각의 웹 응용프로그램들은 논리적으로 격리됨을 알 수 있다.
    (응용프로그램 설정(Application, Session, Cache 등)이 공유 되지 않는다.)
    - AppDomain 은 Win32 내의 프로세스 분리와 유사한 방식으로 서로 분리되고, 격리 되어 진다.
    - CLR 은 서로 다른 AppDomain 내에 있는 개체들 사이의 직접적인 호출을 막음으로써 격리를 강제한다.
    (여기서 웹 응용프로그램이라 함은 웹 사이트 혹은 응용프로그램으로 구성된 웹사이트 하위 가상 디렉터리를 의미)
  6. 기본적으로 모든 활성 웹 응용프로그램들은 하나의 Worker Process 에서 호스트한다.
    - 그러나 멀티 CPU를 가진 웹 서버라면 다중 Worker Process 가 실행되도록 할 수 있다. (웹 가든)
    - machine.config 파일의 <processModel> 섹션의 webGarden 속성을 true 로 설정하고 cpuMask 속성을 비트 마스크값으로 지정

  • IIS 6.0
  1. 클라이언트의 모든 HTTP 요청은 커널 모드에서 작동하는 http.sys 드라이버가 받아 들인다.
    - http.sys 리스너는 요청을 적절한 응용프로그램 풀 요청 대기열에 배치한다.
    - 다수의 웹 응용프로그램들이 하나의 응용프로그램 풀을 사용하더라도 풀의 요청 대기열은 오직 하나다.)
  2. 응용프로그램 풀은 worker process 와 가상디렉터리를 구별한다.
    - 요청을 올바른 worker process 로 보내기 위해 http.sys 매퍼가 사용하는 논리 프로세스 경계에 의해 정의되는 구성 개체이다.
  3. WAS 는 메타베이스와 응용프로그램 푸을 관리하는 중추적인 역할을 담당한다. (WAS 는 Worker Process 를 생성, 관리한다.)
    - 이 프로세스는 공유되지 않는 svchost.exe 의 사용자 모드에서 Local System 권한으로 실행된다.
    - 또한 worker process 의 모니터링, 리사이클링 등 관리를 담당한다.
  4. IIS 6.0 의 메타베이스는 XML 기반의 파일로 관리된다.
    - WAS 는 이 메타베이스의 변경사항을 실시간으로 반영한다.
  5. 닷넷 웹 리소스를 처리하기 위한 worker process 는 더 이상 aspnet_wp.exe 가 아닌 w3wp.exe 이다.
    - w3wp.exe 는 응용프로그램 풀 대기열로부터 요청을 읽어온다.
    - w3wp.exe 는 또한 asp 와 같은 닷넷 이전버전의 웹 리소스도 처리한다.
  6. inetinfo.exe 에서 호스트 되었던 aspnet_isapi.dll 은 이제 w3wp 라는 worker process 가 로드한다.
    - aspnet_isapi.dll 은 CLR 을 로드하고 파이프라인을 시작한다.

  • IIS6.0 에서는 WWW 서비스가 더 이상 inetinfo.exe 프로세스에 호스트 되지 않고 별도의 작업자 프로세서인 w3wp.exe 에 의해 처리된다.
    단, 요청 프로세스 설정, FTP, SMTP, NNTP, IIS Admin 과 같은 서비스는 여전히 inetinfo.exe 에서 호스트 한다.

  • 커널 모드(Kernel Mode)와 사용자 모드(User Mode)
    - 커널 모드는 컴퓨터의 모든 메모리에 접근할 수 있고 다른 어플리케이션의 프로세스로부터 격리된 메모리 공간에서 실행된다.
    - 커널 모드 구성요소만이 하드웨어와 같은 리소스에 직접 접근이 가능하다.
    - 반면 어플리케이션과 이를 지원하는 서브시스템은 사용자 모드에서 실행 된다.
      사용자 모드의 프로세스는 직접 자원에 접근할 수 없으며 자원에 대한 접근 요구가 커널 모드 구성 요소에 의해 허가되어야 한다.

  • 정의
    - 로드밸런싱(Load Balancing)이란 하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 여러 대의 서버가 분산처리하여 서버의 로드율 증가, 부하량, 속도저하등을 고려하여 적절히 분산처리하여 해결해 주는 서비스.
  • 서비스 방식
    - 네트워크 상단의 L 4스위치 가상서버가 존재하여 서버로 들어오는 패킷을 리얼 서버로 균일하게 트래픽을 부하 분산시킨다.
    - 만약 리얼 서버 중 정상적으로 작동하지 않는 경우가 발생하면 이를 감지하여 정상적으로 작동하는 서버로 부하 분산시킨다.
  • 장점
    - 고가의 서버로 확장하지 않고 저렴한 비용으로 다수의 서버를 증설하여 경제적으로 비용절감 할 수 있다.
    - 대량의 트래픽으로 1대의 서버로 집중적인 부하율이 높아지면 L4 스위치가 이를 감지하여 합리적으로 부하분산 처리 할 수 있다.
    - 1대의 서버 장애가 발생하여도 서비스 중단없이 다른 서버로 적절히 자동으로 분배하여 서비스가 계속 운용가능하게 할 수 있다.
    - 추후 사용량이 많아 서버 확장으로 서비스 중단없이 서버 증설이 가능하다.

  • LINQ 설명
    • Language Integrated Query
    • 데이터에 대해 질문하고, 그 답에 해당하는 데이터를 찾는 것
    • 데이터 검색에 편리함
    • Example
      • 1
        2
        3
        4
        5
        var women =
                from    woman in womanList     // wamanList에서 (여자인가?)
                where    woman.age > 20        // 20세가 넘는 성인을 (성인인가?)
                orderby    woman.age            // 나이 순으로 정렬하여 (나이가 어린가?)
                select    woman;                // 배열 데이터로 추출한다.
        cs
  • from
    • 데이터를 검색하기 위해 검색할 범위를 지정해주는 역할
    • LINQ 쿼리식 (Query Expression) 은 반드시 from 으로 시작해야함
    • foreach 문과 거의 비슷
    • foreach ( var element in elementList ) == from element in elementList
      - foreach 문과 from 절의 element 변수의 차이점
        - foreach의 element 변수에는 실제로 elementList의 데이터가 저장된다.
        하지만 LINQ에서는 element 변수에 데이터가 저장되지 않고,
        단순히 'elementList에 존재하는 요소'라는 의미로만 사용된다.
    • from 에서 사용가능한 타입은 IEnumerable<T> 인터페이스를 상속하는 타입
      C#에서의 배열이나 컬렉션 등은 모두 IEnumerable<T>을 상속하기 때문에
      배열이나 컬렉션 타입이라면 전부 사용가능하다.
  • where
    • from으로 검색 범위를 지정하였다면, where은 범위 내에서 데이터를 걸러내는 필터 역할
  • orderby
    • orderby는 걸러진 데이터를 정렬해주는 연산자
    • 기본값으로 오름차순 정렬을 사용함
    • 가독성을 위해서 오름차순과 내림차순을 명시해주는 것이 좋다.
    • Example
      • 1
        2
        orderby woman.age ascending //오름차순
        orderby woman.age descending //내림차순
        cs
  • select
    • 최종적으로 검색된 데이터를 추출하는 역할
    • 추출된 데이터의 타입은 select절에 지정한 변수의 타입으로 결정됨
    • 무명형식(타입)으로 만들어서 추출할 수도 있다.
    • Example
      • 1
        2
        3
        4
        5
        select woman;        //Woman형 배열 데이터 추출
        select woman.name;    //String형 name 배열 데이터 추출
        select new { title = "성인여자", name = woman.name };
        //무명 타입의 배열데이터 추출
         
        cs
  • 링크를 사용하기 위해서는 System.Linq 네임스페이스를 추가해주어야 함

Example
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Woman
{
    public string name {get; set;}
    public int age {get; set;}
}
 
class MainApp
{
    static void Main(string[] args)
    {
        Woman[] womanList =
        {
            new Woman() { name = "A", age = 24 },
            new Woman() { name = "B", age = 20 },
            new Woman() { name = "C", age = 32 },
            new Woman() { name = "D", age = 20 },
        };
 
        var Women = from woman in womanList
                    where woman.age > 20
                    orderby woman.age ascending
                    slect new {
                        title = "검색 결과",
                        name = woman.name
                    };
 
        foreach(var woman in Women)
        {
            Console.WriteLine("{0}: {1}", woman.title, woman.name);
        }
    }
}
 
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
 
namespace TestKMH.Web
{
    public partial class Test002 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            CheckIP();
        }
 
        protected void CheckIP()
        {
            if (Cache == null || Cache["ConIP"== null)
            {
                //Cache가 없을 경우, 접속IP로 Cache 생성
                Cache.Insert("ConIP", Request.UserHostAddress, null, DateTime.Now.AddMinutes(5), TimeSpan.Zero);
                lblMessage.Text = "접속IP 캐시 생성";
            }
            else
            {
                if (Cache["ConIP"].ToString() == Request.UserHostAddress)
                {
                    //10분이내 같은 IP주소로 접속한 경우
                    lblMessage.Text = "5분이내에 같은 IP로 접속했습니다! 5분후에 이용해 주세요.";
                }
                else
                {
                    //다른 IP로 접속했을 경우 Cache에 업데이트
                    Cache.Remove("ConIP");
                    Cache.Insert("ConIP", Request.UserHostAddress, null, DateTime.Now.AddMinutes(5), TimeSpan.Zero);
                    lblMessage.Text = "최신IP로 캐시 업데이트";
                }
            }
        }
    }
}
 
cs


http://meyerweb.com/eric/tools/dencoder/

참고 URL : https://support.microsoft.com/ko-kr/kb/224609



MS는 21일(현지시간) MS는 미국 레드몬드에서 차기 운영체제 Window 10 컨슈머 프리뷰 공개 행사를 열고 윈도우 10을 공개하였다. 그리고 Window 7, Window 8.1, Window 폰 8.1 사용자는 올해 가을 Window 10 출시 이후 1년간 무료 업그레이드를 제공하기로 했다.


MS는 Window 10으로 PC, 태블릿, 스마트폰 운영체제를 모두 통합한다는 계획을 밝혔고, 준비 중인 새 브라우저 스파르탄도 함께 선보였다.

스파르탄은 Window 기기를 모두 아우르는 단일 브라우저 경험을 제공하기 위해 만들어졌다. 이날 행사에서 MS 운영체제 시스템 그룹을 맡고 있는 조 벨피오레 부사장은 “우리는 지금이 바로 새로운 브라우저를 만들 때라고 생각했다”고 말했다.


MS는 이날 행사에서 브라우저 핵심인 렌더링 엔진에 대해선 자세히 설명하지 않았다. 기존 엔진을 수정해서 탑재할지 완전히 새로운 엔진을 넣을지 아직 명확하진 않지만 IE보다 경량화된 브라우저를 만드는 것이 목표라고 알려졌다.


스파르탄 브라우저의 특징

  • 브라우저에 음성비서 서비스인 코타나를 결합
  • 웹페이지를 저장해 놓으면 오프라인 상태에서도 해당 내용을 열어 볼 수 있는 ‘읽기목록’ 기능
  • 웹 페이지에 글이나 그림을 추가할 수 있게 되어 화면을 캡처하지 않아도 필기 기능을 통해 웹 페이지를 편집하고 MS 원노트에 저장가능
  • 사용자의 주소록, 달력, 검색 이력을 수집해 사용자에게 맞춤 정보 제공
  • 개인용 탭, 업무용 탭, 비밀 탭 등을 분리해서 관리할 수 있는 유연한 탭 기능 추가
  • IE와 동일한 차크라 자바스크립트 엔진과 트라이던트 렌더링 엔진(HTML, XML, CSS 등 웹 페이지 구성요소를 조합해 완성된 웹 페이지를 구현하는 엔진)을 탑재, 사용자 환경이나 기능은 크롬처럼 변하지만, 웹 브라우저의 근간은 IE환경 유지


스파르탄이 출시된다고 해서 IE가 사라지는 것은 아니다. IE는 여전히 윈도의 기본 웹 브라우저다. Window 10에도 IE11이 기본 탑재될 예정이다. MS는 사용자에게 IE와 스파르탄을 함께 제공하는 투 트랙 전략을 취한다. 스파르탄은 Window 스토어에서 따로 내려받을 수 있다.


+ Recent posts