ASP.NET MVC 4에서 이벤트 메시지 묶음을 수신 대기하도록 게시 작업을 만들어야합니다. 많은 이벤트가 있으므로 이벤트 당 작업을 만들 수 없습니다. 따라서 게시 된 모델은 이벤트를 수화하기 위해 사용자 정의 모델 바인더를 사용하므로 기본 클래스로 작업을 만드는 것이 가장 좋습니다. 상속 기반 사용자 지정 모델 바인딩
이벤트의 일부
는 다음과 같습니다 :public class QueryID : Identity<Guid>
{
public QueryID(Guid id)
{
Identifier = id;
}
}
public class QueryEvent : IEvent<QueryID>
{
public QueryEvent(QueryID id)
{
Identity = id;
}
#region Implementation of IEvent<out QueryID>
public QueryID Identity { get; private set; }
#endregion
}
public class QueryCreated : QueryEvent
{
public string ConnectionID { get; private set; }
public QueryCreated(QueryID id, string connectionID)
: base(id)
{
ConnectionID = connectionID;
}
}
public class ColumnAdded : QueryEvent
{
public string Column { get; private set; }
public ColumnAdded(QueryID id, string column)
: base(id)
{
Column = column;
}
}
과 같이 보일 것입니다 이러한 메시지를 수신 할 수있는 조치 방법 :
[HttpPost]
public ActionResult Index(IEvent<IIdentity> e)
{
// whatever
return new EmptyResult();
}
기본 신원 클래스는 IEvent<IIdentity>
인터페이스를 구현합니다.
모델 바인더는 어떻게 되나요?
고마워요
안녕하세요 Suhas, 맞습니다. 매우 복잡한 시나리오입니다. 당신이 제안한 비슷한 해결 방법에 대해서 생각했지만 클라이언트가 서버 측의 구현 세부 사항을 "알지"못하게합니다. JSON에서 알려진 명령을 보내면이 사용자 정의 모델 바인더는 마술을 작동시킵니다. –
클라이언트가 보낼 명령을 알고 있다면 (json이라고하더라도) 본질적으로 필요한 정보가 있습니다. 다른 방법이 없다고 생각합니다. – Suhas
클라이언트가이 작업에 대한 JSON 직렬화 버전 하나를 보내면이 사용자 정의 모델 바인더는 해당 JSON을 명령 개체로 deserialize 할 수 있어야합니다. 모델 바인더는 속성을 시작하고 속성을 매핑 할 유형을 어떻게 알 수 있습니까? 예를 들어 CreateQuery 명령을 보내고 있습니다. JSON은 {Idendity : {Identifier : "some id"}, ConnectionID : "some connection"}처럼 보입니다.이 JSON에는 형식 정보가 없습니다. 동적 인 객체를 사용한다고해도 그것은 중요하지 않습니다. 유형을 알지 못합니다. 계속 .... –