まず、私はMSMQを一度も使用していないので、私の答えは一般的にメイトとサーバーのコミュニケーション(私の見解と3ヶ月の経験のため)になります。
第2に、あなたのコミュニケーションクラスに別のものが必要だとは思わない。私の現在のプロジェクトの構造の
概要:
MATEロジックを要求 `のように。例:名前とパスワードを持つユーザーのログインボタン(RegisterScreen.mxml)
dispatchEvent(new UserRequest(UserRequest.AUTHENTICATION, name, password));
2を押す)インスタンスがEventHandler
でイベントを受信し、ServerCommunicationManager
クラスのいくつかのメソッドを呼び出します。例:
<EventHandlers type="{UserRequest.AUTHENTICATION}">
<MethodInvoker generator="ServerCommunicationManager"
method="signUser"
arguments="{[event.name, event.password]}" />
</EventHandlers>
3)モデルクラスメソッドが呼び出されます。例:私の例はスタブです!
public function signUser(user:String, password:String):void
{
var passwordEncoded:String = encodePassword(password);
var jsonMessage:Object = new Object();
jsonMessage.type = "checkUser";
jsonMessage.name = name;
jsonMessage.password = passwordEncoded;
sendGetRequest(serverIP, json, receiveResponseHandler);
}
public function receiveResponseHandler(response:Object)
{
var userDetails:UserDetails = decodeJsonToUser(response);
if(userDetails is NoUser)
{
FlexGlobals.topLevelApplication.dispatchEvent(new ServerResponseEvent(ServerResponseEvent.NO_USER));
}
else if(userDetails is NormalUser)
{
FlexGlobals.topLevelApplication.dispatchEvent(new ServerResponseEvent(ServerResponseEvent.NORMAL_USER, userDetails));
}
else if(userDetails is Administrator){...} else ...
}
4。)戻るEventMap
<EventHandlers type="{ServerResponseEvent.NORMAL_USER}">
<PropertySetter generator="UserModel"
targetId="signedUser"
source="{event.userDetails}"/>
</EventHandlers>
<EventHandlers type="{ServerResponseEvent.NoUser}">
<PropertySetter generator="UserModel"
targetId="signedUser"
source="null"/>
<PropertySetter generator="ViewModel"
targetId="state"
source="loginDenied"/>
</EventHandlers>
INとmodelMap
中:
<Injectors target="{RegisterScreen}">
<PropertyInjector targetKey="state"
source="{ViewModel}"
sourceKey="state" />
<PropertyInjector targetKey="userName"
source="{UserModel}"
sourceKey="signedUser"/>
</Injectors>
概要:このアプローチでは、あなたが通信クラスから成功しdecopulateビュークラスをすることができます。今のところプロジェクトでは安定して動作します。
編集:私は比較的メイトに新しいので、誰かが私のアプローチでエラーを見つけたら、彼はそれについてコメントしなければなりません。このロジックの一部が部分的にまたは完全に間違っていると、本当に重要です。
+1:答えをいただきありがとうございます。私はこれをやろうとします!ありがとう –