2017-04-14 5 views
0

나는 처음으로 Xamarin을 배우기 시작했고, 나는 올바른 방향으로 향할 수 있기를 바랬다. 현재 ASP.Net MVC 5 응용 프로그램을 작성할 수 있습니다. IOS 및 Android 기기 용 라즈베리 파이 (Raspberry Pi)와 통신하고 온라인에서 읽은 것에서 Mono Framework가 가장 좋은 방법입니다. 내가 틀렸다면 나를 바로 잡아주세요.Xamarin과 Raspberry Pi

제 질문은 Xamarin Native UI와 반대로 Xamarin Forms를 사용할 수 있고 Mono Framework가 Xamarin Forms로 구현할 수 있거나 Xamarin Forms 대신 수행해야 할 완전히 별개의 것이라면 제 질문입니다. 나는 이것이 너무 혼란 스럽기를 바란다. 그러나 나는 무엇이 무엇과 함께 작동 하는지를 이해하려고 노력하고있다. 그래서 나 자신을위한 로드맵을 만들 수있다.

+0

XF는 Android 및 iOS 용 UI 레이어입니다. RPi에서는 실행되지 않습니다. PI에서 실행되는 모든 언어로 웹 서비스를 작성하고 Android/iOS에서 실행되는 XF 앱과 통신 할 수 있습니다. – Jason

+0

저는 Xamarin Forms가 UI 레이어이고, Xamarin, IOS 및 Xamarin.Android가 Mono 위에 구축되어 있다는 것을 알고 있습니다. Xamarin Forms에서도 마찬가지입니까? – Andy

+0

XF는 X.iOS 및 X.Android의 상단에서 실행됩니다. – Jason

답변

2

Raspberry Pi (RPi)는 Android를 실행할 수 있으며 Xamarin이 제공하는 것을 활용할 수 있습니다. 이 경우 Xamarin.Android 앱을 만들어 RPi에서 실행할 수 있습니다.

그러나 RPi에서 어떤 종류의 서버를 실행하고 Xamarin App을 실행하는 iOS 또는 Android 장치의 응용 프로그램과 통신하려고합니다. 이 앱이 Xamarin.Forms를 사용하는지 여부는 중요하지 않습니다.

서버 측 아마 당신은 당신을위한 가장 쉬운 것 라즈베리 파이에 서버 측을 할 수있는 무엇

. Windows 10 IoT Core를 다운로드하고 설치하는 것입니다. 그런 다음 ASP.NET WebAPI 또는 MVC 응용 프로그램을 실행할 수 있습니다.

또는 .NET 코어를 대신 사용하여 Raspbian 또는 RPi에서 실행되는 다른 Linux 기반 배포에서이 작업을 수행 할 수 있습니다.

두 가지 솔루션을 사용하면 서버와 클라이언트간에 일련 번호 계약을 공유 할 수 있습니다. 전화

전화 앱 사이드

당신은 단지 RPI의 서버와 통신하는 클라이언트를 가질 것이다. Xamarin을 사용할 때 탄력적 인 API 클라이언트를 작성하는 데는 매우 좋은 기사가 여러 개 있습니다 (Forms를 사용하는지 여부는 중요하지 않음).

개인적인 취향이지만 Refit을 사용하여 서버에 대한 API를 정의합니다. Polly과 함께 실패한 요청을 다시 시도하거나 회로 중단하십시오. 나는 그 어떤 것과도 관련이 없다.

결국 앱이나 서버에서 실행되는 항목이 두 개의 개별 항목이며 가장 많이 공유 할 가능성이있는 것은 교환하는 데이터의 계약뿐입니다.

+0

설명해 주셔서 감사합니다. 이것은 많은 도움이됩니다. – Andy

0

저는 메인 컴퓨터로 라즈베리 파이를 사용합니다. MonoDevelop를 사용하여 C# 프로그램과 모노를 실행합니다. 내 GUI 용 System.Windows.Forms를 사용합니다. 끝나면 Raspberry Pi 또는 Windows에서 실행할 수있는 .exe 파일이 있습니다. 런타임에 양식에 컨트롤을 추가하는 데 도움이되는 클래스가 있습니다.

public static class ControlCreator 
{ 
    public static void Add(this Control.ControlCollection collection 
    ,out GroupBox box,string id, string text, int left, int top 
    , int width, int height) 
    { 
     box = new GroupBox(); 
     box.Text = text; 
     AddControl (collection,box,id,left,top,width,height); 
     return; 
    } 
    public static void Add(this Control.ControlCollection collection 
    ,out Button box,string id, string text, int left, int top 
    , int width, int height) 
    { 
     box = new Button(); 
     box.Text = text; 
     AddControl (collection,box,id,left,top,width,height); 
     return; 
    } 
    public static void Add(this Control.ControlCollection collection 
    ,out Label box,string id, string text, int left, int top 
    , int width, int height) 
    { 
     box = new Label(); 
     box.Text = text; 
     AddControl (collection,box,id,left,top,width,height); 
     return; 
    } 
    private static void AddControl(
    Control.ControlCollection collection,Control box,string id, int left 
    , int top, int width, int height) 
    { 
     box.Name = id; 
     box.Left = left; 
     box.Top = top; 
     box.Width = width; 
     box.Height = height; 
     collection.Add(box); 
     return; 
    } 
}