Как переместить приложение службы Windows.NET в Linux, использующий моно?

Zip4j использует полностью java-код без поддержки собственного кода, и именно поэтому он лучше подходит для меня. Zip4j предоставляет следующие функции:

  • Создание, добавление, извлечение, обновление, удаление файлов из Zip-файла
  • Чтение / запись защищенных паролем файлов Zip
  • Поддерживает шифрование AES 128/256
  • Поддерживает стандартное шифрование zip
  • Поддерживает формат Zip64
  • Поддерживает метод сжатия (без сжатия) и дефляции
  • Создавать или извлекать файлы из файлов Split Zip (Ex: z01, z02, ... zip)
  • Поддерживает имена файлов Unicode
  • Монитор хода

CreatePasswordProtectedZipExample.java

import java.io.File;
import java.util.ArrayList;

import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.util.Zip4jConstants;

public class CreatePasswordProtectedZipExample
{
    public static void main(String[] args)
    {
        try {
            //This is name and path of zip file to be created
            ZipFile zipFile = new ZipFile("C:/temp/test.zip");

            //Add files to be archived into zip file
            ArrayList<File> filesToAdd = new ArrayList<File>();
            filesToAdd.add(new File("C:/temp/test1.txt"));
            filesToAdd.add(new File("C:/temp/test2.txt"));

            //Initiate Zip Parameters which define various properties
            ZipParameters parameters = new ZipParameters();
            parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); // set compression method to deflate compression

            //DEFLATE_LEVEL_FASTEST     - Lowest compression level but higher speed of compression
            //DEFLATE_LEVEL_FAST        - Low compression level but higher speed of compression
            //DEFLATE_LEVEL_NORMAL  - Optimal balance between compression level/speed
            //DEFLATE_LEVEL_MAXIMUM     - High compression level with a compromise of speed
            //DEFLATE_LEVEL_ULTRA       - Highest compression level but low speed
            parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);

            //Set the encryption flag to true
            parameters.setEncryptFiles(true);

            //Set the encryption method to AES Zip Encryption
            parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES);

            //AES_STRENGTH_128 - For both encryption and decryption
            //AES_STRENGTH_192 - For decryption only
            //AES_STRENGTH_256 - For both encryption and decryption
            //Key strength 192 cannot be used for encryption. But if a zip file already has a
            //file encrypted with key strength of 192, then Zip4j can decrypt this file
            parameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);

            //Set password
            parameters.setPassword("howtodoinjava");

            //Now add files to the zip file
            zipFile.addFiles(filesToAdd, parameters);
        }
        catch (ZipException e)
        {
            e.printStackTrace();
        }
    }
}
28
задан Raúl Roa 12 March 2009 в 10:07
поделиться

3 ответа

В соответствии с Linux, deamons простые фоновые процессы. Никакие специальные методы управления (например, start(), stop()) не используются в качестве в Windows. Создайте свой сервис как простое (консоль) приложение и выполните его в фоновом режиме. Используйте инструмент как daemonize , чтобы запустить программу как демона Unix и не забыть определять mono как программу, которая будет активирована.

, Как отмечено другими, моносервис является хостом для выполнения сервисов, созданных с ServiceProcess блок. Сервисы, созданные для Windows, могут использовать этот метод для выполнения неизмененный в соответствии с Linux. Можно управлять сервисом путем отправки сигналов в процесс (см. страницу справочника).

33
ответ дан gimel 14 October 2019 в 11:34
поделиться

То, как я это делал в прошлом, - это скомпилировать приложение .Net как консольное приложение, а затем на сервере Linux создать скрипт запуска в каталоге initscripts.

Очевидно, что в Linux нет служб Windows, и демоны, которые запускаются из каталогов rc.d при запуске, являются его эквивалентами. Все, что делает большинство скриптов rc.d, - это запускает различные приложения в фоновом потоке, поэтому в этом нет ничего сложного. Единственная дополнительная работа заключается в том, что вам нужно написать сценарий оболочки Linux для запуска и, если вы хотите, остановить службу.

2
ответ дан sipwiz 14 October 2019 в 11:34
поделиться

Можно ли использовать моносервис обернуть его?

См. этот вопрос .

3
ответ дан Community 14 October 2019 в 11:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: