카테고리 보관물: C#

실버라이트와 C# 프로그래밍 – 3

사용자 삽입 이미지
실버라이트2 정식 버전 TOOL 한글판이 나왔습니다. 그래서 기존에 Beta2 로 개발 된 소스를 정식 버전으로 마이그레이션 하는 작업을 하였습니다. 결론적으로 App.xaml 에 있는 내용을 다 날렸고 UI를 새로 만들게 되었습니다. Beta2 와 정식 버전이 많이 바뀌어서 에러 없이 컴파일하더라도 정상적으로 화면이 나올 것 같지 않아서 엎어버렸습니다. 실버라이트2 정식버전 TOOL 은 [이곳] 에서 받으실 수 있습니다.

 

 기존에 Beta2 로 개발을 하셨다면 실버라이트2 정식 버전을 사용하려면 프로그램 추가/제거에서 Beta2 와 관련된 리스트를 모두 삭제하고 설치를 하시는 것이 좋습니다. 저의 경우 실버라이트 런타임을 비롯한 3가지를 삭제하였습니다. 그리고 나서 위에서 받은 TOOL을 설치하면 런타임부터 SDK 까지 개발에 필요한 모든 것이 설치됩니다. 실버라이트 런타임의 경우 유저용을 받아서 설치하게 되면 정상적으로 Debuging 을 하지 못한다고 합니다. 그리고 모두 삭제하고 새로 설치해야 실버라이트 Beta2 로 개발한 프로젝트를 열었을 때 마이그레이션을 자동으로 할 것인지 물어본다고 합니다.

 현재 나온 정식 버전은 RC1 이지만 RC0 에 대한 정보들도 도움이 충분히 될 것 같습니다. 기타 여러 가지 어려운 점이 많겠지만 영어 문서나 GOOGLE 에서 검색을 해보면 영문이지만 어느 정도 도움을 받을 수 있을 것입니다. 그래도 실버라이트와 관련하여 안풀리는 정보가 있다면 카페를 통해서 다른 분들께 도움을 받을 수 있을 것입니다.

