Axapta當中的RunOn屬性

2021-04-02 11:19:34 字數 1335 閱讀 3001

自從加入到mbscn.net的討論之後,覺得自己也交了很多很好的朋友,也增長了自己對axapta的了解。畢竟自己所能遇到的情況是有限的,多和別人交流是肯定有利於自己各方面的成長的。

想起自己在挺長的一段時間內,也是不太明白,所以在這裡做乙個總結為好。

runon,顧名思義,就是指object在那一層上面執行,客戶端,還是伺服器端?當然,前提是要在三層結構下面。axapta當中與runon有關的,大概在以下這幾個地方:

相關的object,如form, report, class等,class當中的靜態方法,以及menuitem。

form和report是不能設定runon屬性的,form只能是執行在客戶端,而report則是由menuitem所決定的,因為它的runon屬性其實是被設為(always)called from的。當然,假如report不用menuitem指定啟用的話,如直接在aot當中用右鍵開啟(open),那就肯定是在客戶端生成了。

那麼剩下可以討論的就是class的runon屬性,和class當中的靜態方法了。

靜態方法,由它本身的modifier所決定。不寫的情況下,預設為client server(可顯式宣告,一般情況下不用),也就是等於called from,在**被呼叫就在**執行。

class本身的runon屬性是具有最高優先順序的,只有當設定為called from的時候,才會取決於menuitem中的runon屬性。還有一種情況就是,很多class的main方法也指定了modifier,這個時候main方法的modifier比menuitem更有優先權來決定class執行的位置。

也就是說class的runon屬性 優先於 main方法的modifier 優先於 menuitem的runon屬性。

那麼我們再來討論這個runon屬性的作用。

我們知道,在axapta三層結構體系當中,不同層之間的呼叫,無論是方法,還是資料的交換,都會造成執行效率的降低。所以我們必須要盡可能減少不同層之間的呼叫。譬如說,某個class具體的作用是進行資料運算,那麼這個時候我們把它放在client端執行是非常不合理的。因為這種情況下它需要和database進行大量的資料交換(中間需要通過aos),所以我們就需要強制性的把它指定執行在aos上,這樣也可以減少了網內部的頻寬消耗,更可以充分利用三層結構的優點,降低了客戶端機器的負載。

然後還是有乙個best practice原則,就是盡量把runon設定在menuitem,而不要指定在class本身的屬性上面(盡量預設為called from)。這樣做的好處在於,可以靈活運用,因為某乙個class可以在不同的情況下,被指定執行在不同層上。開發人員只需要更改和使用不同的menuitem,就可以達到這種效果。這也是axapta裡面所謂的api原則,盡量都通過menuitem去啟用和指定object的執行狀態。

Axapta當中的RunOn屬性

runon,顧名思義,就是指object在那一層上面執行,客戶端,還是伺服器端?當然,前提是要在三層結構下面。axapta當中與runon有關的,大概在以下這幾個地方 相關的object,如form,report,class等,class當中的靜態方法,以及menuitem。form和report是...

Java當中的陣列

1.陣列的型別 class test 注意 arr的中括號可以寫在後面,也可以寫在前面 arr 3 10 for int i 0 i 5 i 這樣比較麻煩,如果長度變了,for迴圈中的數字還要改變,可以變一種寫法 class test 注意 arr的中括號可以寫在後面,也可以寫在前面 system....

JS當中的拷貝!!!

最近在複習前端的筆試和面試題目,看到了深拷貝和淺拷貝的問題,在這裡自己查點資料寫下這一篇部落格用來複習!var name jozo var city guangzhou var age 22 它們在記憶體中是這樣的 引用型別的儲存需要記憶體的棧區和堆區 堆區是指記憶體裡的堆記憶體 共同完成,棧區記憶...