ESFramework 开发手册(14) -- Xamarin移动端开发(Android、iOS)

       ESFramework的早期版本就已经支持了原生的Android和iOS,而最新版本的ESFramework客户端引擎则推出了Xamarin版本,可用于来发Android/iOS/WP等移动端应用App和游戏。如此一来,仅仅懂.NET的开发者也可以开发手机应用了。

        相比较ESFramework提供的Android和iOS原生引擎而言,ESFramework的Xamarin版本内置了与ESFramework的PC版完全一样的自动序列化器,这使得在打通PC端与移动端时,通信协议的封装与解析就不需要做任何额外的工作了。

一. ESFramework Xamarin客户端引擎结构

      ESFramework 的 Xamarin 客户端引擎分为两个层次:

(1)可移植的通用部分,即ESFramework.Xamarin.dll。

(2)特定平台的非通用部分,即Android平台上的ESFramework.Android.dll,和iOS平台上的ESFramework.iOS.dll。

      当使用ESFramework的Xamarin引擎开发手机应用时,应用与组件之间的依赖关系如下图所示: 

 

       ESFramework.Xamarin.dll 中包含了ESFramework所提供的用于二次开发的所有API的定义,与PC版的接口完全一致。

       ESFramework.Android.dll 和 ESFramework.iOS.dll 则是分别在Android平台和iOS平台上实现了ESFramework.Xamarin.dll中定义的接口。

二. 如何使用ESFramework的Xamarin引擎

1. 引用正确的dll

        通常我们是使用Xamarin Forms开发可移植的手机应用,那么,在Xamarin Forms项目中只需要引用ESFramework.Xamarin.dll,就能使用ESFramework提供的所有功能。我们以 ESFramework的Xamarin 版本的 Demo 为例,如下图所示。

      

      ESFramework.XamarinDemo 项目是可移植的,该项目内部使用Xamarin Forms实现了Demo几乎所有的功能,它只需要引用ESFramework.Xamarin.dll。

      ESFramework.XamarinDemo.Android 项目是最终发布到安卓平台的项目,它依赖于ESFramework.XamarinDemo项目,并实现了Demo中那些无法在ESFramework.XamarinDemo项目中实现的基于安卓平台的那些功能。所以,ESFramework.XamarinDemo.Android 项目引用了ESFramework.Xamarin.dll和ESFramework.Android.dll。

      ESFramework.XamarinDemo.iOS项目是最终发布到iOS平台的项目,它依赖于ESFramework.XamarinDemo项目,并实现了Demo中那些无法在ESFramework.XamarinDemo项目中实现的基于iOS平台的那些功能。所以,ESFramework.XamarinDemo.iOS项目引用了ESFramework.Xamarin.dll和ESFramework.iOS.dll。 

2. 使用ESFramework的标准接口

      ESFramework.Xamarin.dll提供了GlobalContext静态类,其包含了ESFramework的核心接口IRapidPassiveEngine的引用,以及包含了紧凑的序列化器ICompactPropertySerializer的引用。

    // 摘要:跨平台公用接口上下文。其实现在具体的平台中。
    public static class GlobalContext
    {
        public static ICompactPropertySerializer CompactPropertySerializer;
        public static IRapidPassiveEngine RapidPassiveEngine;
    }

(1)GlobalContext 提供的的IRapidPassiveEngine接口与PC版的完全一致。

(2)GlobalContext 提供的的ICompactPropertySerializer对通信协议进行序列化/反序列化得到的结果,也与PC版的完全一致。 

3. 将ESFramework引擎的特定平台实现注入

      那么,在什么地方给GlobalContext的两个静态成员赋值了? 

      我们需要在特定平台的项目的程序启动的时候,为GlobalContext的两个静态成员赋值,以注入当前平台的ESFramework实现。

      如上例中的ESFramework.XamarinDemo.Android项目,我们在MainActivity.cs中的OnCreate方法的开始处添加如下代码:

    GlobalContext.RapidPassiveEngine = ESPlus.Rapid.RapidEngineFactory.CreatePassiveEngine();
    GlobalContext.CompactPropertySerializer = CompactPropertySerializer.Default;

       同理,在上例中的ESFramework.XamarinDemo.iOS项目,我们可以在AppDelegate.cs中的FinishedLaunching方法的开始处添加同样的代码。

三. Demo 示例

       请参见 ESFramework Demo -- 入门Demo,简单的即时通讯系统(包含 .NET/Android/iOS/WebSocket/Xamarin 源码)

 

下一篇:ESPlatform 群集平台(00) -- 概念与模型

上一篇:ESFramework 开发手册(13) -- ESFramework 二次开发说明

-----------------------------------------------------------------------------------------------------------------------------------------------   

下载免费版本的ESFramework 以及 demo源码  

阅读 更多ESFramework开发手册系列文章

Q Q:168757008

官网:www.oraycn.com

导航

首页

官方网站

立即咨询 

站内搜索

ESFramework 通信框架

详细说明

SDK下载

ESFramework FAQ

版本变更记录

OMCS 语音视频框架

详细说明

SDK下载

OMCS FAQ

版本变更记录

OrayTalk 企业即时通讯系统

详细说明

客户端下载

傲瑞实用组件

SDK下载

NPush 消息推送组件

StriveEngine 轻量级的通信引擎

MFile 语音视频录制组件

MCapture 语音视频采集组件

MPlayer 语音视频播放组件

OAUS 自动升级系统

傲瑞组件 FAQ

授权

授权流程

产品授权说明

产品选购指南

授权SDK使用说明

其它

SDK使用技巧

联系我们

电话:027-87638960

Q Q:168757008

邮件:master@oraycn.com