WCF 기술 내부 6장(3)

3441 단어 WCF
Close 및 Abort 메서드
Communication Object 유형은 객체를 제거할 수 있는 방법을 보여줍니다.일반적으로 Close와 Beginclose 방법은 우아한 방식으로 Communication Object 대상을 닫을 수 있지만, Abort 방법은 즉시 대상을 닫는다.
Close 메서드에는 비동기식 구현이 포함되어 있지만 Abort 메서드는 없습니다.
Fault 방법
보호 방법인Fault도 Communication Object 대상을 닫는 방식이지만, ICommunication Object 인터페이스에 속하지 않으며, Communication Object 대상의 하위 형식에만 적용됩니다.
Fault 메서드를 호출하면 State 속성이 Communication State로 변환됩니다.Faulted 및 OnFaulted 가상 메소드를 호출합니다.대부분의 경우 OnFaulted 메서드는 Abort 메서드를 사용합니다.
6.3 채널 형태 소개
메시지 교환 모드와 채널 형태의 관계
 
MEP
Sender
Receiver
데이터 보고서
IOutputChannel
IInputChannel
요청/응답
IRequestChannel
IReplyChannel
듀플렉스
IDuplexChannel
IDuplexChannel
P2P
IDuplexChannel
IDuplexChannel
 
채널은 System을 구현해야 합니다.ServiceModel.Channels.세션을 지원하기 위한 ISessionChannel 인터페이스ISessionChannel의 일반 매개 변수는 시스템이어야 합니다.ServiceModel.Channels.ISession 커넥터.
WCF에서 ISessionChannel 인터페이스를 실현하는 채널 유형은 세션 채널이 됩니다.
메시지 교환 모드와 세션 채널 형태의 관계
 
MEP
Sender
Receiver
데이터 보고서
IOutputSessionChannel
IInputSessionChannel
요청/응답
IRequestSessionChannel
IReplySessionChannel
듀플렉스
IDuplexSessionChannel
IDuplexSessionChannel
P2P
IDuplexSessionChannel
IDuplexSessionChannel
 
 
6.4 채널 인터페이스 및 기본 유형
IChannel 커넥터
 
    public interface IChannel : ICommunicationObject

    {

        T GetProperty<T>() where T : class;

    }

GetProperty 방법은 Communication Object 창고에서 특정 기능을 조회하는 경로를 제공합니다.
 
 
            MessageVersion messageVersion = channel.GetProperty<MessageVersion>();

            if (messageVersion != null)

            {

            }

데이터 보고 채널 IInputChannel 및 IOutputChannel
 
 
    public interface IOutputChannel : IChannel, ICommunicationObject

    {

        EndpointAddress RemoteAddress { get; }

        Uri Via { get; }



        IAsyncResult BeginSend(Message message, AsyncCallback callback, object state);

        IAsyncResult BeginSend(Message message, TimeSpan timeout, AsyncCallback callback, object state);

        void EndSend(IAsyncResult result);

        void Send(Message message);

        void Send(Message message, TimeSpan timeout);

    }

수신자가 데이터 보고 교환 모드에서의 역할에 대해 IInoutChannel은 수신 구성원만 정의하고 발송 구성원은 정의하지 않았다.
    public interface IInputChannel : IChannel, ICommunicationObject

    {

        EndpointAddress LocalAddress { get; }



        IAsyncResult BeginReceive(AsyncCallback callback, object state);

        IAsyncResult BeginReceive(TimeSpan timeout, AsyncCallback callback, object state);

        IAsyncResult BeginTryReceive(TimeSpan timeout, AsyncCallback callback, object state);

        IAsyncResult BeginWaitForMessage(TimeSpan timeout, AsyncCallback callback, object state);

        Message EndReceive(IAsyncResult result);

        bool EndTryReceive(IAsyncResult result, out Message message);

        bool EndWaitForMessage(IAsyncResult result);

        Message Receive();

        Message Receive(TimeSpan timeout);

        bool TryReceive(TimeSpan timeout, out Message message);

        bool WaitForMessage(TimeSpan timeout);

    }

수신 프로그램은 소극적으로 소식이 오기를 기다릴 것이다.
 

좋은 웹페이지 즐겨찾기