Должен ли я использовать cfinvoke или что-то еще для вызова cfc несколько раз? - PullRequest
0 голосов
/ 30 октября 2018

У меня есть CFC, который обрабатывает сообщения, сделанные пользователями. Некоторая обработка включает в себя обработку изображений и текста, о которых я прошу другой cfc с именем imagehandler.cfc и (еще предстоит сделать) texthandler.cfc, чтобы позаботиться.

В моем post.cfc я выполняю следующий вызов, когда предоставляется изображение обложки, которое передается с использованием AJAX:

<cfinvoke component="pathtofolder.imagehandler" method="CoverImage" argumentcollection="#VARIABLES#">
<cfinvokeargument name="Argument1" value="#SomeValue#" />
<cfinvokeargument name="Argument2" value="#SomeValue#" />
<cfinvokeargument name="Argument3" value="#SomeValue#" />
</cfinvoke>

Тогда, если пользователь разместит какие-либо встроенные изображения, мне нужно будет вызвать это при отправке второй формы, снова используя AJAX:

<cfinvoke component="pathtofolder.imagehandler" method="InlineImage" argumentcollection="#VARIABLES#">
<cfinvokeargument name="Argument1" value="#SomeValue#" />
<cfinvokeargument name="Argument2" value="#SomeValue#" />
<cfinvokeargument name="Argument3" value="#SomeValue#" />
</cfinvoke>

Я бы также назвал это, если бы текст был представлен:

<cfinvoke component="pathtofolder.texthandler" method="PostText" argumentcollection="#VARIABLES#">
<cfinvokeargument name="Argument1" value="#SomeValue#" />
<cfinvokeargument name="Argument2" value="#SomeValue#" />
<cfinvokeargument name="Argument3" value="#SomeValue#" />
</cfinvoke>

Все вышеперечисленное происходит в одном сообщении, но в течение дня можно отправлять сотни или тысячи сообщений.

Безопасно ли продолжать использовать cfinvoke таким образом? Я бы поместил CFC в область APPLICATION, но эта область уже полна экземпляров других CFC, которые часто используются. Я не могу поместить его в область SESSION, и если я добавлю его в область REQUEST, он все равно умрет после каждой частичной отправки сообщения (сначала изображение обложки, затем встроенные изображения, затем текст и т. Д.).

Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 30 октября 2018

Это все выглядит слишком много печатать. Перейти к <cfscript> вместо

 <cfscript>
 // Do this once
 obj = new pathtofolder.imagehandler();

 ...

 // Do this lots of times
 invoke(obj, "CoverImage", {
    Argument1 : somevalue,
    Argument2 : somevalue,
    Argument3 : somevalue,
    }); 
 </cfscript>

Более подробную информацию о вызове в <cfscript> можно найти по адресу: https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-in-k/invoke.html

...