ASP.NET 5을 ASP.NET Core 1.0로 리네이밍

네이밍은 정말 중요하죠... 어렵기도하고..
There are only two hard things in Computer Science: cache invalidation and naming things. - Phil Karlton
그런의미에서 보면 ASP.NET 5는 완전히 잘못된 네이밍이었습니다.
사람들이 4.6의 개선되거나 새로운 상위 버전 같은 느낌을 갖게 만들거든요.. 
그래서 MS는 이 ASP.NET 5 를 개명했습니다.

ASP.NET Core 1.0 과 .NET Core 1.0 으로 말이죠...
  • ASP.NET 5 는 ASP.NET Cpre 1.0 으로 변경
  • .NET Core 5는 .NET Core 1.0 으로 변경
  • Entity Framework 7는 이제 Entity Framework Core 1.0 혹은, 줄여서 EF Core 1.0

왜 1.0 이냐구요? 왜냐하면 완전히 새로운 .net core 컨셉이라는 점에서 그렇다는군요..  The .NET Core 1.0 CLI 는 완전히 새로운 프로덕트구요. 
server side graphics library 같은 것들 등 몇몇 부분의 차이로 .Net Core는 .Net Framework 4.6과 완전히 동일하지는 않다고하네요.. 
ASP.NET 4.6과 ASP.NET Core 1.0 관계

출처 http://www.hanselman.com/


그럼 어떤걸 사용해야하는지...?
실제로 ASP.Net 4.6 쪽이 더 성숙한 플랫폼입니다.ASP.NET Core 1.0 는 이제 1.0을 릴리즈 했을 뿐이고 아직 SignalR 이나 Web Pages와 같은 기능은 없죠...  아직 VB 나 F#으로 작성할수도 없구요.. 언젠간 지원이되겠지만 지금은 아니예요.

ASP.NET Core 1.0은 이제 막 시작되었을 뿐입니다. 물론, ASP.NET 4.6의 출시와 지원은 계속될거구요.
2016/01/22 14:24 2016/01/22 14:24
이 글의 관련글
    이글의 태그와 관련된 글이 없습니다.
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

LINQ를 XSD로 변환하기

LINQ를 XML로 변환할 수 있는 LINQ to XSD가 오랜 기다림 끝에 모습을 드러냈습니다. 이 어플리케이션의
첫 번째 목적은, XML 데이터에서 타입을 확인해야 할 필요가 있는 개발자를 위해 XSD파일로에서 LINQ 호환
Object Model을 제공하는 것입니다.

아직은 LINQ to XSD는 소스코드만 제공되며, 설치 형태로는 제공되지 않습니다. 이 제품은 MSPL
(Microsoft Public License)
를 따르고 있습니다.

해당 프로그램을 설치하고자 한다면 'Readme' 파일을 주의 깊게 읽어볼 필요가 있다고 하네요..LINQ to XSD의
사용법은 꽤 간단합니다. 원하는 XSD파일을 C#프로젝트에 추가하고 build action을 'LinqToXsdScheme'로
설정하기만 하면 됩니다. code는 자동으로 생성되며, 결과물(object model)을 바로 이용하실 수 있습니다.

불행히도 LINQ to XSD는 VB와 같은 다른 언어는 지원하지 않습니다. 하지만 CodeDOM 기반으로 작성 되었기
때문에 조만간 다른 언어에 대한 지원도 추가될 걸로 예상이 되네요.

2009/06/12 14:18 2009/06/12 14:18
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

WPF 아키텍처

기본 WPF 프로그래밍 모델은 관리 코드를 통해 노출됩니다. WPF의 초기 디자인 단계에서는 시스템의 관리되는
구성 요소와 관리되지 않는 구성 요소를 정확하게 구분하는 방법에 대한 많은 논쟁이 있었습니다.
CLR에서는 보다 생산적이며 강력한 개발 작업을 수행하는 데 유용한 여러 기능(메모리 관리, 오류 처리, 공용
형식 시스템 등)을 제공하지만 이러한 이점에는 대가가 따릅니다.