1040592706.zip
일단 저번에 올렸던 소스(http://www.dingpong.net/tt/179)에서 기존에 UI 부분을 제거하여 컴파일되도록 만든 소스입니다. 그리고 공개되어 있는 UI 소스인 Dave’s Glossy Controls For Silverlight(http://cafe.naver.com/mssilverlight/3182) 를 붙였습니다. 지금은 Blend 2 SP1 Preview 한글버전이 나오지 않아서 UI 를 만들지 못하였는데 나중에 로그인과 채팅에 필요한 UI 를 만들어서 붙이면 될 것 같습니다.

실버라이트와 C# 프로그래밍 – 2

사용자 삽입 이미지
 안녕하세요. 두 번째 실버라이트에 관련 된 글입니다. 저번 글에서 실버라이트 개발 환경설정을 소개하였습니다. 그런데 글을 쓰는 오늘(10월 14일) 실버라이트2 정식 버전이 출시 되었다고 합니다. 저번 글을 실버라이트2 Beta2 를 기준으로 작성했는데 다음날 실버라이트2 정식 버전이 출시 되어서 조금 당황이 되는 기분이네요. 그래도 도움이 되실 분들이 있으리라 생각합니다. 어쨌든 그래서 이번 글의 첫 부분에서는 실버라이트2 정식 버전에 관련 된 뉴스와 설정에 대해서 링크를 소개합니다. 사실 아직 한글 버전이 출시 되지 않았기 때문에 저도 설치를 해보지 않은 상태입니다. 한글 버전은 약 일주일 정도 후에 출시되지 않을까 생각합니다.
 실버라이트2 와 관련된 이야기는 http://cafe.naver.com/mssilverlight.cafe 실버라이트 정보 공유 카페에서 활발하게 진행이 되고 있습니다. 이 카페에 방문하시면 많은 정보를 얻으실 수 있을 것 같습니다. 이클립스에서 실버라이트 플러그인을 지원한다는 얘기 등이 눈에 띄고 있습니다.
 오늘은 C#으로 실버라이트를 이용한 프로그램을 만들 때 도움이 될만한 기초 팁이나 정보 몇 가지를 소개해 드리고자 합니다.
1. 실버라이트와 C#으로 개발한 프로그램 배포하기
 실버라이트는 웹에서 실행되기 때문에 웹 서버가 필요합니다. 자체서버를 구축할 수도 있고 웹 호스팅을 받는 방법도 있습니다. 개인이라면 대부분 후자 쪽을 선택하리라 생각합니다. 웹 호스팅 업체는 무척 많습니다. 호스팅 업체를 선택해서 웹 호스팅을 받고 FTP 접속해서 자신이 개발한 파일을 올리면 됩니다. 실버라이트 프로젝트를 만들면 웹 프로젝트와 함께 만들어지는데 해당 폴더를 올리면 쉽게 실행시킬 수 있습니다. 실제 실행되는 파일은 .xap 라고 생각이 됩니다. 올리고 나서 HTML 페이지에 접속하면 실버라이트가 실행됩니다.
2. 실버라이트 런타임이 없는 사용자가 실버라이트로 개발한 프로그램을 실행하기
 실버라이트 런타임이 설치되어 있지 않은 컴퓨터에서는 실버라이트 프로그램이 있는 웹 페이지에 접속하면 실버라이트 런타임을 설치하는 페이지 링크가 달린 이미지가 나오게 될 것입니다. 웹 페이지마다 이용하는 실버라이트 버전이 다를 수 있기 때문에 이 링크는 HTML 페이지에서 수정을 할 수 있습니다. HTML 페이지에 보면 <a href 태그를 이용한 링크가 있는 것을 볼 수 있는데 이 링크 URL을 수정하면 됩니다. 만약 Beta 버전으로 프로젝트를 만들다가 정식 버전이 나왔다면 이때 정식 버전을 받을 수 있는 페이지로 수정되었는지 확인해야합니다.
3. UserControl 에서 다른 UserControl 을 자신의 화면에 띄우기
 제목이 살짝 애매한 것 같습니다. 윈도우 프로그래밍을 생각하면 부모와 자식 윈도우의 관계를 실버라이트로 보여주려면 어떻게 하는 것이 좋을지에 대한 것입니다. 실버라이트도 하나의 컨버스에 모든 UI와 화면을 표현할 수 없어서 여러 개의 컨버스를 만들게 되고 UserControl 이 그런 역할을 하게 됩니다. 어떤 AccountUI 이라는 UserControl 을 자신의 UserControl 에 붙이고 싶다고 합시다.
public AccountUI accountUI = null;
        public UIControl()
        {
            InitializeComponent();
            accountUI = new AccountUI();
            this.LayoutRoot.Children.Add(accountUI);
        }
이렇게 자식으로 Add를 하게 되면 UIControl 이라는 UserControl 안에 AccountUI 라는 UserControl 이 작동하게 됩니다. 간단하게 코드로 작업할 수 있습니다.
4. xaml 코드와 c# 코드에서 각각 이벤트 처리하기
 
        private void btnChat_Click(object sender, RoutedEventArgs e)
        {
            Page.Instance.logicClient.SendChatMsg(ChatTextBox.Text,
 ChatNickTextBox.Text);
        }
 위와 같이 버튼을 클릭 했을 때 동작해야하는 코드가 있다고 합시다. xaml 에서 이 이벤트를 연결시켜 줄 수도 있고 C# 코드에서도 할 수 있습니다. 밑에는 xaml 의 예제를 보여주고 있습니다.
<Button Style=”{StaticResource ButtonStyle}” Content=”Chat” Click=”btnChat_Click” Width=”55″ x:Name=”ChatButton”/>

 개인적으로 C# 코드에서 하는 것을 선호합니다 그 이유는 여러 가지가 있지만 실수를 막기 위함이 가장 큰 것 같습니다. 프로그래머에게 더 명시적이라고 생각합니다.
        public AccountUI()
        {
            InitializeComponent();
         ChatButton.Click += btnChat_Click;
        }
 위와 같이 x:Name 으로 선언한 이름을 인스턴스로 하여 Click 이라는 맴버 변수에 함수 포인터를 + 해주는 것이라고 생각합니다. 저렇게 코드로도 위에서 봤던 xaml 과 같은 작동을 하도록 할 수 있습니다.
 추가적으로 Keydown 이벤트는 KeyDown=”ChatBox_KeyDown” 과 같이 xaml 에서 추가하여 사용 할 수 있고 ChatButton.KeyDown += ChatBox_KeyDown; 과 같이 하여 사용 할 수 있습니다. 그리고 Keydown 의 함수는 구현은 아래와 같습니다.
        /// <summary>
        /// 채팅창에서 엔터를 눌렀을 때 버튼과 같은 효과를 내도록 한다.
        /// </summary>
        /// <param name=”sender”></param>
        /// <param name=”e”></param>
        private void ChatBox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                btnChat_Click(sender, null);
            }
        }    
