2013-02-14 2 views
1

나는 당신의 조언 사람들이 필요합니다. VS2012에 중고 자동차 판매점에 대한 엔지니어링 작업 프로젝트를 작성 중입니다. SQL 데이터베이스, WCF DataService, WPF 응용 프로그램 (WCF에 succesfuly로 연결됨)이 있고 모바일 버전을 만들고 싶습니다. MVVMCross Portable을 선택하여 Android 용 모노 및 WP7 앱을 만들었습니다. WCF 데이터 서비스가이 대상 프레임 워크가 설치되어 있지 않기 때문에 지정된 하나로, OData 피드에 서비스 참조를 추가 할 수 없습니다MVVMCross Portable을 WCF DataService에 연결합니다. 가능한가?

: 그리고 같은 모바일 휴대용 핵심에서 내 WCF DataService에 연결하여 여기에 문제가있다. WCF Data Services의 지원되는 버전을 설치하려면 http://go.microsoft.com/fwlink/?LinkId=253653을 참조하십시오.

인터넷에서 검색 한 결과 휴대용 클래스 라이브러리가 아직 WCF 데이터 서비스를 지원하지 않는 것으로 보입니다. 나는이 문제에 대한 해결책이 있기를 희망하면서이 질문을 쓰고있다. 안 그러면 내가 기다릴거야?

  • 혹은 나는 mvvmcross 휴대용에서 작동하지만 WPF에서 무엇을했는지 응용 프로그램에서 변경하는 일이 많이있을 것이다 정상 WCF 서비스에 내 WCF 데이터 서비스를 변경해야

  • 또는 MVVMCross Master로 돌아 가야합니다. 휴대용 클래스 라이브러리가 없지만 데이터 서비스에 연결할 Android에 대한 지원이 없습니다.

Simply.OData에 대해 조금 읽었지만 succesfuly로 작업하는 방법을 모릅니다.

미리 감사드립니다.

답변

2

나는 MvvmCross 응용 프로그램을 연결 한에 WCF 기본 HTTP 이드, 터치 WinPhone의 모든 데이터 서비스 (WinRT 또는 WPF를 해본 적이 -하지만 그들도 작동합니다)

당신은, 그러나, 정확한 그 WCF를 코드는 다른 플랫폼에서 달라야합니다. WCF 코드는 이식 가능하지 않기 때문입니다.

나는이 문제를 해결하는 방법에 대한이 개 기본 선택이 있다고 생각 :

  1. 랩 휴대용 인터페이스 뒤에 WCF 코드 - 휴대용 DTO 클래스에 거래하고이에 대한 인터페이스를 제공하는 인터페이스 가져 오기/보내다. 그런 다음 휴대용 DTO를 비 휴대용 구성 요소와 매핑하는 작은 클래스를 각 플랫폼에 작성해야합니다. AutoMapper와 같은 도구가이 작업에 도움이 될 수 있습니다. MonoDroid 또는 WinPhone에서이 작업을 시도하지 않았습니다.

  2. 코어에서 파일 연결을 사용하고 각 플랫폼에 대해 별도의 라이브러리 프로젝트를 유지 관리하십시오. 이 파일 연결 접근법의 예를 보려면 https://github.com/Redth/WshLst/을보십시오. 이것은 WCF가 아닌 Azure 모바일 서비스 용 이었지만 동일한 원칙이 적용됩니다.

이 두 가지 접근 방식 모두 완벽하지 않습니다. 둘 다 개발에 오버 헤드가 없지만 코드를 공유하고 앞으로 나아갈 앱을 만들 수있는 방법을 제공합니다.

개인적으로 접근법 1을 선호합니다 - 현재 네트워크 스택을 내 응용 프로그램 논리와 분리하는 깨끗한 인터페이스를 제공하므로 WCF를 제거하고 앞으로 WebAPI 또는 서비스 스택과 같은 것으로 대체 할 수있는 기술적 인 경로를 제공합니다 . 가까운 미래에