WPF의 주요 구성 요소는 아래 그림에 설명되어 있습니다. 다이어그램의 빨간색 섹션(PresentationFramework,
PresentationCore 및 milcore)은 WPF의 주요 코드 부분입니다. 이 중에서 하나(milcore)만 관리되지 않는 구성
요소입니다. milcore는 DirectX와의 긴밀한 통합을 위해 비관리 코드로 작성되어 있습니다.
WPF에서의 모든 디스플레이는 DirectX 엔진을 통해 수행되므로 효율적인 하드웨어 및 소프트웨어 렌더링을
허용합니다. WPF에는 메모리 및 실행에 대한 세부적인 제어도 필요합니다. milcore에 있는 컴포지션 엔진은
성능의 영향을 크게 받으므로 성능을 높이기 위해 CLR의 여러 이점을 포기해야 했습니다.

WPF 아키텍처

대부분 Managed Code로 이루어져있지만 렌더링 엔진인 milcore는 Unmanaged Code로 이루어져있다.


출처 : http://msdn.microsoft.com/ko-kr/library/ms750441.aspx(새 창으로 열기)
2009/03/30 16:37 2009/03/30 16:37
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

XapOptimizer로 Silverlight XAP 배포 파일 사이즈 줄이기.

실버라이트의 배포단위는 XAP 파일이다. 이 파일은 JAVA의 jar나 war같이 ZIP 파일의 이름만 바꾼 형태로,
manifest 파일과 실버라이트 어플리케이션을 구동하는 데 필요한 모든 코드를 포함하고 있다.
파일포맷 자체는 ZIP 파일 형식과 동일할 뿐 특별한 내용은 없다. 확장자를 zip으로 바꾼 후 압축 해제프로그램
으로 열어보면 AppManifest.xaml 파일과 필요한 DLL들이 들어 있을 것이다.

불행히도, xap 파일에 포함된 DLL 중에는 불필요한 코드도 상당수 섞여 있다. 배포하고자 하는 실버라이트
어플리케이션이 DLL 중 코드 중 일부만 이용한다면 클라이언트 측에서 다운로드하는 파일 사이즈가 불필요하게
크다는 의미이기도 하다. 이런 사이즈를 줄이기 위해 프로젝트 파일을 손보는 것 보다는 XapOptimizer를 이용해
불필요한 클래스를 줄여보는 것도 고려해볼 만 하다.

http://labs.componentone.com/XapOptimizer/

XapOptimizer

XapOptimizer



XapOptimizer는 ComponentOne社의 온라인 툴로 현재는 베타 버전이다. 불필요한 코드가 포함되어 있는
XAP 파일을 업로드 하면 결과물을 메일로 알려준다.
용량 제한이 있지만 난독화까지 지원하고 있으니 필요하신 개발자는 한 번쯤 들러보는 것도 괜찮을 것 같다.  

2009/03/05 14:14 2009/03/05 14:14
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

코드로 WPF 컨텍스트 메뉴 오픈 방법 :: WPF ContextMenu Open in Code

윈도우즈 어플리케이션에서 마우스 오른쪽 클릭으로 팝업되는 메뉴를 'Context Menu'라고 부르는데
XAML에서는 System.Windows.Controls 네임스페이스아래 ContextMenu 클래스로 존재합니다.

WPF어플리케이션에서는 FrameworkElement라면 어떤 컨트롤이든지 ContextMenu를 설정할 수 있는데요.
예를들어 버튼에 컨텍스트 메뉴를 설정하고 싶다면 xaml에서는 아래와 같이

<Button x:Name="ui_button" Content="테스트 Button" >
 <Button.ContextMenu>
 <ContextMenu x:Name="contextMenu" >
  <MenuItem Header="menu 1." />
  <MenuItem Header="menu 2." />
 </ContextMenu>
 </Button.ContextMenu>
</Button>


버튼컨트롤의 ContextMenu라는 의존속성에 ContextMenu를 할당해 두면 사용자 마우스 오른쪽버튼 이벤트에
반응하여 자동으로 컨텍스트 메뉴를 띄워주게됩니다.

그런데 가~끔 이 컨텍스트메뉴를 사용자 개입없이 자동으로 띄워야 할 필요가 있는데요..
코드에서 컨텍스트 메뉴를 띄우는건 contextMenu.IsOpen=true; 라는 짧은 코드로 가능합니다...만!!

