천객만래 [千客萬來] (It has an interminable succession of visitors)

[개발/IT] 아키텍쳐, 프레임워크, 플랫폼


- 아키텍처: 소프트웨어의 주요 설계 구조

 


소프트웨어의 주요 특징들을 결정짓는 주요 설계 구조이다.즉, 소프트웨어의 주요 구성 요소 및 구성, 이들간의


주요 인터페이스, 중요 동작 방식 등 소프트웨어의 주요 특징들을 결정짓는 모든 설계 구조를 포함한다.


소프트웨어의 주요 특징을 결정짓고 소프트웨어 개발에 미치는 영향도 매우 커서 소프트웨어 개발에 있어서 가장 중요한


부분이라고 할 수 있다.지원 프로그램, 라이브러리, 언어, 다른 소프트웨어 구성 요소 등과 같이 구체적인 구현을 포함하지 않는다는 점에서


프레임워크나 플랫폼과는 명확히 구분된다.


 


- 프레임워크: 소프트웨어 뼈대 구조


 

프레임워크는 다른 소프트웨어 프로젝트가 개발될 수 있는 뼈대 구조이다.지원 프로그램, 라이브러리, 언어,


다른 소프트웨어 구성 요소들을 엮어 주는 소프트웨어 등을 포함하고 있다.따라서, 플랫폼도 프레임워크의 일종이라고 볼 수 있으며,


MS사에서 닷넷 플랫폼을 닷넷 프레임워크라고 지칭하는 것도 틀린 것이 아니다.또한, UI 프로그램 개발을 위한 부분 만을 떼어내서


프레임워크라고 할 수도 있다.UI 프로그램 개발을 위한 부분 만으로는 완전한 소프트웨어 실행 환경이 되지 않으므로 플랫폼은 아니지만


프레임워크이다.이러한 점에서 프레임워크와 플랫폼은 다른 경우가 많다.


 


- 플랫폼: : 소프트웨어 실행 환경


 

가장 일반적이면서도 명료한 의미는 "소프트웨어가 실행되는 환경"이다.개발 언어나 개발 환경을 플랫폼에


포함시키기도 하지만 이는 부수적 개념 혹은  확장된 개념에 불과하고, 핵심은 "소프트웨어가 실행되는 환경"이다.


각 프로그램은 아무 플랫폼에서나 실행되는 것이 아니고 특정 플랫폼에서만 실행된다.

Posted by SB패밀리

플랫폼(Platform)과 프레임워크(Framework), 아키텍처(Architecture) 개념비교

 

참조 출처: 네이버 지식in

 소프트웨어 분야에서 프레임워크와 라이브러리, 플랫폼, 아키텍쳐를 비교해 보면, 다음과 같다.

 프레임워크: 소프트웨어의 뼈대 구조

 

프레임워크란 특정형태의 소프트웨어 문제를 해결하기 위한 상호 협력하는 클래스들과 인터페이스들의 집합. 즉 소프트웨어 콤포넌트들의 집합을 의미한다. 이는 여러클래스와 컴포넌트로 구성되고 좀더 높은 수준에서 패턴들을 조직화하며 다양한 애플리케이션에서 이용 가능한 범용성(generic)을 가진다.

 프레임워크는 다른 소프트웨어 프로젝트가 개발될 수 있는 뼈대 구조이다. 지원 프로그램, 라이브러리, 언어, 다른 소프트웨어 구성 요소들을 엮어 주는 소프트웨어 등을 포함하고 있다. 따라서, 플랫폼도 프레임워크의 일종이라고 볼 수 있으며, MS사에서 닷넷 플랫폼을 닷넷 프레임워크라고 지칭하는 것도 틀린 것이 아니다.

 또한, UI 프로그램 개발을 위한 부분 만을 떼어내서 프레임워크라고 할 수도 있다. UI 프로그램 개발을 위한 부분 만으로는 완전한 소프트웨어 실행 환경이 되지 않으므로 플랫폼은 아니지만 프레임워크이다. 이러한 점에서 프레임워크와 플랫폼은 다른 경우가 많다.


프레임워크에 대한 내용의 이해를 돕기위해 라이브러리와 비교를 해보자. 라이브러리는 애플리케이션에서 호출할수 있는 함수와 루틴으로 구성되며, 필요한 클래스를 개발자가 불러오는 방식을 지닌다.

 프레임워크와 라이브러리의 관계는 구성적인 측면에서 라이브러리는 함수와 루틴들로 볼 수 있고, 프레임워크는 콤포넌트들로 볼 수 있다. 실제 사용하는 측면에서 라이브러리는 내부에서 불러서 사용하고, 프레임워크는 내부에서 호출이아니라, 자체가 그대로 동작하거나,상속을 받아 재구성하여 동작한다. 이러한 콤포넌트들은 라이브러리를 불러서 사용할 수 있다.