5. Blend 툴로 만든 스토리보드를 코드로 제어하기

 Blend 툴로 스토리보드를 이용하여 동작을 만들었다면 그것을 적절한 시기에 코드에서 실행을 해주거나 멈추거나 제어를 하고 싶을 때가 있을 것입니다.

LoginSuccess.Begin();

 단순히 스토리보드이름.Begin(); 을 하면 실행이 됩니다. 다만, 코드에 따라서 Begin() 을 했음에도 동작이 실행되지 않는 경우가 있었습니다. UserControl 이 아닌 다른 class 함수에서 호출했을 때 그렇게 동작이 실행되지 않았습니다. 그래서 Dispatcher.BeginInvoke 함수를 이용하여 Begin() 을 호출하는 함수를 인자로 넣어주니 작동을 하였습니다. 그런 부분만 조금 조심한다면 사용하는 것 자체는 무척 쉽습니다. 그리고 스토리보드를 특정 타겟을 지정해서 동작하게 할 수 있습니다.
        private void AnimateBall(Image onBall, Image offBall)
        {
            Page.Instance.FadeIn.Stop();
            Storyboard.SetTarget(Page.Instance.FadeInAnimation, onBall);
            Storyboard.SetTarget(Page.Instance.FadeOutAnimation, offBall);
            Page.Instance.FadeIn.Begin();
        }

 위와 같은 경우가 그 예제라고 할 수 있습니다. 이미지를 타겟으로 설정하여 애니메이션을 정지하고 재생할 수 있습니다.

 위의 내용들은 실버라이트2 Beta2 를 기준으로 하고 있기 때문에 다른 버전에서는 문제가 있을 수 있습니다. 혹시 문제가 발생하면 버전을 확인해 주시길 바랍니다.

실버라이트와 C# 프로그래밍 – 1

사용자 삽입 이미지
?안녕하세요. 이번 글에서는 실버라이트와 C# 프로그래밍이라는 주제를 가지고 글을 써보려고 합니다. 실버라이트는 ‘마이크로소프트 크로스 웹플랫폼’ 로써 프로그래머들은 C# 으로 실버라이트 플랫폼에서 구동되는 프로그램을 개발 할 수 있습니다. C# 에 대한 글은 많이 찾아 볼 수 있지만 실버라이트를 사용하는 방법에 대해서는 아직 공유가 많이 되지 않은 상황입니다. 그래서 저도 일전에 제가 만든 소스를 공개한 적이 있습니다.?
이 소스를 만들면서 알게 된 점들을 공유하고자 글을 쓰게 되었습니다. 실제 프로그래밍을 어떻게 해야 되는지에 대한 글 보다는 여러 링크나 정보와 개념들을 소개해드리는 글이 될 것 같습니다. 그리고 나서 실제 위에 공개한 소스를 어떻게 만드는지에 대해서 까지 진행이 갈 지 모르겠습니다. 실버라이트나 C# 에 대해서 잘 모르는 내용들이 많은데 틀리거나 부족한 내용이 있다면 언제든지 알려주시고 부족하더라고 잘 봐주시면 감사하겠습니다.
Microsoft Silverlight is a cross-browser, cross-platform, and cross-device
plug-in for delivering the next generation of .NET based media experiences and
rich interactive applications for the Web.

By using Expression Studio
and Visual Studio, designers and developers can collaborate more effectively
using the skills they have today to light up the Web of tomorrow

