EJB - когда использовать удаленный и / или локальный интерфейсы?

Я новичок в Java EE, и я пытаюсь понять концепцию локальных интерфейсов и Удаленные интерфейсы. Мне сказали, что одним из больших преимуществ Java EE является простота масштабирования (что, как я считаю, означает, что вы можете развертывать различные компоненты на разных серверах). Здесь на помощь приходят удаленный и локальный интерфейсы? вы должны использовать удаленные интерфейсы, если вы ожидаете, что ваше приложение будет иметь разные компоненты на разных серверах? И использовать локальные интерфейсы, если ваше приложение будет размещаться только на одном сервере?

Если мои предположения выше верны, как бы вы поступили? выбор между использованием локальных или удаленных интерфейсов для нового приложения, если вы не уверены в том, какой будет объем трафика? Начните с использования локальных интерфейсов и постепенно переходите на удаленные интерфейсы, где это применимо?

Спасибо за любые разъяснения и предложения .

-121 --- 5856 79- Предполагается, что ConditionalAttribute удаляет целые строки или только вызовы методов? Согласно документации по классу ConditionalAttribute: Применение ConditionalAttribute к методу указывает компиляторам, что вызов метода не должен компилироваться в ...

Согласно документации по классу ConditionalAttribute :

Применение ConditionalAttribute к методу указывает компиляторам, что вызов метода не должен быть {{ 1}} скомпилирован на промежуточный язык Microsoft (MSIL), если не определен условный символ компиляции , связанный с ConditionalAttribute.

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

class InstanceType
{
    public InstanceType DoSideEffects()
    {
        Console.WriteLine("Side effects!");
        return this;
    }

    public InstanceType DoMoreSideEffects()
    {
        Console.WriteLine("More side effects!");
        return this;
    }

    [Conditional("DEBUG")]
    public void ConditionalMethod()
    {
        Console.WriteLine("Conditional method run.");
    }
}

class Program
{
    static void Main()
    {
        var x = new InstanceType();

        // The compiler appears to strip out this entire line
        // in a Release build.
        x.DoSideEffects().DoMoreSideEffects().ConditionalMethod();

        var y = new InstanceType();

        // When each method call appears on its own line,
        // the first two methods are included as expected.
        y.DoSideEffects();
        y.DoMoreSideEffects();
        y.ConditionalMethod();
    }
}

Сравните выходные данные сборок отладки и выпуска:

DEBUG                    RELEASE
Side effects!            Side effects!
More side effects!       More side effects!
Conditional method run.
Side effects!
More side effects!
Conditional method run.

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

7
задан Dan Tao 28 September 2010 в 01:46
поделиться