프레임워크(Framework)
  - 잘 정의된 문제도메인 안에서 성공적으로 어플리케이션을 작성하기 위해 필요한 가치 있는 지식을 내포함
  - 비교적 규모가 크고, 복잡하며, 다루기 어려움
  - 어플리케이션 프로그래머는 프레임워크의 인터페이스를 구현하거나 프레임워크 클래스를 상속하여 사용함
  - 프레임워크는 적절한 시기에 어플리케이션을 호출함(흐름에 대한 제어를 프레임워크가 수행)

라이브러리(Library)
  - 어플리케이션 프로그래머가 적절하다고 생각할 때 호출하여 사용함
    (
흐름에 대한 제어는 어플리케이션 코드에서 수행)
  - 라이브러리는 어플리케이션 프로그래머에게 코드작성규칙을 강요하지 않음 
  - 어플리케이션 프로그래머는 코드 작성시 에러 핸들링 정책에 신중을 기해야 함
 

플랫폼: 소프트웨어 실행 환경

 

가장 일반적이면서도 명료한 의미는 "소프트웨어가 실행되는 환경"이다. 개발 언어나 개발 환경을 플랫폼에 포함시키기도 하지만 이는 부수적 개념 혹은  확장된 개념에 불과하고, 핵심은 "소프트웨어가 실행되는 환경"이다.

 각 프로그램은 아무 플랫폼에서나 실행되는 것이 아니고 특정 플랫폼에서만 실행된다. 일반적으로, O/S는 모두 플랫폼이다. Windows는 윈도우즈 프로그램만을 실행시킬 수 있는 플랫폼이고, 리눅스는 리눅스 프로그램만을 실행시킬 수 있는 플랫폼이다.

자바 런타임 환경도 플랫폼이다. 자바 프로그램은 O/S에 대한 종속성은 거의 없고 자바 런타임 환경없이는 실행되지 않으므로 자바 런타임 환경을 주요 플랫폼으로서 필요로 한다. 마찬가지로 닷넷 프로그램도 닷넷 런타임 환경없이는 실행되지 않으므로 닷넷 런타임 환경이 플랫폼이 된다.


아키텍처: 소프트웨어의 주요 설계 구조

 

소프트웨어의 주요 특징들을 결정짓는 주요 설계 구조이다. 즉, 소프트웨어의 주요 구성 요소 및 구성, 이들간의 주요 인터페이스, 중요 동작 방식 등 소프트웨어의 주요 특징들을 결정짓는 모든 설계 구조를 포함한다.

 소프트웨어의 주요 특징을 결정짓고 소프트웨어 개발에 미치는 영향도 매우 커서 소프트웨어 개발에 있어서 가장 중요한 부분이라고 할 수 있다. 지원 프로그램, 라이브러리, 언어, 다른 소프트웨어 구성 요소 등과 같이 구체적인 구현을 포함하지 않는다는 점에서 프레임워크나 플랫폼과는 명확히 구분된다.

 

정리하자면, 이렇게 된다.

 

아키텍쳐 = 소프트웨어 설계 구조

프레임워크 = 소프트웨어 개발 구조  <-- 라이브러리 참조

플랫폼 = 소프트웨어 실행 환경 

Posted by SB패밀리
기존에 대충 알고 있고 설명도 못하고 있던 것을 아래 출처에서 보고 더 정리할 수 있어서 고맙습니다.



Visual Studio 와 .NET Framework 의 관계를 알아보자.

 Visual Studio .NET = .NET 1.0

 Visual Studio 2003 = .NET 1.1

 Visual Studio 2005 = .NET 2.0  + .NET 3.0

 Visual Studio 2008 = .NET 3.5                         (Code Name : Orcas )

 Visual Studio 2010 = .NET 4.0                         (09년10월 현재 Bate2) 

  

NET Framework별 의 주요 기능

