(1)Cairngorm2.2の変更点

ちょっと遅めの報告ですけど、Caringorm2.2が出てますw。

http://weblogs.macromedia.com/akamijo/archives/2007/04/cairngorm_22.cfm

一番の目玉は、FDSへの依存の解消ということで、FDSを使用しない場合は普通のCairngormFDSを使用する場合はCairngorm Enterprise と、2つのパッケージを使い分けるようになった事でしょうか。


ソース見ないと気持ち悪いので、実際何が変わったのかちょっと調べました。


順番に行きます。


■CairngormMessageCodes.as
メッセージコードが6個だったのが15個に増えている


■IModelLocator.as
新規。マーカークラス。


■ModelLocator.as
IModelLocatorの追加に伴って、クラス化。(implements IModelLocator)


※つまり、ModelLocatorのインターフェイス/クラス名の命名方式を変更したってことです。


■CairngormEvent.as
dispatch()メソッドの追加。
CairngormEventDispatcher.getInstance().dispatchEvent( this );と書かれてます。

※helperクラスにて、わざわざCairngormEventDispatcherクラスからdispatchしなくてもEventクラスからディスパッチできます。


■FrontController.as
addCommand()メソッドのパラメータにuseWeakReferenceが増えた。
* @param useWeakReference A Boolean indicating whether the command
* reference should be held internally as a weak reference, meaning it will
* be garbage collected from the Dictionary of commands when all other hard
* references to the command reference have been garbage collected.
removeCommand()メソッドの新設。イベントリスナーの削除ができる。


※これは進歩だ!
※今まではadd()しっ放しだったイベントリスナーが、ちゃんとremoveできるようになってます。


■IServiceLocator.asの変更

getDataService()メソッドが無くなった
setRemoteCredentials()メソッドが増えた


インターフェイスなので説明省略


■Responder.asの変更
メソッドに非推奨タグが。[Deprecated(replacement="mx.rpc.IResponder.fault")]

※わたしゃ既にIResponderを使ってますw


■ServiceLocator.asの変更

保持するプライベート変数が変わった

    // old
    private var services : Array;
    private var httpServices : Array;
    private var messageAgents : Array;
    private var dataServices : Array;
    // new
    private var _consumers : Consumers;
    private var _httpServices : HTTPServices;
    private var _producers : Producers;
    private var _remoteObjects : RemoteObjects;
    private var _webServices : WebServices;

但し、シングルトン用自クラスインスタンスは省略

getService()メソッドに非推奨タグ
getInvokerService()メソッドに非推奨タグ
getConsumer()メソッド内で、getServiceForId⇒consumers.getService()
getHTTPService()メソッド内で、getServiceForId⇒httpServices.getService()
getProducer()メソッド内で、getServiceForId⇒producers.getService()
getRemoteObject()メソッド内で、getServiceForId⇒remoteObjects.getService()
getWebService()メソッド内で、getServiceForId⇒webServices.getService()
setCredentials()メソッド内で、各インターナルクラスに処理をいこう
setRemoteCredentials()メソッドの新設。同様に各インターナルクラスの同メソッドを実行
あと、各インターナルクラスインスタンス用のprivate get メソッドが追加。


その他新設されたクラス達

com.adobe.cairngorm.business.AbstractServices.as
com.adobe.cairngorm.business.Consumers.as
com.adobe.cairngorm.business.HTTPServices.as
com.adobe.cairngorm.business.Producers.as
com.adobe.cairngorm.business.RemoteObjects.as
com.adobe.cairngorm.business.WebServices.as
com.adobe.cairngorm.business.IServices.as


※つまるところ今までServiceLocatorが担当していた役割を、各新設クラス達に分離させてますね



次回は、Cairngorm Enterpriseの方を見てみます。