This document discusses Silverlight, including its history and new features in versions 1.0, 2.0, and 3.0. It highlights that Silverlight allows media playback in browsers, uses XAML, and connects to databases using WCF and LINQ. Demos are provided of connecting a Silverlight app to a database using a WCF service and LINQ. New features in Silverlight 3.0 include improved performance, 3D capabilities, and additional APIs.
4. What is Silverlight
• Web Browser Plug-in
• WMV, WMA and MP3 media content Can be play
• Without requiring Windows Media Player, the Windo
ws Media Player ActiveX control or Windows Media
browser plug-ins
• Similar to Windows Presentation Foundation
• XAML
• Can be used to create Windows Sidebar gadgets
5. Operating Systems and Web Browsers
OS/brows
er
IE 6 SP1 IE 6 SV1 IE 7 IE 8 Firefox
SeaMonk
ey
Safari
Konquer
or
Opera
Google C
hrome
Windows
Vista/2008
N/A N/A
1.0, 2.0,
3.0
1.0, 2.0,
3.0
1.0, 2.0,
3.0
1.0, 2.0
1.0, 2.0; v
ia NPAPI
N/A
Unofficial
ly[44][45] 2.0
Windows
XP/2003/
Home Ser
ver
N/A
1.0, 2.0,
3.0
1.0, 2.0,
3.0
1.0, 2.0,
3.0
1.0, 2.0,
3.0
N/A
1.0, 2.0; v
ia NPAPI
N/A
Unofficial
ly[44][45] 2.0
Windows
2000
2.0 N/A N/A N/A
2.0 Unoff
icially[46] N/A
2.0; via N
PAPI
N/A
Planned[4
4] N/A
Windows
Mobile 6
2.0[citation
needed] N/A N/A N/A N/A N/A N/A N/A N/A N/A
Mac OS 1
0.4/10.5 P
owerPC
N/A N/A N/A N/A 1.0 N/A 1.0 N/A
Planned[4
4] N/A
Mac OS 1
0.4/10.5 In
tel
N/A N/A N/A N/A 1.0, 2.0 N/A 1.0, 2.0 N/A
Planned[4
4] N/A
Input –키보드 또는 마우스 등 인풋을 핸들링 할수 있게 되었습니다.
UI core – 비트멥 이미지(JPEG 같은) 벡터 , 텍스트 , 에니메이션 를 렌더링 할수 있게 됩니다.
Media – mp3 wma wmv7 wmv9 를 재생할수 있게 됩니다.
XAML – 자멜을 이용하여 UI를 구성할수 있게 됩니다.
1.
Silverlight 2에서는 이미지가 열리는 정확한 시점을 잡아 내기가 힘들었는데요. 그래서 종종 정확한 이미지의 사이즈를 구하는 등의 작업에서 문제가 발생하기도 했죠. 이제 Silverlight 3에서는 그 문제가 해결이 되었습니다. 이 문제는 DownloadProgress가 이미지를 100% 해석되기 전에 이벤트를 발생 시키는 문제 떄문이라고 하는데요.
Silverlight 3 에서는 Image에 ImageOpened 이벤트를 통해서 이미지가 열리는 시점에 정확한 이미지 정보를 가지고 올 수 있습니다.
2.
SIlverlight 3는 XAP 파일 압축을 통해 획기적으로 XAP 파일을 크기를 줄여 줍니다. 게임과 같이 큰 리소스가 필요한 경우 더욱 빨리 사용자가 응용프로그램을 다운 받을 수 있게 되었습니다.
3.
PlaneProjection 속성을 통해 Silverlight 컨트롤에 3차원 효과를 적용할 수 있게 되었습니다. 이를 통해 2차원 상태의 콘트롤을 3차원 형태로 보여줄 수 있게 되었습니다.
4.
픽셀 쉐이더(Pixel Shaders)를 사용하면 컨트롤에도 이미지와 같은 효과를 사용할 수 있게 됩니다. 현재 Silverlight 3에는 드랍쉐도우(Drop Shadow)와 블로어(Blur) 효과가 기본적으로 내장 되어 있고 추가적으로 사용자 효과를 만들어서 적용할 수 있습니다.
5.
Silverlight 3 부터는 컨트롤 간의 속성끼리 바인딩 할 수 있게 됩니다.
예를 들면 아래 처럼 Slider의 Value와 TextBlock의 Text 속성을 연결할 수 있게 되는 것이죠.
1.
Bitmap APIs는 WriteableBitmap 클래스를 통해 사용할 수 있게 되었습니다. 생성자로 이미지의 폭, 높이, 형식을 받습니다.
직접 비트멥 생성
2.
Silverlight는 UI 랜더링에 GPU(Graphics Processing Uint)을 사용하여 더욱 효율적이고 빨리 UI를 랜더링 합니다.
부동소숫점 계산과 같은 복잡한 계산을 이젠 GPU가 처리하게 됩니다.
3.
TextRenderingMode라는 속성을 통해 RenderForAnimation을 설정할 수 있게 됩니다. 기존 Silverlight2에서 텍스트에 크기 변경, 알파값 변경 위치 변경과 같은 애니메이션 작업은 성능에 극도로 좋지 않은 영향을 미쳤습니다.
그래서 에니메이션을 할수 있게 다시 재작업을 해서 에니메이션을 보이도록 할수가 있습니다.
RenderOptions.SetTextRenderingMode(MyTextbox, TextRenderingMode.RenderForAnimation);
4.
네크워크를 모니터링 할 수 있는 API를 제공합니다. 네트워크가 사용가능한지를 판단하는 경우 아래와 같이 확인 할 수 있습니다.
bool isConnected = NetworkInterface.GetIsNetworkAvailable();
또한 네크워크의 상태가 변경 되는 것을 감지할 수 있는 기능도 제공됩니다.
NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged);
이 클래스를 사용하기 위해서는 System.Net.NetworkInformation 네임스페이스를 참조해야 합니다.
텍스트 애니메이션 기능 향상 (Animated Text Performance Improvements)
TextRenderingMode라는 속성을 통해 RenderForAnimation을 설정할 수 있게 됩니다. 기존 Silverlight2에서 텍스트에 크기 변경, 알파값 변경 위치 변경과 같은 애니메이션 작업은 성능에 극도로 좋지 않은 영향을 미쳤습니다.
2.
이제 드디어 Silverlight 3에서도 파일을 저장할 수 있는 기능을 제공합니다.
(참고 : 사용자의 액션이 없는 Load와 같은 이벤트에서 사용할 경우 권한 오류가 발생 합니다. )
ShowDialog() 메서드를 통해 대화상자를 호출하고 파일명을 지정하여 사용자에게 파일을 저장 하도록 할 수 있습니다.
(삽입기호 브러시? ) CaretBrush는 삽입기호의 모양을 변경 할 수 있도록 해 줍니다. 예를 들어 텍스트 박스가 검정색이고 삽입기호나 교정기호도 검정색이라면 보이지 않을 것입니다. 아래와 같이 사용할 수 있습니다.
드뎌~!! Silverlight도 페이지 기반의 프로그래밍을 할 수 있게 되었습니다. 이전에는 페이지이동과 같은 시나리오로 프로그램을 작성할때 한페이지에 작성하는 경우 Grid와 같은 Panel 컨트롤을 Visiblity를 끄고 키고 하면서 작업을 했었는데요.
이제 Frame, Page와 같은 것들을 사용해서 xaml을 마치 한 개의 웹 페이지 처럼 이동할 수 있고, 이동된 페이지를 브라우저 이전, 다음 버튼을 사용해서 이동할 수도 있습니다.
또한 브라우저의 타이틀도 xaml의 페이지에서 지정할 수 있게되어 Silverlight 만으로도 웹 페이지를 만들 수 있는 기술적 바탕이 되었습니다. ~~ ^^
이와 관련된 것은 따로 포스팅 하겠습니다.
워~~ 이 기능 참 마음에 드네요. ^^ 서버와의 라운드 트립없이 각자 독립된 Silverlight 응용 프로그램 간의 통신을 가능하게 해 줍니다.
구현도 아주 직관적이고 간단합니다. 두개의 Silverlight 응용프로그램을 만들고 한개의 응용프로그램에 메시지를 받을 수 있는 리스너를 생성합니다.
LocalMessageReceiver 클래스를 사용하려면 System.Windows.Messaging 네임스페이스를 추가해야 합니다. LocalMessageReceiver 클래스의 생성자에는 서로 통신할때 사용할 이름을 적습니다.
아래 코드를 사용해서 다른 Silverlight 응용프로그램에 메시지를 전달할 수 있습니다. 반드시 LocalMessageReceiver 클래스 생성자와 동일한 이름을 LocalMessageSender 생성자에 넣어주어야 합니다.
LocalMessageReceiver 클래스를 사용하려면 System.Windows.Messaging 네임스페이스를 추가해야 합니다. LocalMessageReceiver 클래스의 생성자에는 서로 통신할때 사용할 이름을 적습니다.
아래 코드를 사용해서 다른 Silverlight 응용프로그램에 메시지를 전달할 수 있습니다. 반드시 LocalMessageReceiver 클래스 생성자와 동일한 이름을 LocalMessageSender 생성자에 넣어주어야 합니다.