MvvmCrossプラグインが行く方法かもしれないと思いました
はい、これはまさにプラグインが設計されたような状況です。
私は確かにこれをソケットプラグインとして実装します:
プラグインのPCL部分はソケットインターフェイスを提供しますが、共有コードに共有基本クラスの「バッファコピー」タイプの機能も含まれている可能性があります。
rawソケット接続とIOを処理するプラットフォーム固有のソケット実装。
これらのプラットフォームプラグインの追加では、いくつかのプラットフォーム実装間でかなり多くのファイルリンクが使用される可能性があります。この方法で共有する必要のあるコードがたくさんあると思います。
ソケットプラグインは非常に一般的な要件になると思います。したがって、オープンソースを介してこれに取り組む場合は、積極的な貢献者を見つけることができます...または、クローズドソースを使用する場合は、顧客を見つけることができます。
この段階でIPネットワークソケットの実装をオープンソース化した人は誰もいませんが、SpheroプロジェクトにはBluetoothソケットの例が含まれていましたが、通信方法が完全にネットワーク効率的ではありませんでした。
このBluetoothソケットコードは、https://github.com/slodge/BallControl/tree/master/Cirrious.Sphero.WorkBench/Plugins/SpheroのMs-PL内でオープンソース化されています。
このSpheroプラグインは、PCL Sphero-SocketレベルのAPIを公開しません。代わりに、プラグインレベルで、Sphero-RobotレベルのAPIを公開することを選択します。
後知恵(素晴らしいこと)の恩恵を受けて、これをもう一度実装すると、次のように実装します。
- Bluetoothスキャン、接続、ソケットストリーミングを公開するBluetoothシリアルポートプラグイン
- ロボットを駆動するためにプラグインを消費した追加のPCLライブラリ-これはおそらくプラグインと呼ばれるかもしれませんが、その中に非PCLコードはありません。