이런걸 원한게 아닌데..

이런걸 원한게 아닌데... 끙..


예.. 컨텍스트메뉴가 버튼에서 팝업되는게아니라 마우스 포인터 옆에서 팝업되어버립니다.
컨텍스트메뉴, 드롭다운, 툴팁등은 팝업시스템으로 동작하는 또다른 윈도우이기 때문에 나타나는 현상입니다.
WPF의 팝업 시스템에대한 자세한 이야기는 아래 MSDN의 글을 참조하시도록 하구요..
http://msdn.microsoft.com/ko-kr/library/system.windows.controls.primitives.popup.aspx(새 창으로 열기)
그럼, 어떻게하면 우리가 바라는대로 버튼 옆에 컨텍스트 메뉴를 띄울 수 있냐...
ContextMenu의 PlacementRectangle, HorizontalOffset ,VerticalOffset 의존속성을 설정하면
가능해 집니다.

//컨텍스트 메뉴가 열릴 기준이되는 UI엘리먼트의 화면좌상단으로부터 위치(point)를 구합니다.
Point targetPoint = ui_button.PointToScreen( new Point(0,0) ); 

//컨텍스트 메뉴가 popup될 영역과 기준위치를 설정합니다 contextMenu.PlacementRectangle = new Rect(targetPoint, new Size( ui_button.Width, ui_button.Height)); contextMenu.Placement = System.Windows.Controls.Primitives.PlacementMode.RelativePoint; //offset을 주시구요… contextMenu.HorizontalOffset = 10; contextMenu.VerticalOffset = 10;

//컨텍스트 메뉴를 여시면 됩니다. contextMenu.IsOpen = true;



자.. 위와같이 수정 후 실행 하시면..
짜잔~

짜잔~


예 원하는 결과대로 되었습니다.
이 포스팅의 요지는 위에서 설명한 팁이 될수도 있겠지만 그보다는 'WPF의 팝업시스템의 이해' 정도가 되겠군요. ^^

2009/03/03 15:29 2009/03/03 15:29
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. Blog Icon
    백미란

    contextMenu.Placement = System.Windows.Controls.Primitives.PlacementMode.RelativePoint;
    이렇게 하면 오른쪽버튼 클릭했다가 다시 왼쪽버튼을 눌렀을때 이상한 좌표에서 컨텍스트 메뉴가 뜨네요~
    Con.Placement = System.Windows.Controls.Primitives.PlacementMode.AbsolutePoint;
    이렇게 해야 정상으로 나와요 ^^ 강의 감사합니다~
    그런데 혹시 오른쪽 버튼 눌렀을때 컨텍스트 메뉴가 뜨지 않게 막는 방법도 있나요 ?
    그리고 바탕화면 쉘 컨텍스트 메뉴처럼 정보를 읽어와 뜨게 하는 방법이 있는지도 궁금합니다..

  2. 하하. 좋은 정보로 ^^) 프로젝트 이슈 하나 풀어갑니다.

  3. Blog Icon
    써니

    헐....
    잘 보고 갑니다.. 쩝... 처음으로 뜨네요 ... ㅋ

LINQPad를 이용하여 LINQ 편집하기

통합 언어 쿼리라고 불리는 LINQ ('링크'로 발음 합니다. )는 관계형 데이터 모델(RDB)를 객체지향 모델로 매핑하는
(MS의 표현에 따르면) 획기적인 방법을 제공 하는데요..  
이 LINQ 편집을 위한 좋은 툴이 있어 소개합니다.

LINQPad 사이트
물론, VisualStudio 2008에서도 이 언어를 편집할 수 있습니다만 여기서 소개하는 LINQPad 라는 프로그램은
C# 3.0 in a Nutshell의 저자 Joseph Albahari씨가 개발하였으며 설치가 필요없는 약 3MB 용량에 AutoUpdate를
지원합니다. 이 어플리케이션의 소스는 Standard Copyright Laws의 보호아래있지만 프로그램의 사용에는 별다른
라이센스 제약 없이 자유롭게 이용할 수 있습니다.
자동완성 기능을 지원하는 버전은 약간의 금액을 받는다고 합니다.

