1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/isrc_ohos-oh-dadf

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

OH-DADF

ОpenHarmony-Разпределённая Аппликационная Разработка Кадр

Основан на самостоятельно разработанном открытом кадре для быстрого создания различных распределённых бизнес-приложений на основе OpenHarmony SDK и JDK. Этот кадр использует многослойную модель упаковки для обслуживания разработчиков разных уровней, что позволяет упрощать процесс разработки.

Исходя из ограниченной силы одного человека, приветствуем ваши предложения и рекомендации для совместной работы.

Описание проекта

  • Название проекта: Распределённая аппликационная разработка кадр

  • Серия: Открытый компонент OpenHarmony

  • Функционал: Упрощение разработки распределённых приложений

  • Версия SDK: sdk5, DevEco Studio 2.1 Release

  • Автор проекта: Wu Shengyao

  • Электронная почта: isrc_hm@iscas.ac.cn

  • Язык программирования: Java

Введите описание изображения

Инструкция по установке

  1. Скачайте пакет OH-DADF .har OH-DADF.har
  2. Запустите DevEco Studio, импортируйте скачанный пакет .har в каталог проекта "entry -> libs".

Исправлены пробелы после пунктов списка и перед названиями файлов.3. В файле build.gradle уровня модуля добавьте зависимость, добавьте ссылку на JAR-файлы в каталоге libs внутри тега dependencies, затем выполните команду gradle sync.

dependencies {  
    implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])  
    ...  
}  
  1. Если пакет .har всё ещё не распознан, попробуйте щёлкнуть правой кнопкой мыши по пакету .har, выбрать "Add as Library" для добавления ссылки на пакет, выберите нужный модуль и нажмите "ОК", чтобы завершить добавление.#### Инструкция по использованию

  2. Распределённая сцена 1: запуск/остановка распределённой задачи

1.1 Уровень контроллеров StartAbilityContainer

Предоставляет высокий уровень упаковки StartAbilityContainer, который позволяет пользователям просто внедрять экземпляр StartAbilityContainer в UI для реализации функций обнаружения устройств, запуска и остановки распределённых задач.

Например, можно использовать StartAbilityContainer как корневое UI, всего несколько строк кода, очень удобно:

// Проверка прав доступа
requestPermissionsFromUser(Permissons.getBasePermissons(), 0);
// Вызов контроллера
StartAbilityContainer startAbilityContainer = new StartAbilityContainer(this);

super.setUIContent(startAbilityContainer);

Примерный результат:

Введите описание изображения

1.2 Уровень функций StartManager

Уровень упаковки ниже, чем у компонента, но более гибкий и свободный, позволяющий пользователям делать выбор самостоятельно.

  1. Распределённая сцена 2: распределённое соединение задач / отправка

Управление PA только через запуск/остановку недостаточно для длительного взаимодействия. Поэтому OH-DADF предоставляет удобное распределённое соединение и отправку задач на основе OpenHarmonyOS.

2.1 AbstractProxy

На основе IRemoteBroker OpenHarmonyOS наша система предлагает класс AbstractProxy для автоматического управления взаимодействием после соединения. Пользователю достаточно переопределить метод task() в соответствии с его бизнесом.```java // IAbilityConnection — это встроенный класс OpenHarmonyOS, используемый для управления соединением с помощью обратных вызовов private IAbilityConnection mConn = new IAbilityConnection() { @Override public void onAbilityConnectDone(ElementName element, IRemoteObject remote, int resultCode) { // После завершения соединения с удалённым PA будет вызван этот обратный вызов MessageOption option = new MessageOption(MessageOption.TF_SYNC); // Создание экземпляра AbstractProxy mProxy = new AbstractProxy(remote, option) { @Override public void task() throws RemoteException { // Можно просто реализовать свою логику здесь, например, выполнить сложение 1+1 mytask(1, 1); } }; Log.info("PA", "Соединение с удалённым PA завершено");

    }

    @Override
    public void onAbilityDisconnectDone(ElementName element, int resultCode) {
        // При закрытии уже подключенного удалённого PA будет вызван этот обратный вызов
        Log.info("PA", "Разъединение с удалённым PA завершено");
    }
};

private void mytask(int a, int b) throws RemoteException {
    // Создание данных
    MessageParcel data = MessageParcel.obtain();
    data.writeInt(a);
    data.writeInt(b);
    // Установка данных для Proxy
    mProxy.setData(data);
    // Отправка данных для обработки на удалённой стороне
    mProxy.sendRequest();
    // Получение ответа от удалённой стороны
    int result = mProxy.getReply().readInt();
    mProxy.getReply().reclaim();
    // Вывод результата
    btnControlRemotePA.setText("Результат вычислений = " + result);
};

Предоставлен высокий уровень абстракции ConnectAbilityContainer, который позволяет пользователям использовать экземпляр ConnectAbilityContainer в UI для обнаружения устройств, установки распределённых соединений, отправки данных и разъединения. Пример использования `ConnectAbilityContainer` в качестве корневого UI вместо распределенного сценария:

```java
// Разрешения
requestPermissionsFromUser(Permissions.getBasePermissions(), 0);
// Вызов компонента
ConnectAbilityContainer connectAbilityContainer = new ConnectAbilityContainer(this);
connectAbilityContainer.setIAbilityConnection(mConn);

super.setUIContent(connectAbilityContainer);

Основной эффект представлен ниже:

Изображение

Сначала нажмите кнопку соединения, после успешного соединения можно будет нажать кнопку выполнения для запуска своего бизнес-логики. После завершения работы нажмите кнопку отключения.

2.3 Уровень функций для упаковки ConnectManager

Уровень упаковки функций ниже по сравнению с уровнем компонентов, но более гибкий и свободный, позволяющий пользователям выбирать самостоятельно.

3 Распределенный сценарий три: миграция распределенной приложенияРаспределённая миграция приложений имеет мало различий по сравнению с возможностями OpenHarmonyOS, так как они используют AbilitySlice для наследования IAbilityContinuation. Заинтересованным лицам рекомендуется обратиться к официальной документации. В будущем планируется выпуск различных шаблонов бизнес-приложений на основе AbilitySlice для упрощения разработки.Здесь представлен простой пример распределённого блокнота, основной эффект которого представлен ниже:

Изображение

При вводе текста, нажатии кнопки "Сохранить" и последующей кнопки "Миграция", данное приложение будет перемещено на другое устройство (если есть несколько устройств, удовлетворяющих условиям старта, будет показан выборочный диалог), а введённый текст останется неизменным.

Версионирование

  • v0.1.0-alpha На данном этапе это очень начальная версия, вот общее состояние завершённости:

Изображение

Информация о правах и лицензиях

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Распределённая среда разработки приложений на базе OpenHarmony. Развернуть Свернуть
Apache-2.0
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/isrc_ohos-oh-dadf.git
git@api.gitlife.ru:oschina-mirror/isrc_ohos-oh-dadf.git
oschina-mirror
isrc_ohos-oh-dadf
isrc_ohos-oh-dadf
master