2017-04-14 22 views
0

私は初めてXamarinの学習を始めようとしており、正しい方向に向けることができればと思っていました。現在、私はASP.Net MVC 5アプリケーションを書くことができます。私は、IOSとAndroidデバイス用のラズベリーパイと私がオンラインで読んだものとのやりとりに興味があり、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アプリケーションと通信する任意の言語でWebサービスを作成できます。 – Jason

+0

私は、Xamarin FormsがUIレイヤーであり、私が読んでいることから、Xamarin、IOS、Xamarin.AndroidはMonoの上に構築されていると言っていることを理解しています。これはXamarinフォームでも同じですか? – Andy

+0

XFはX.iOSとX.Androidの上で動作します – Jason

答えて

2

ラズベリーパイ(RPi)はAndroidを実行することができ、その場合にのみ、Xamarinが提供するものを利用することができます。その場合、Xamarin.Androidアプリを作成してRPiで実行することができます。

しかし、あなたはRPi上で何らかの種類のサーバを動作させ、iOSまたはAndroidデバイス上のアプリケーションと通信してXamarin Appを実行したいとします。 このアプリでXamarin.Formsを使用するかどうかは関係ありません。あなたはおそらくあなたのために最も簡単だろうラズベリーパイ、サーバー側の何ができるか

サーバー側

。 Windows 10のIoTコアをダウンロードしてインストールすることですか?その後、ASP.NET WebAPIまたはMVCアプリケーションを実行することができます。

また、RaspbianやRPi上で動作する他のLinuxベースのディストリビューションで、代わりに.NET Coreを使用することもできます。

どちらのソリューションでも、サーバーとクライアントの間でシリアル化契約を共有できる可能性があります。

電話アプリのサイド

電話であなただけのRPI上のサーバーと通信するクライアントを持っているでしょう。 Xamarinを使用している場合(フォームを使用しているかどうかは関係ありません)、回復力のあるAPIクライアントを作成するには、いくつかの非常に良い記事があります。

これは個人的な好みですが、私はRefitを使用してサーバーのAPIを定義します。 Pollyと一緒に、失敗した要求を再試行または回路切断します。私はそれらのいずれかに関連していません。

最終的には、アプリケーションやサーバー上で実行されるものは問題ではありません。これらは2つの別々のエンティティであり、あなたが最もよく交換するのは、交換しているデータの契約だけです。

+0

説明をありがとう。これは大いに役立ちます – Andy

0

私はメインコンピュータとしてラズベリーパイを使用しています。 MonoDevelopを使用してC#プログラムとモノを作成して実行します。私は自分のGUIにSystem.Windows.Formsを使用します。私が終わったら、私はラスベリーパイまたは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; 
    } 
}