이 어플리케이션을 사용하기위해서는 .NetFramework 3.5가 필수요건입니다. 이는 어플리케이션보다는
Linq가 .NetFramwork 3.5 이후부터 사용가능하기 때문에 생긴 제약입니다.
현재 LINQPad를 적용할 수 있는 DBMS로는 SQL Express, SQL 2000, SQL 2005이며 약간의 제약이 있지만
SQL 2008에도 사용할 수 있다고 하네요.

LINQPad는 링크 편집에 도움이 될 뿐만 아니라 C# 3.0 in a Nutshell에 수록된 200여개의 예제 내장해 이를 통해
링크 문법을 익히는데도 큰 도움이 될듯합니다.
뿐만 아니라 아래 스크린샷에 있는 Linq to object, Linq to lambda, Linq to sql 같은 유용한 기능도 제공하고 있습니다.

LINQ 쿼리 결과 화면

LINQ 쿼리 결과 화면


LINQ를 lambda로 변환한 결과 화면

LINQ를 lambda로 변환한 결과 화면


LINQ를 SQL로 변환한 결과 화면

LINQ를 SQL로 변환한 결과 화면


2009/02/11 13:17 2009/02/11 13:17
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. 정말 괜찮은 프로그램이군요. 한번 써봐야 겠습니다.

RIA (Rich Internet Application ) 패턴

마이크로소프트의 Pattern & PracticesRIA 패턴에 대한 글이 게시되었습니다.

이 시나리오는 개인정보와같은 민감한 Data를 이용할 수 없는 RIA 어플리케이션이며 DB를 이용한다는 가정에서
출발합니다. 결과적으로 클라이언트, 웹서버, 데이타베이스의  3-tier 로 구성이 됩니다.

3-tier RIA Application


위와 같은 구성에서 각 레이어에 적용하면 좋을 패턴을 마이크로소프트 사에서는 아래와 같이 제시합니다.
각 레이어에 적용할 패턴들
위 패턴이 적용된 이미지의 요약은 다음과 같습니다.
MVC패턴으로 유저 인터페이스를 구성.
유저인터페이스는 여러개의 control들로 구성.
Presentation 레이어와 Service 레이어사이의 통신에는 Proxy 패턴을 적용.
다양한 데이터 구조를 하나로 취합하기위해 DTO 패턴을 적용.
Service 레이어는 외부와 내부 데이터 구조 사이의 변환기능을 제공해야 함.
Bussiness 레이어는 메세지기반 운용을위해 facade 패턴 적용.
도메인 엔티티를 위한 Repository 패턴 적용.
Domain Entity 패턴은 오직 데이터만 나타내는 Business entity를 정의하는데 이용.
Domain Entity와 Database Schema 사이의 매핑을 위해 Data Mapper 패턴 적용.

위와 같은 패턴을 적용한 RIA 어플리케이션을 MS Silverlight로 구현할 경우 다음과 같은 Technical Solution을보여줍니다.
Technical Solution

아래 링크에서 더 자세한 정보와 코드조각을 얻으실 수 있습니다.
http://www.codeplex.com/AppArch/Wiki/View.aspx?title=App%20Pattern%20-%20Three-Tier%20RIA%20Application%20Scenario&referringTitle=Application%20Patterns
2009/01/31 12:35 2009/01/31 12:35
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

Microsoft에서 개발한 iPhone App - Seadragon Mobile

MS Live Labs에서 마이크로소프트사의 첫번째 iPhone용 어플리케이션인 Seadragon Mobile(새 창으로 열기) 을 출시하였습니다.Seadragon은 MS사의 Deep Zoom 기능을 이용한 이미지 뷰어 어플리케이션입니다. 고해상도의 많은 이미지의 효율적인 관리가 가능하다고 하고 애플 앱스토어에서 무료로 다운로드 할 수 있다고 합니다.

Seadragon Mobile

애플 앱스토어에 게시된 Seadragon Mobile



Seadragon은
Photosynth(새 창으로 열기)(링크의 스크린 캐스트 참조)라는 MS의 Photo-browsing 기술을 이용하고 있습니다.

