
只能先猜,他無法跨 dll 找類別,畢竟每次呼叫 沒有必要的話 應該不會將 bin 下的所有 *.dll 都巡一遍。
所以,只要將 PackageA.ClassA 與 PackageB.ClassB 放在同一個 *.dll 中,執行就會正常了:

接著,進入主題,根據 codegen 出來的 AS3 程式碼:ClassLibraryFactory.getObj() 取得的 ClassLibrary,是一個不帶 method() 的 ValueObject:

雖然在 .NET 的 ClassLibrary 類別中,有 getMessage() 的 method:

然而在 AS3 ValueObject 中,只帶有 public member data,不會有任何 method;這個 VO 會被用來傳遞給 Flash 端,不會是將 Server 端、記憶體中的 ClassLibrary 物件參考,傳給 Flash,因此當然 Flash 也無法利用拿到的物件 作任何遠端呼叫。

另一個 ClassLibraryLib.ClassLibrary 透過 codegen 產出的 AS3 code,則是提供給 Flash 端進行 RPC call 的 proxy,所以裡面沒有 public member data,只有 public method:

基於這些基本關係,如何設計 Flex Remoting 的 service interface 就變得需要花點腦筋。
其他有些參考資源:
Mapping Server Side Classes to Flex via Flex AP
http://support.themidnightcoders.com/knowledgebase.php?act=art&article_id=87
ActionScript and .NET client-server class mappings
http://www.adobe.com/devnet/flex/articles/class_mappings.html
.NET Attributes in WebORB 2.1
http://www.themidnightcoders.com/blog/2006/05/net-attributes-in-weborb-21.html
如果要作 call by reference 的話,或是某種程度上來達到相似的意義的話,可能要再繼續研究一下 WebORB 如何將 .NET 的 Class 放在 Session 中。
0 意見:
張貼意見