28.09.2009, 16:56 | #1 |
Участник
|
Как же все-таки работает свойство CalledFrom?
Никак не могу понять принцип работы этого свойства.
Логично было бы предположить, что класс будет отрабатывать на клиенте или сервере в зависимости от того, где был создан его инстанс. Но вот не совсем так. Создаю инстанс класса с CalledFrom в серверном классе, а он все-равно выполняется на клиенте. В общем, по моим наблюдениям CalledFrom классы практически всегда отрабатывают на клиенте. Практически. Но не всегда. По какому принципу же система определяет, когда CalledFrom классы будут работать на сервере - для меня загадка. Буду рад, если кто-то прояснит ситуацию.
__________________
Axapta has seduced me deadly! |
|
28.09.2009, 17:05 | #2 |
Участник
|
Свойство calledFrom говорит о том, что экземпляр (инстанс) класса может создаваться на сервере или на клиенте в зависимости от условий его вызова. То есть, если некий метод, выполняемый на сервере, создает этот класс, то он будет создан на сервере, если на клиенте, то соответственно на клиенте. Если класс CalledFrom вызывается через меню, то он будет на клиенте, так как само меню существует на клиенте.
|
|
28.09.2009, 17:06 | #3 |
Участник
|
Не дописал
Свойство calledFrom = client/server |
|
28.09.2009, 17:08 | #4 |
Участник
|
Смотрите выше, пожалуйста) Я уже писал о том, что не всегда это так. Создаю инстанс calledFrom класса из серверного класса, а он все-равно отрабатывает на клиенте.
__________________
Axapta has seduced me deadly! |
|
28.09.2009, 17:10 | #5 |
Участник
|
Почитайте здесь
|
|
28.09.2009, 17:30 | #6 |
Участник
|
_scorp_, хотелось бы уточнить. Если я хочу, чтобы система поняла, что CalledFrom - не свойство по умолчанию, а осознанно выбранное мною свойство и чтобы система правильно его обрабатывала, мне нужно добавлять этот комментарий?
__________________
Axapta has seduced me deadly! |
|
28.09.2009, 18:04 | #7 |
Участник
|
Давайте уточним. Экземпляр класса создается из объектного метода класса, уже созданного на сервере. Вы это знаете точно и отследтили это в дебагере - метод помечен иконкой сервера. При вызове new MyClass() класса, с указанием в свойствах RunOn=CalledFrom вы проваливаетесь в метод new() и он помечен иконкой клиента. Так?
|
|
28.09.2009, 18:05 | #8 |
Участник
|
Нет, комментарии влияют только на генерацию сообщений best practice. В Вашем случае, скорее всего, где-то происходит переопределение места выполнения. Например, в свойствах класса стоит CalledFrom = Client, а на его статическом методе прописано "server". В итоге метод будет выполняться на сервере.
|
|