Seadragon Mobile이 지향하는 바는 모바일 디바이스 유저가 그들의 기기에서 다량의 고해상도 이미지를 부드럽고 자연스럽게 보여주는데 있다고 합니다. 이 어플리케이션의 초기 리뷰들이 대부분 긍정적인 반응을 보였지만 몇몇은 속도에 불만을 토로하고 있다고 하네요. Seadragon Mobile은 10 기가픽셀(!!) 이상의 샘플 이미지가 포함되어 있으며, 이용자는 photosynth feed나 RSS 이미지 feed를 통하여 컨텐트를 추가할 수 있다고 합니다.

시연이 아닌 실제 제품으로 PhotoSynth를 이용해 볼 수 있다니.. iPhone에서 동작하는 Seadragon을 보고싶네요.
2008/12/17 15:07 2008/12/17 15:07
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

Silverlight for Linux: Moonlight 1.0 Beta 1 Is Available for Download


Moonlight
는 Linux와 Unix/X11에서 Microsoft사의 Silverlight를 구동케 하기위한 open source 구현체입니다.
Moonlight는 2007년 9월부터 Novell사의 후원으로 Mono project에 의해 개발되어 왔으며, Moonlight 1.0 beta 1
릴리즈하였습니다.

Novell사와 Mono Project팀은 32bit/64bit 리눅스 시스템에서 구동 가능한 Moonlight 1.0 beta 1의 출시를 발표했습니다.
현재는 SUSE Linux Enterprise Desktop 10, openSUSE 11.0, Ubuntu 8.04, Fedora Core 9 for 32 bit machines,
SUSE Linux Enterprise Desktop 10 and openSUSE 11.0 for 64 bit machines 을 지원하며, 윈도우즈가 아닌
OS에서의 실행을 위해 FireFox 3을 추천하고 있습니다.

Moonlight 1.0은 2009년 1월 20일 출시를 목표하고 있으며, 여기에는 Video/Audio 재생을 위한 Media Pack 1.0,
실버라이트 2.0 의 스트리밍외에도 다음과 같은 사양이 포함됩니다.
실버라이트 1.0 호환.
브라우저의 JavaScript 이용 가능.
C/C++ 기반의 no managed code.
Linix/x86 Linux/x86-64 에서 실행 가능.
소스코드도 함께 배포.


Moonlight 2.0은 2009년 4월 Beta, 2009년 9월 정식버전 출시를 계획하고 있습니다.
이 구현체에는 다음과 같은 사양이 포함됩니다.
실버라이트 2.0 호환.
마이크로소프트 Media Pack 2.0을 이용한 비디오/오디오 재생
c#, DLR-based languages 실행을 위한 Mono를 포함.
실버라이트 2.0 기반 어플리케이션과 실버라이트 2.0 MS-PL 컨트롤의 실행.

Monolight에서 멀티미디어 stack의 구동방식은 Miguel de Icaza의 blog를 참조하실 수 있습니다.

소스 코드는 이하의 SVN을 통해 내려 받으실 수 있습니다.
svn co svn://anonsvn.mono-project.com/source/tags/moon/1.0b1
해당 소스 코드의 라이센스는 마이크로소프트사의 약속이 계속되는 한 GNU LGPL을 따른다고 합니다.

2008/12/07 13:58 2008/12/07 13:58
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

Java 개발자 입장에서 바라본 .Net의 Delegate


지난 수년간 JAVA로 개발을 해 오다 작년부터 필요에의해 MS의 .Net Framework와 C#으로 프로젝트를 진행하고 있다.

.Net Framework와 C#이란 언어를 다루면서 처음으로 접한 문화 충격이라면 Property와 Delegate일 거다.
MS진영 개발자라면 당연한것으로 받아들이고 있을 두 개념을 처음 접했을때의 신선함이란!

자바 개발자들을 위해 간략하게 첨언하면
.Net에서 이야기하는 Property란 java 세상에서는 쉽게말해 getter와 setter에 해당하는데 요걸 코드로 표현하는 방법이 재미있다.
(물론 이 property란게 코드의 표현이 재미있다의 수준에서 그치는 건 절대 아니다.)
그리고 .Net에서 이야기하는 Delegate는 메소드 레퍼런스의 OOP적인 Wrapper이다.
이 Delegate란게 Java언어에서도 구현은 할 수 있지만 .Net에서와 같은 우아한 코드로 표현되진 않는다.
( Java는 OOP 개념으로 접근하여 교과서스럽게 코드로 표현하기 때문일거다..
여튼 Java에서는 없는 개념이라고 맘편히 생각해도 되겠다. )