?글을 쓰고 있는 시점에 실버라이트는 실버라이트2 RC0 버전까지 공개되어 있습니다. RC 버전은 정식 Release가 되기 전에 개발자들에게 기존 프로그램을 마이그레이션 할 시간을 주고 버그도 고치는 버전이라고 합니다. 그러나 제가 지금까지 프로그래밍을 했던 환경은 실버라이트2 Beta2 버전이고 RC0 의 한글판은 아직 공개 되어 있지 않기 때문에 실버라이트2 Beta2 버전을 기준으로 설명을 하려고 합니다. Beta2 와 정식버전은 많은 차이가 있어서 수정해야 할 내용도 많다고 알고 있기 때문에 그런 부분을 알아주시길 바랍니다.
사용자 삽입 이미지
1. Microsoft Visual Studio 2008 설치하기
??실버라이트를 이용하여 프로그램을 만들기 위한 개발환경을 셋팅해 보도록 하겠습니다. 우선 가장 중요한 Microsoft Visual Studio 2008 을 설치해야 합니다. VS2008 은 .NET 3.5 를 사용하고 있는데 실버라이트 런타임에도 .NET 프레임워크가 들어있다고 알고 있습니다. 그러나 완전하지 않기 때문에 실버라이트 클라이언트에서 사용하지 못하는 .NET 기능들이 많다고 합니다. 그리고 여러 OS 와 웹 브라우저를 지원히기 위해서도 제한되는 것들이 꽤 있는 것 같습니다.?
사용자 삽입 이미지?VS2008 을 설치하기 위해서는 정품을 구입하거나 체험판 버전을 사용하는 방법, 그리고 공짜인 Express 버전을 사용하는 방법이 있습니다. 개인적으로나 회사에서 구입한 라이센스로 정품을 사용하거나 국제학생증이 있으면 공짜로 정품을 받을 수 있는 방법도 있다고 알고 있습니다. VS2008 에도 해당 사항이 있는지 모르겠지만 국제학생증이 있거나 이매진컵과 같은 곳에 출전하게 되면 Microsoft 제품의 정품들을 무료로 받을 수 있는 방법이 있는 것 같습니다. 국제학생증과 관련한 자세한 장법은 [이곳]을 참고하세요. 이매진컵은 제가 예전에 출전했을 때 공짜로 여러 제품의 정품을 받을 수 있었는데 이제는 어떻게 되었는지 잘 모르겠네요. 무료 버전인 Express 는 [이곳]에서 다운 받을 수 있습니다. 그리고 [Visual Studio 2008 Professional Edition(90일 평가판)] 으로도 개발을 할 수 있습니다.
사용자 삽입 이미지
2.?.NET Framework 3.5 SP1 설치하기 (선택)
?VS2008 을 설치할 때 .NET Framework 3.5 가 가장 먼저 설치가 됩니다. 그렇기 때문에 VS2008 을 설치 했다면?.NET Framework 3.5 의 SP1 을 설치하는 것이 좋습니다. 이 설치는 실버라이트 프로그래밍과 직접적인 관계가 없어 보이기 때문에 선택으로 하였습니다. [이곳] 에서 다운로드 받을 수 있습니다.
사용자 삽입 이미지
3.?Microsoft Visual Studio 2008 SP1 설치하기
?실버라이트를 프로그래밍 하기 위해서는 서비스팩1 을 반드시 설치해야 하는 것 같습니다. 실버라이트 RC0 버전을 설치할 때 VS2008 SP1 을 반드시 설치한 상태에서만 설치 할 수 있게 되어 있었습니다. VS2008 의 SP1 은 Microsoft 홈페이지에서 쉽게 찾을 수 있습니다. [이곳] 을 통해 다운로드 받고 설치하시길 바랍니다.
사용자 삽입 이미지
4.?Visual Studio 2008용 Microsoft Silverlight Tools 베타 2
?실버라이트 프로그래밍을 하기 위해서 꼭 설치를 해야하는 항목입니다.VS2008 로 실버라이트를 프로그래밍 할 수 있도록 여러 가지를 패키지로 묶은 파일입니다.

이 다운로드는 다음 구성 요소를 설치합니다.?

  • Silverlight 2 베타 2
  • Silverlight 2 SDK 베타 2
  • Visual Studio 2008 RTM용 KB950630 또는 Visual Studio 2008 SP1용 KB955214
  • Visual Studio 2008용 Silverlight Tools 베타 2