.NET 2.0  =  Generic(C#언어에 도입) 

.NET 3.0  =  WCF, WPF, XAML

.NET 3.5  =  LINQ, Silverlight

.NET 4.0  =  PLINQ  

  

간단 용어 정리 및 기능

 Generic

- 제네릭은 2.0 버전의 C# 언어와 CLR(공용 언어 런타임)에 새로 도입된 기능입니다. 제네릭을 통해 .NET Framework에 형식 매개 변수라는 개념이 처음 소개되었습니다. 형식 매개 변수를 사용하면 클라이언트 코드에서 클래스나 메서드를 선언하고 인스턴스화할 때까지 하나 이상의 형식 지정을 연기하는 클래스와 메서드를 디자인할 수 있습니다. 예를 들어, 다음과 같이 제네릭 형식 매개 변수 T를 사용하면 런타임 캐스트나 boxing 작업에 따른 비용이나 위험을 초래하지 않은 채 다른 클라이언트 코드에서 사용 가능한 단일 클래스를 작성할 수 있습니다.

 WPF(Windows Presentation Foundation)

- WPF의 핵심 기능은 최신 그래픽 하드웨어를 활용하도록 만들어진 해상도 독립적인 벡터 기반 렌더링 엔진입니다. WPF에서는 XAML(Extensible Application Markup Language), 컨트롤, 데이터 바인딩, 레이아웃, 2차원 및 3차원 그래픽, 애니메이션, 스타일, 템플릿, 문서, 미디어, 텍스트, 입력 체계 등의 광범위한 응용 프로그램 개발 기능으로 이 핵심 기능을 확장합니다. WPF는 Microsoft .NET Framework에 포함되므로 .NET Framework 클래스 라이브러리의 다른 요소가 통합된 응용 프로그램을 만들 수 있습니다.

 WCF(Windows Communication Foundation)

-  WCF는 새로운 서비스 기반 프로그래밍 모델을 통해 관련된 응용 프로그램의 개발을 단순화합니다. WCF는 계층화된 아키텍처를 제공하여 다양한 스타일의 분산 응용 프로그램 개발을 지원합니다. 기본적으로 WCF 채널 아키텍처는 비동기식 형식화되지 않은 메시지 전달 형식을 제공합니다. 이와 같은 기반을 바탕으로 안전하고 안정적이며 트랜잭션된 데이터 교환을 위한 프로토콜 기능과 다양한 전송 및 인코딩 옵션이 제공됩니다.

 형식화된 프로그래밍 모델(서비스 모델)은 분산 응용 프로그램의 개발을 쉽게 하고, 개발자에게 ASP.NET 웹 서비스, .NET Framework remoting 및 엔터프라이즈 서비스에 대한 전문 지식과 WCF 사용자에게 익숙한 개발 경험을 제공하도록 디자인되었습니다. 서비스 모델의 특징은 Visual C# 또는 Visual Basic과 같은 언어로 서비스 구현에 대한 유연하고 확장 가능한 메시지 매핑을 포함하여 웹 서비스 개념을 .NET Framework CLR(공용 언어 런타임)의 개념에 바로 매핑할 수 있다는 것입니다. 여기에는 느슨한 결합과 버전 관리를 사용할 수 있는 serialization 기능이 포함되어 있으며 통합 및 상호 운용성을 위해 MSMQ(메시지 큐), COM+, ASP.NET 웹 서비스, WSE(Web Services Enhancements) 및 다양한 기타 기능과 같은 기존의 .NET Framework 분산 시스템 기술을 제공합니다.

 XAML(Extensible Application Markup Language)

- XAML은 선언적 응용 프로그래밍을 위한 태그 언어로 WPF(Windows Presentation Foundation) 프로그래밍 모델의 UI 작성을 간단하게 만듭니다. 

 Silverlight

- Microsoft Silverlight는 웹에서 사용할 차세대 미디어 환경 및 RIA(풍부한 대화형 응용 프로그램)를 만들고 제공하기 위한 .NET Framework의 다중 브라우저, 다중 플랫폼 구현입니다. Silverlight에는 서버, 웹 및 데스크톱의 기능, 관리 코드 및 동적 언어의 기능, 선언적 및 기존 프로그래밍의 기능 및 WPF(Windows Presentation Foundation) 기능이 통합되어 있습니다.

http://www.microsoft.com/silverlight/silverlight/demos/Perspective3D/default.html

  LINQ(Language Integrated Query)

- LINQ는 .NET 기반 프로그래밍 언어에서 탐색, 필터 및 프로젝션 작업을 선언적으로 직접 표현할 수 있도록 하는 쿼리 연산자 집합을 정의하는 쿼리 구문입니다.

  • LINQ to SQL : SQL Server 데이터베이스

  • LINQ to XML : XML 문서

  • LINQ to DataSet : ADO.NET 데이터 집합

  • LINQ to Object : .NET 컬렉션, 파일, 문자열 등 

     

    PLINQ(Parallel Language Integrated Query)

    - PLINQ는 다중코어에서 병열 쿼리실행한다.

     
    정리된 것 감사합니다.
    출처: http://cafe.daum.net/dgprogram/AYv3/10?docid=1J2wr|AYv3|10|20091022173059&q=WCF%20WPF&srchid=CCB1J2wr|AYv3|10|20091022173059

  • Posted by SB패밀리