뭐? '메소드 레퍼런스의 OOP적인..'이 어쨌다고? 문자로 표현하니 뭘 이야기하는 건지 금방 못알아듣겠지만 개념이 그렇다.
(C의 표현을 빌자면 '함수의 포인터' 정도로 불릴 수 있겠다.) 나 역시 코드를보고서야 위 말의 의미를 알 수 있었으니까..

풀어 말하자면 클래스 인스턴스의 레퍼런스를 다른 클래스 인스턴스의 메소드에 전달하는것과 마찬가지로
메소드의 레퍼런스를 객체 다루듯이 다른 클래스 인스턴스의 메소드에 전달하는것이 가능하다.
놀랍지 않은가? 메소드를 객체처럼 주고 받을 수 있다니!!

이게 사용하다보면 은근히 편하다. Java 세상에선 Callback을 받기위해 자신의 레퍼런스를 넘겨야 가능할 일을
.Net에서는 Callback 메소드를 싼 클래스를 넘겨 버리면 그만이니...

확실히 최근에 나온 언어일수록 개발의 편의성이 높긴하다. Java에도 조금 유연성을 발휘하여 이런 개념을 도입하면 어떨까?
[상업적으로 가장 성공한 OOP언어가 Java가 아니던가. Java에 Generic 개념이 도입되었을때도 자바스럽지
않다며 유난을 떠는 사람들도 많았으니 .net의 delegate 개념을 언어 차원에서 지원한다면 이건 더이상 java가 아니다며
너스레를 떠는 사람이 넘쳐날지도.. ]

2008/11/18 22:42 2008/11/18 22:42
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. 결국 그 delegate가 Python 언어의 람다 함수나 Javascript의 익명 함수와 같은 역할을 하죠. 원래 Lisp 같은 함수형 프로그래밍 언어 쪽에서 나온 개념인데 이게 은근 편리(?)하다보니 요즘은 원래 함수형 언어가 아닌 언어에서도 많이 지원하는 추세인 것 같습니다.

  2. Blog Icon
    서비

    예 daybreaker님께서 주신 말씀대로입니다.
    본질을 이해하고나면 표현하는 방법이 무슨 대수겠습니까만은..
    이게 시작을 대중적인 OOP언어로 한 저같은 사람은 생소한 코드
    표기방법과 쓰임에 당황+놀라움을 동시에 경험하기도 한답니다.. ^^

  3. Blog Icon

    자바보다 먼저나온 Delphi 에도 있는기능인데요....

  4. Blog Icon
    김코더

    기능은 앞으로도 나올언어들거 개발되어 배포되는것도 수두룩합니다
    적용시점이 관건이지..

Silverlight의 장점과 단점/아쉬운 점.

RIA( Rich Internet Application )가 마켓리더인 어도비의 Flex와 AIR를 통하여 메인스트림 기술로 진입한 시점에
MS에서는 Silverlight 제품을 RIA  영역에 포진 하였습니다. 이에 실버라이트 라는 제품에 대해 개발자 커뮤니티
에서도 의견이 분분한데요.

이와 관련하여 어도비 플랫폼 에반젤리스트인  Serge Jespers씨가 자신의 블로그를 통하여 실버라이트에 대한
장단점과 아쉬운 점을 포스팅
하여 Flex-Silverlight간의 논쟁에 불을 붙였네요.
뭐.. 어도비 에반젤리스트가 한 말이니 어도비에 편향될 수도 있겠지만 실버라이트로 개발을 해 보신분이라면
고개를 끄덕일 만한 내용도 조금은 있지 않을까 생각합니다.

그는 포스팅을 통하여 실버라이트의 장점으로
* 실버라이트의 쓰레드 모델의 컨셉트가 아주 마음에 든다. 특히나 main 쓰레드의 정체없이 복잡한 테스크를 처리가능한
  - 예를들어 데이타 로딩과 동시에 별도의 쓰레드로 구현되는 부드러운 에니메이션과 같은 - 기능은
  정말 Cool하다.