는 MonoTouch 및 MonoDroid에서 일부 WCF 기능을 지원하는 공유 휴대용 클래스 라이브러리 프로필이있을 수 있습니다 -하지만 난이 wp를하거나 WinRT 곧 언제든지 사용할 수 있습니다 의심 :/


내가 Simple.OData에 대해 아무것도 몰라 두려워 (이 그것을 https://github.com/simplefx/Simple.OData) - 나는 그것을 많이 쓴 사람을 신뢰하지만, 나는 그들의 dynamic 코드는 WP와 MonoDroid에 얼마나 잘 작동하는지 모른다 . 두 가지 모두에서 작동해야한다고 생각하지만 Reflection.Emit에 의존하는 코드에는 문제가있을 수 있습니다.


마지막 요점 - WP는 기본적으로이를 제공하지 않습니다 - 당신은 WP에 관련된 어떤 네트워크를 할 때마다, 항상 당신이 할 수있는 경우 gzip 압축을 가능하게하려고합니다.

+0

큰 도움을 주셔서 감사합니다. 감사 드리며, 프로그래밍 모험은 1 년 후에 시작되므로 시작에 있습니다. 접근 방식 1에 관해서는 한 프로젝트에서 WCF 서비스 (데이터가 아닌 일반)를 만드시겠습니까? 그래서 제 문제에 대한 해결책은 아주 쉽습니다. WCF에서 더 많은 인터페이스를 만들 가능성을 완전히 잊었습니다. 몇 달 전에 MVVMCrossMaster를 사용해 보았는데 효과가있었습니다. Android에 문제가 없기를 바랍니다. 고마워요! :) – lechu

+0

Automap에 관해서, 나는 그것에 관해 조금 공부했다. 그리고 그것은 매우 유용한 도구 다. 그러나 나는 그것을 어디에 둘 것이다? 코어 프로젝트에서 각 플랫폼별로 분리해야합니까? Core.Android와 Core.WP7 같은가요? – lechu

+0

나는 정말로 도움이되지 못한다. 실험 해보십시오. 먼저 스스로 문제를 해결하십시오. 장벽에 부딪쳤을 때 항상 새로운 질문으로 돌아올 수 있지만 의견이 아닌 것은 여기서 읽기가 어렵습니다. – Stuart

3

Simple.OData.Client를 살펴보십시오. 그것은이 목적을 위해 정확하게 작성된 이식 가능한 클래스 라이브러리 (내부적으로 사용되지만 Simple.Data OData 어댑터)입니다. 나는 심지어 MvvmCross와 함께 사용한다.

GitHub에 있으며 NuGet 패키지가 있습니다. "사전"옵션으로 설치하십시오.

+0

안녕하세요, 답변 해 주셔서 감사합니다. 분명히 그 레이어 오른쪽에 어댑터가 있기 때문에 내가 각 플랫폼의보기 레이어 Simple.OData.Client를 설치해야한다고 생각하면? 보기 또는 코어에 "Install-Package Simple.Data.OData -pre"명령을 사용하여 설치하려고합니다. "이 패키지를 대상인 Silverlight, Version = v4.0, Profile에 설치하려고합니다. = WindowsPhone71 또는 porta ble-win + net45 + MonoAndroid16 + sl40 + net10 + wp71 ' " – lechu

+0

panda를 monoandroid pcls에 설치하는 것은 어렵습니다. 자세한 내용은 새로운 질문을하십시오 (새로운 질문을하면 Google, Bing 그리고 같은 문제가있는 사람들) – Stuart

+0

@lechu oops 나는 WP7에 대한 지원이 필요하다는 것을 간과했다. Simple.OData.Client는 WP8을 지원합니다. WP7 지원을 추가하는 데 필요한 사항을 확인 하겠지만 Windows Phone 7 용 OData 클라이언트를 찾지 못한 경우 걱정됩니다. –