WCF 설정 소감

6566 단어 WCF 설정
장 김 남 선생님 의 박문 에 따 르 면 WCF 의 종결 점 은 세 가지 요소 로 구성 되 는데 그것 이 바로 주소(Address),바 인 딩(Binding)과 계약(Contract)이 고 간 기 는 Endpoint=ABC 로 쓸 수 있다. 주소:주 소 는 서비스의 위 치 를 결정 하고 서비스 주소 지정 문 제 를 해결 합 니 다. 귀속:귀속 은 통신 의 모든 세부 사항 을 실현 했다.이 는 네트워크 전송,메시지 인 코딩,그리고 특정한 기능 을 실현 하기 위해 메시지 에 대한 상응하는 처 리 를 포함한다.바 인 딩 의 유형 은 Basic HttpBinding,WsHttpBinding,NetTcpBinding 등 을 포함한다. 계약:계약 은 서비스 조작 에 대한 추상 이자 정보 교환 모델 과 정보 구조 에 대한 정의 이다. 이상 의 이 내용 들 은 장 선생님 의 박문 에서 발췌 한 것 이다.이해 하 는 것 은 WCF 설정 에 도움 이 된다.그럼 한 걸음 한 걸음 WCF 를 설정 하 겠 습 니 다.먼저 서버 입 니 다.WCF 의 핵심 은 종결 점 입 니 다.그러면 종결 점 을 먼저 작성 하 세 요

<services>
      <service name="BLL.Logic" behaviorConfiguration="te">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:9091/logicService"/>
          </baseAddresses>
        </host>
        <endpoint address="" binding="ws2007HttpBinding" contract="BLL.ILogic"  bindingConfiguration="transportWS2007HttpBinding" />
      </service>
    </services>
 몇 개의 속성 address(주소)binding(귀속),Contract(계약)에서 이 몇 개의 속성 은 바로 위 에서 말 한"ABC"입 니 다.  binding 에 Basic HttpBinding,WsHttpBinding,NetTcpBinding 이 들 어 있 는 값 을 주의 하 십시오.어떤 binding 을 사용 하 는 지 정확하게 사용 하려 면 bindingConfiguration 에 설정 해 야 합 니 다.값 은의 name 값 을 사용 합 니 다.contract 프로젝트 에서 contract 의 계약 인터페이스의 완전 한정 명 입 니 다.여기 서 binding 에 대한 설정 은 다음 에 소개 합 니 다.address 가 값 을 채 우지 않 았 습 니 다.여 기 는에서 주 소 를 정 했 습 니 다.      를 소개 하고밖의 것 을 보 세 요.에 포함 되 어 있 습 니 다.이곳 의는 하나의 집합 입 니 다.그 안에 여러 개의 서 비 스 를 포함 할 수 있 습 니 다.모든 서 비 스 는 특정한 이름(name)이 있 고 name 은 프로젝트 에서 계약(Contract)을 실현 하 는 서비스(Service)류 의 완전 한정 명 입 니 다.여기 서 servicebehavior 를 설정 하 였 습 니 다.구체 적 인 내용 은 te 라 는에 있 습 니 다.위 에 binding 과 behavior 와 관련 된 설정 이 있 는 이상 아래 는 각각 두 가 지 를 설정 합 니 다

<bindings>
      <ws2007HttpBinding>
        <binding name="transportWS2007HttpBinding" maxReceivedMessageSize="2147483647"  maxBufferPoolSize="2147483647">
          <readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647"/>
          <security mode="Message">
            <transport clientCredentialType="None"/>
          </security>
        </binding>
      </ws2007HttpBinding>

        <basicHttpBinding>
          <binding name="newBinding" maxBufferPoolSize="21474835647" maxReceivedMessageSize="2147483647" messageEncoding="Text">
            <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
          </binding>
        </basicHttpBinding>
</bindings>

 bings 라 는 부분 은 services 와 마찬가지 로 집합 이기 도 합 니 다.그 안에 여러 가지 유형의 binding 이 포함 되 어 있 습 니 다.예 를 들 어에 있 는이 야 말로 정확 한 특정한 binding 입 니 다.를 사용 할 때 bindingConfiguration 의 이름 은 대외 적 으로 써 야 합 니 다.binding 의 유형 도 틀 리 면 안 됩 니 다.안의 하위 노드 와 속성 은 더 이상 일일이 소개 하지 않 습 니 다.WCF 를 통 해 비교적 큰 데 이 터 를 전송 하려 면 binding 의 속성 과를 설정 해 야 합 니 다

  <behaviors>
      <serviceBehaviors>
        <behavior name="te">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
마지막 으로 behaviors 입 니 다.마찬가지 로 behaviors 도 하나의 집합 으로 그 안에 두 가지 유형 이 있 는데 하 나 는 serviceBehaviors 로 service 를 설정 하 는 데 사용 된다.다른 하 나 는 endpoint Behaviors 로 endpoint 를 설정 하 는 데 사 용 됩 니 다.이 두 가지 유형 은 모두 하나의 집합 입 니 다.하위 노드는 그들의 하위 항목 입 니 다.name 으로 각 behavior 를 구분 합 니 다.그 안에 어떤 속성 과 하위 항목 이 있 는 지 는 더 이상 말 하지 않 습 니 다.사용 할 때 해당 하 는 service 나 endpoint 의 behavior Configuration 속성 에 behavior 의 name 값 을 채 우 면 됩 니 다.서버 설정 은 여기까지 입 니 다.다음은 클 라 이언 트 까지 입 니 다

<client>
      <endpoint address="http://localhost:9091/logicService" binding="ws2007HttpBinding"
          bindingConfiguration="WS2007HttpBinding_ILogic" contract="Proxy.ILogic"
          name="WS2007HttpBinding_ILogic">
      </endpoint>
    </client>
우선 종결 점 입 니 다.클 라 이언 트 의 종결 점 은 client 에 놓 여 있 고 그 안에'ABC'도 있 습 니 다.여기 address 는 반드시 서버 에서 설정 한 것 과 같 아야 합 니 다.그렇지 않 으 면 해당 하 는 서 비 스 를 찾 을 수 없습니다.binding 의 유형 도 서버 와 마찬가지 로 contract 는 svcutil 또는 다른 도구 로 생 성 된 코드 에 있 는 클래스 의 완전 한정 명 입 니 다

<ws2007HttpBinding>
        <binding name="WS2007HttpBinding_ILogic" closeTimeout="00:01:00"
            openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
            bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
            maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647"
            messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
            allowCookies="false">
          <readerQuotas maxDepth="32" maxStringContentLength="1024" maxArrayLength="2147483647"
              maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <reliableSession ordered="true" inactivityTimeout="00:10:00"
              enabled="false" />
        </binding>
      </ws2007HttpBinding>
또 하 나 는 이 binding 입 니 다.클 라 이언 트 의 binding 은 서버 의 것 보다 더 많은 것 을 설정 합 니 다.closeTimeout,openTimeout,receiveTimeout 은 대체적으로 서버 와 같 습 니 다.또한 비교적 큰 데 이 터 를 전송 하려 면 저 처럼 배치 할 수 있 습 니 다.사실은 이 설정 은 몇 M 의 그림 을 전송 하 는 데 적용 되 었 습 니 다.입문 자 이기 때문에 많은 것들 의 이해 가 아직 철저 하지 못 합 니 다.이상 틀린 말 이 있 으 면 비판 하고 지적 해 주 십시오.감사합니다!

좋은 웹페이지 즐겨찾기