* 실버라이트 어플리케이션은 파라메터 세팅과같은 간단한 방법으로 HTML문서와 통신할 수 있다.
* C#이나 VB.NET과 같은 코드를 그대로 사용할 수 있는점 역시 훌륭하다. 특히나 이 두 언어는 윈도우즈 기반
  개발자들에게 익숙하다.

라고 한 반면 단점과 아쉬운 점으로
* C#과 XAML 코드표현 방법이 너무 다양하다. -이건 저도 WPF를 잠깐 해 보면서 느꼈던 부분인데 똑같은 기능을
  C#으로도 XAML로도 구현 할 수 있기때문에 적절한 개발 가이드를 세우지 않으면 스파게티 코드를
  만들어낼 가능성이 농후합니다. -
* 컨트롤에 스타일을 적용하는건 말그대로 '악몽'이다. 이건 아무리 생각해도 실버라이트의 아킬레스건이다.
* Text Field에서의 HTML 태그 지원 부족 또한 이해할 수 없다.
* Expression 툴이 여전히 베타이다. 이는 Expression툴만의 문제에 그치지 않고 더이상 베타버전이 아닌
  비주얼 스튜디오 마저 버그를 갖는 미완성품으로 만들어 버렸다는 사실이다.
* 실버라이트를 접한 삼일간의 느낌은 실버라이트는 디자이너를 전혀 고려하지 않고 개발되지 않았나 하는 생각이다.

라는 견해를 밝히고 있습니다.
제가 봐도 딱히 편향되어 보이진 않지만 어도비 에반젤리스트의 이런 견해는 그의 위치때문이라도 좋은
논쟁꺼리를 만들어 낸 셈인데요..
그의 이런 생각에 다른 개발자들은 어떤 생각을 갖고 있는지 궁금하시면 그의 해당 포스트를 방문해 댓글을
직접 보시는게 좋겠네요. ^^

http://www.webkitchen.be/2008/07/17/silverlight-the-good-the-bad-and-the-ugly/
2008/07/28 19:38 2008/07/28 19:38
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

Silverlight 2 Unit Test Framework :: 실버라이트 단위 테스트 프레임워크



실버라이트 단위 테스트 프레임워크 수석 개발자인 Jeff Wilcox는 Sliverlight 2의 테스트 방법을 작성하여
포스팅 하였습니다. 실버라이트 테스트에 대해 스텝바이스텝으로 구성된 Jeff의 포스트에는 업데이트된
Test Project Templaterepackage한 실버라이트 테스팅 어셈블을 제공 하고 있습니다.

해당 실버라이트 유닛 테스트 프레임워크는 아직 비주얼 스튜디오에 통합되진 않았지만, MS Test에서 쓰이는
Type과 Attribute를 그대로 이용하고 있다고 합니다.

실버라이트의 단위 테스트에 관심이 있으신 개발자는 Jeff Wilcox의 해당 포스트를 방문해 보시기 바랍니다.

2008/07/08 01:13 2008/07/08 01:13
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

HitTest를 통한 마우스 아래의 컨트롤 구하기

WPF 어플리케이션이든 아니든 마우스가 위치한 곳의 컨트롤을 알아야 할 때가 종종 있다.
다른 방식으로도 마우스 아래에 있는 컨트롤을 알아낼 수 있지만 WPF라면 아래와 같이 VisualTreeHelper클래스의
HitTest를 이용해서 컨트롤을 얻어오는 방법도 있다.

T GetItemAtLocation(Point location)
{
    T foundItem = default(T);
    HitTestResult hitTestResults = VisualTreeHelper.HitTest(treeView,location);
    
    if(hitTestResults.VisualHit is FrameworkElement)
    {
        object dataObject = (hitTestResults.VisualHit as 
            FrameworkElement).DataContext;

        if(dataObject is T)         {             foundItem = (T)dataObject;         }     }

    return foundItem; }