?다운로드와 자세한 정보는 [이곳] 에서 볼 수 있습니다.?
사용자 삽입 이미지
5.?Microsoft Expression Studio 2
?Microsoft Expression 이라고 하면 처음 듣는 분들도 많을 것이라고 생각합니다. 저도 실버라이트를 접하면서 새롭게 알게 된 프로그램입니다. Expression 에는 많은 종류가 있는데 Web, Blend, Design, Media, Encoder 5가지 입니다. 공식 홈페이지는 [이곳] 입니다. Expression Studio 는 5가지의 제품이 모두 들어있는 패키지라고 생각하시면 됩니다. 그리고 공식 홈페이지에 따르면 ‘Visual Studio Standard 2008’ 제품도 들어있다고 합니다.?
?실버라이트를 이용하여 프로그래밍을 하는 경우에는 Blend 툴과 Design 툴을 주로 이용하게 되고 그 외에 툴도 유용하게 사용 할 수 있습니다. 정품을 구입하거나 평가판을 다운받아서 사용하는 방법이 있습니다. 평가판은 [이곳] 에서 다운받으실 수 있습니다.
사용자 삽입 이미지?
6.?Microsoft Expression Blend 2.5 2008년 6월 프리뷰
?위에 5번에서 설치하는 툴 중에 프로그래머가 가장 많이 이용하는 툴인 Blend 의 최신버전 입니다. 그리고 무료로 사용을 할 수 있기 때문에 (정식버전이 나오기 전까지 일 듯 싶습니다) 작업을 하는데 있어서 꼭 설치를 해야 할 것으로 생각됩니다. 실버라이트 버전에 맞는 Expression 프로그램 버전을 찾아서 설치를 하시는게 중요합니다.?[이곳]?에서 다운받으시길 바랍니다.
사용자 삽입 이미지
7.?Deep Zoom Composer (선택)
?실버라이트로 프로그래밍을 하는데 있어서 유용하게 사용 할 수 있는 프로그램인 것 같습니다.?
실버라이트 2의 주요 기능인 ‘딥 줌(Deep Zoom)’은 웹 상의 이미지를 초고해상도로 유지하며 줌인/아웃 할 수 있는 기술이다.?

제가 직접 사용해 본 것이 아니라서 자세한 설명은 드릴 수 없고 자세한 내용은 [이곳] 을 방문해 보시길 바랍니다. 프로그램 다운은 [이곳] 에서 하시길 바랍니다. 강좌는 [이곳] 에서 보실 수 있습니다.
사용자 삽입 이미지
?이렇게 다운로드와 설치를 마치고 나서 Visual Studio 2008 을 실행하고 ‘새 프로젝트’ 를 눌러보면 실버라이트 프로젝트를 만들 수 있게 됩니다.?
?이상으로 실버라이트 프로그래밍을 위한 개발환경 셋팅에 대해서 알아보았습니다. 이제부터 실버라이트 프로그래밍을 본격적으로 할 수 있습니다. 그러나 이 글에서 튜토리얼과 같은 내용은 다루지 않습니다. 그래서 가장 좋은 방법은 책을 보는 것입니다. [HOONS 닷넷과 함께 하는 실버라이트(SilverLight)] 책이 유일한 책이 될 수 있습니다. 원서를 보는 것에 무리가 없다면 선택의 폭이 넓어 질 수 있습니다. 책을 마련할 수 없다면 인터넷에 있는 강좌를 찾아서 봐야 합니다. 국내에서 실버라이트로 유명한 사이트는 두 곳이 있습니다.?
?인터넷에 사이트를 찾아보시면 여러 강좌와 질문 답변에 대한 정보를 얻을 수 있습니다. 많은 정보가 교류 되었으면 좋겠습니다. 실버라이트 프로그래밍을 하기 위해서는 C# 에 대해서 당연히 프로그래밍을 할 줄 알아야 합니다. 그렇기 때문에 C# 에 대해서 잘 모르시는 분들이나 .NET 에 대해서 잘 모르시는 분들은 해당 부분에 대해서 공부를 하셔야 제대로 시작을 할 수 있을 것 같습니다.