Каковы за и против веб-сервисов и RMI в среде только для Java?

Расположение упаковки и байт, как описано в C FAQ здесь :

Это для выравнивания. Многие процессоры не могут получить доступ к 2- и 4-байтным количествам (например, ints и long ints), если они переполнены каждым способом.

Предположим, что у вас есть эта структура:

struct {
    char a[3];
    short int b;
    long int c;
    char d[3];
};

Теперь вы можете подумать, что это возможно, чтобы упаковать эту структуру в память следующим образом:

+-------+-------+-------+-------+
|           a           |   b   |
+-------+-------+-------+-------+
|   b   |           c           |
+-------+-------+-------+-------+
|   c   |           d           |
+-------+-------+-------+-------+

Но на процессоре намного проще, если компилятор упорядочивает его как это:

+-------+-------+-------+
|           a           |
+-------+-------+-------+
|       b       |
+-------+-------+-------+-------+
|               c               |
+-------+-------+-------+-------+
|           d           |
+-------+-------+-------+

В упакованной версии обратите внимание на то, что вам и мне, как минимум, немного сложно понять, как обтекают поля b и c? В двух словах, это тоже сложно для процессора. Поэтому большинство компиляторов будут заполнять структуру (как будто с дополнительными невидимыми полями) следующим образом:

+-------+-------+-------+-------+
|           a           | pad1  |
+-------+-------+-------+-------+
|       b       |     pad2      |
+-------+-------+-------+-------+
|               c               |
+-------+-------+-------+-------+
|           d           | pad3  |
+-------+-------+-------+-------+
blockquote>

11
задан cretzel 23 September 2008 в 13:31
поделиться

5 ответов

Я попытался бы думать об этом этот путь:

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

Вы просто хотите распространиться, части приложения (возражайте против исключительного) по нескольким серверам? Затем пойдите для RMI, и Вы не должны будете оставлять вселенную Java для получения всего сотрудничающего сильно связанный.

9
ответ дан 3 December 2019 в 06:23
поделиться

мой выбор:

стандартная сериализация Java - профессионалы: по моему скромному мнению, предлагает большую часть производительности, простой реализовать (я использую Spring для представления локального интерфейса как удаленного); недостатки: сериализация не работает между различными jvm версиями

двоичная сериализация (например, гессиан от причала) - профессионалы: то же представление в качестве с сериализацией Java и работами между различными jvm версиями

WS: только если существует потребность в совместимости между различными платформами Java + .NET, иначе это просто также haveweight.

1
ответ дан 3 December 2019 в 06:23
поделиться

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

WebServices неэффективны, да, но только через аппаратные средства в нем. С другой стороны, используйте плоскость, легкий XML-HTTP, а не полный жир SOAP/WSDL.

1
ответ дан 3 December 2019 в 06:23
поделиться

Я выбрал бы WS.

  • Маловероятно, что WS/RMI будет Вашим узким местом.
  • Почему закрыть дверь для других возможных технологий в будущем?
  • RMI мог бы иметь проблему, если версия классов на клиенте/сервере выходит из синхронизации.

И... Я, скорее всего, выбрал бы сервисы REST.

6
ответ дан 3 December 2019 в 06:23
поделиться

Если Вы не Собираетесь Потребность Это (interop с не-Java), и Вы, вероятно, не, RMI будет лучше; меньше кода, меньше конфигурации, меньше пропускной способности наверху.

Опция, если Вы боитесь, что Вы Собираетесь Потребность, Она должна использовать EJB3; это использует RMI, очень легко установить и развернуться, но также и позволяет Вам превращать свои вызовы в веб-сервисы легко при необходимости в них.

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

2
ответ дан 3 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

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