위 메소드의 사용법은 이렇게 될 수 있다.
void treeView_Drop(object sender,DragEventArgs e)
{
    if(e.Data.GetDataPresent(typeof(Task)))
    {
        Task sourceTask = (Task)e.Data.GetData(typeof(Task));
        Task targetTask = GetItemAtLocation(MouseUtilities.GetMousePosition());

        // Code to move the item in the model is placed here...     } }


2008/03/21 12:09 2008/03/21 12:09
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

WPF 문서 & 블로그 정리

Maximizing WPF 3D Performance on Tier-2 Hardware

WPF Amazon Explorer Using 3D

WPF를 사용하여 컨트롤 및 3D 표면에 비디오 추가

WPF 미디어 비주얼 관련 코드 조각 많은 블로그

윈도우 미디어 플레이어의 Visualization을 WPF로 제작하기

Using COM Interop to Create a WPF Visualization for Windows Media Player

Walkthrough: Hosting an ActiveX Control in Windows Presentation Foundation

각 종 대화상자 및 커스텀 대화상자 제작( 영문 , 한글 )

WPF상에서의 각종 드래그앤드롭

Win32 위에 WPF컨트롤 랜더링 하기

WPF Data Binding 개발담당 Beareiz Costa의 블로그 : 각 컨트롤에 데이타를 바인딩하는 상세기법 설명

C#으로 스크롤바 커스터마이징 하기

Vista Shell 스타일의 Drag & Drop  : Screencast보기

Rendering text in the adorner layer

WPF 어플리케이션 성능 최적화 MSDN 문서

Thread를 이용한 파일복사하기-프로그래스바

Printing a Form in a report fashion (release 2.2)

Mole II for WPF

WPF Podcaster - skinning 기법과 백그라운트 컬러 변경에 경악!!

WPF Ribbon Control Library - MS Office 2007에 적용된 리본 인터페이스에 대한 WPF 라이브러리

WPF Weather reader control - 날씨 컨트롤

2008/03/20 18:32 2008/03/20 18:32
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다

WPF에서 비디오 재생하는 두가지 방법 :: Media Player on WPF

WPF상에서 비디오를 재생하기 위해서 다음과 같은 2가지 객체를 이용 할 수 있습니다.

System.Window.Control.MediaElement System.Window.Media.MediaFlayer가 그것입니다.

동작 영상은 http://screencast.com/t/6IoXozpFL 을 참조.

( 프레임레이트가 낮은 것은 캡처링 때문이지 WPF성능상의 문제는 아닙니다. )


MediaPlayer를 사용할 때 주의해야 할 점은 이 클래스는 직접적인 시각 표현이 없으며 시각적 트리에
직접 추가할 수 없다는 점입니다.
비디오를 재생하려면 MediaPlayer를 가져온 다음 해당 표면을
VisualBrush
와 같은 시각적
트리에 추가해야 합니다.

기본적으로 MediaElement MediaPlayer 클래스의 상위 래퍼입니다.

소스 코드 보기..


본 코드를 작성 한 후 XP에서 테스트를 진행 했을 때 아래와 같은 현상을 발견 할 수 있었습니다.

OS

.Net Framework

Codec 설치여부

WMP 버전

Direct X

영상 표시 여부

Win XP sp2

3.0

X

9

9.0c

X

Win XP sp2

3.0

O

9

9.0c

X

Win XP sp2

3.0

X

11

9.0c

X

Win XP sp2

3.0

O

11

9.0c

O

Win XP sp2

3.5

O

10

9.0c

O


위 표로 미루어 보아 C#에서 제공하고 있는 MediaPlayer 클래스를 사용하기 위해서는 기본적으로

윈도우 미디어 플레이어 10이상과 플레이하고자 하는 동영상의 코덱이 필요합니다.

( 윈도우즈 Vista는 기본적으로 WMP 11 이 설치되어 있으므로 해당 코덱만 설치되어 있다면 영상이 표시됩니다.
MSDN 공식문서에도 WMP 10이상이 필요하다고 명시되어 있군요..)

2008/02/21 15:34 2008/02/21 15:34
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다
  1. 初めてでも安心して使えるサイト<a href="http://mobaq.jp/">出会い系サイトmobaQ</a><a href="http://dkguide.com/">出会い系ガイドライン</a>

  2. Blog Icon
    지젝

    좋은 정보 잘 보고 갑니다. ^-^