locked
Windows 7 phone 으로 개발한거 포팅하고싶은데요. RRS feed

  • 질문

  • Windows 7 phone 으로 개발한거 Windows App으로 포팅하고싶은데요. 좀 막막한데... 쉽게 할수 있는 Tool이나  가이드 라인 주실수있으시나요?

    부탁드립니다.

    • 이동됨 Jina Lee 2012년 10월 23일 화요일 오전 7:42 (이전 위치:Windows 스토어 앱)
    2012년 9월 25일 화요일 오전 5:15

답변

  • @BoooNu

    MS 공식 포팅가이드문서를 한번 읽어보세요~

    MSDN - Windows Phone 7 앱을 Metro 스타일로 마이그레이션/이식

    http://msdn.microsoft.com/ko-kr/library/windows/apps/hh465136.aspx

    최근에 저도 WP7 C#+xaml 앱을 Windows8 C#+xaml 앱으로 포팅하는 작업을 했는데요,

    개인적으로는 포팅보다는 기존소스코드 복기하면서 재작성을 추천드립니다.

    언뜻 UI 컨트롤만 좀 바뀌거나 네임스페이스만 변경해서 어떻게 쉽게 해볼까 생각도 해 볼수 있는데 Silverlight 이랑 WinRT랑 워낙 달라서 포팅률이 대략 20~30% 정도였던것 같네요.

    완전히 순수한 비지니스로직 아니구선 어렵습니다. Java 서버코드를 안드로이드에 포팅하는 느낌정도인것 같아요.

    API별로 조금 자세히 나열해 보면요...

    Silverlight -->> WinRT

    UI 컨트롤 -->> 전체다시작성

    WebRequest, WebClient -->> HttpClient, 비동기호출방식 변화로 전체적인 구조변경도 필요.

    Socket -->> StreamSocket, 비동기호출방식 변화로 전체적인 구조변경도 필요.

    byte[], 버퍼관리 -->> IBuffer, CryptographicBuffer

    IsolateStorage -->> ApplicationData.Current.LocalFolder

    AES, RSA 등 암호화 -->> CryptographicEngine

    ...

    UI 관련 API들 변경된것은 그렇다고 해도 non-UI API들이 변경될것까지 있었을까 처음에는 다소 불만이 있었는데요,

    실제로 조금 익숙해 지면서 되돌아보니 생산성도 훨씬 좋아졌고, API들이 더 잘 정리된것이 느껴집니다. ㅎㅎ

    • 답변으로 표시됨 Jina Lee 2012년 10월 2일 화요일 오전 10:10
    2012년 9월 26일 수요일 오전 9:05

모든 응답

  • 안녕하세요 BoooNu님,

    "Window 7 phone으로 개발한 거 포팅하고 싶은데요"에 대해서 답변드리겠습니다.

    기본적으로 MS libary에서 제공하고 있는 가이드 라인 입니다. 확인 후 어려우신 점이나 이해 어려우신 부분은 문의 부탁드립니다.

    Windows Phone 7 Silverlight 앱을 이식하기 위한 준비

    Windows Phone 7 앱 이식을 시작하기 전에 고려해야 할 사항은 다음과 같습니다.

      • 앱을 신속하게 이식하겠습니까, 아니면 유지 관리 용이성 개선에 투자하겠습니까y? 프로젝트의 단일 소스를 유지하거나 대상 플랫폼이 다른 프로젝트 간에 코드와 바이너리를 다시 사용하도록 지원하기 위해 사용할 수 있는 몇 가지 방법을 알아보려면 유지 관리 용이성 개선 섹션을 참조하세요.
      • Windows Phone 7 장치의 해상도는 가로 모드에서 800x480(WVGA), 세로 모드에서 480x800입니다. Windows 8 Consumer Preview 장치에서는 다양한 가로 세로 비율로 여러 가지 가능한 가로 및 세로 해상도를 사용할 수 있습니다. 인터페이스와 자산의 배율을 어떻게 조절하겠습니까? 몇 가지 아이디어를 얻으려면 서로 다른 폼 팩터에 대한 계획을 참조하세요
      • Windows Phone 7 인터페이스는 터치 방식입니다. Windows 8 인터페이스는 터치는 물론 마우스와 키보드 등의 기타 입력 방법도 지원해야 합니다. 터치를 사용하지 않는 사용자에게 인터페이스가 불편하게 느껴집니까? 사용자 입력 방법과 상관없이 앱을 유용하게 유지하는 방법에 대해 알아보려면 접근성에 대한 계획을 참조하세요. 
      • Windows Phone 7 앱에 휴대폰 전용 기능이 있습니까? 이에 상응하는 Windows 런타임의 네트워킹 기술을 알고 있습니까? 휴대폰 또는 공급자 기능을 폭넓게 지원하는 경우 네트워크 또는 공급자에 덜 의존하도록 앱을 다시 개발해야 할 수 있습니다.
      • 앱이 그래픽 렌더링을 Microsoft XNA 구성 요소에 의존하는 게임입니까? 그런 경우 Windows 8 응용 프로그램에 XNA를 사용할 수 없습니다. 또한 DirectX를 관리 코드와 함께 효과적으로 사용할 수 없습니다. DirectX 게임은 C++로 개발해야 합니다. 자세한 내용은 DirectX 게임 만들기를 참조하세요.

      일반적인 이식 과정

      앱을 신속하게 이식하여 출시 시간을 최적화하려면 다음 단계를 수행할 수 있습니다.

      1. Windows 8용 Microsoft Visual Studio 11 Express Beta를 실행하고 C++, C# 또는 Visual Basic을 사용하는 새로운 Metro 스타일 앱을 만듭니다. 앱 레이아웃과 기능에 가장 적합한 프로젝트 템플릿을 선택합니다. 자세한 내용은 템플릿을 사용하여 Metro 스타일 앱 시작(C#, C++, Visual Basic)을 참조하세요.
      2. 새 프로젝트에서 다시 사용할 자산 파일, 코드 및 폴더를 복사합니다.
      3. Visual Studio 솔루션 탐색기에서 모든 파일 표시를 클릭합니다.
      4. 복사한 파일과 폴더를 선택한 다음, 마우스 오른쪽 단추를 누르고 프로젝트에 포함을 선택합니다.
      5. 전체 찾기와 바꾸기를 수행하여 "System.Windows"를 "Windows.UI.Xaml"로 바꿉니다. 
      6. 필요에 따라 원래 XAML 코드에서 다시 사용할 부분을 새 프로젝트의 XAML 파일 또는 새로 만든 XAML 파일로 복사합니다. 페이지 레이아웃 루트의 요소(대개 Grid 요소)를 종종 복사하여 다시 사용할 수 있지만, 가장 바깥의 요소(대개 PhoneApplicationPage 요소)는 해당되지 않습니다.
      7. 프로젝트를 빌드하여 오류를 생성하고, 이러한 오류를 사용하여 업데이트 또는 교체가 필요한 코드의 부분을 식별합니다. 때로는 필요한 업데이트가 매개 변수 유형 변경과 같은 사소한 것일 수 있습니다. 다른 업데이트에서는 Metro 스타일 앱용 .NET API 대신 Windows 런타임 API를 사용해야 할 수 있습니다. 지원되는 API를 파악하려면 이 항목 및 관련 항목을 사용할 수 있습니다.
      8. 프로젝트를 빌드할 때까지 쉽게 업데이트할 수 없는 코드에 대해 주석이나 설명을 추가합니다.
      9. 이식이 완료될 때까지 한 번에 하나씩 주석을 단 코드를 업데이트 또는 교체합니다.

    2012년 9월 25일 화요일 오전 9:34
  • @BoooNu

    MS 공식 포팅가이드문서를 한번 읽어보세요~

    MSDN - Windows Phone 7 앱을 Metro 스타일로 마이그레이션/이식

    http://msdn.microsoft.com/ko-kr/library/windows/apps/hh465136.aspx

    최근에 저도 WP7 C#+xaml 앱을 Windows8 C#+xaml 앱으로 포팅하는 작업을 했는데요,

    개인적으로는 포팅보다는 기존소스코드 복기하면서 재작성을 추천드립니다.

    언뜻 UI 컨트롤만 좀 바뀌거나 네임스페이스만 변경해서 어떻게 쉽게 해볼까 생각도 해 볼수 있는데 Silverlight 이랑 WinRT랑 워낙 달라서 포팅률이 대략 20~30% 정도였던것 같네요.

    완전히 순수한 비지니스로직 아니구선 어렵습니다. Java 서버코드를 안드로이드에 포팅하는 느낌정도인것 같아요.

    API별로 조금 자세히 나열해 보면요...

    Silverlight -->> WinRT

    UI 컨트롤 -->> 전체다시작성

    WebRequest, WebClient -->> HttpClient, 비동기호출방식 변화로 전체적인 구조변경도 필요.

    Socket -->> StreamSocket, 비동기호출방식 변화로 전체적인 구조변경도 필요.

    byte[], 버퍼관리 -->> IBuffer, CryptographicBuffer

    IsolateStorage -->> ApplicationData.Current.LocalFolder

    AES, RSA 등 암호화 -->> CryptographicEngine

    ...

    UI 관련 API들 변경된것은 그렇다고 해도 non-UI API들이 변경될것까지 있었을까 처음에는 다소 불만이 있었는데요,

    실제로 조금 익숙해 지면서 되돌아보니 생산성도 훨씬 좋아졌고, API들이 더 잘 정리된것이 느껴집니다. ㅎㅎ

    • 답변으로 표시됨 Jina Lee 2012년 10월 2일 화요일 오전 10:10
    2012년 9월 26일 수요일 오전 9:05