서비스 계약(이중 계약의 서버와 클라이언트 실현 사례)
코드
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel; namespace Contract { [ServiceContract(CallbackContract=typeof(IClientCallback))] public interface IServerStock { [OperationContract(IsOneWay = true)] void RegisterForUpdates(string ticker); } public interface IClientCallback { [OperationContract(IsOneWay = true)] void PriceUpdate(string ticker, double price); } public class ServerStock : IServerStock { //This is NOT a good notification algorithm as it's creating //one thread per client. It should be inverted so it's creating //one thread per ticker instead. public void RegisterForUpdates(string ticker) { Update bgWorker = new Update(); bgWorker.callback = OperationContext.Current.GetCallbackChannel
구성 파일:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="MEXServiceTypeBehavior" name="WCFTest.ServerStock">
        <endpoint address="" binding="wsDualHttpBinding" contract="WCFTest.IServerStock" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://DL00549-990:8000" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MEXServiceTypeBehavior">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>  2. 클라이언트 정의
  
  
  
  
   
   
   
   namespace
   
   
   
    Client { 
   
   
   
   public
   
   
   
    
   
   
   
   class
   
   
   
    CallbackHandler : IServerStockCallback { 
   
   
   
   static
   
   
   
    InstanceContext site 
   
   
   
   =
   
   
   
    
   
   
   
   new
   
   
   
    InstanceContext(
   
   
   
   new
   
   
   
    CallbackHandler()); 
   
   
   
   static
   
   
   
    ServerStockClient proxy 
   
   
   
   =
   
   
   
    
   
   
   
   new
   
   
   
    ServerStockClient(site); 
   
   
   
   public
   
   
   
    
   
   
   
   void
   
   
   
    PriceUpdate(
   
   
   
   string
   
   
   
    ticker, 
   
   
   
   double
   
   
   
    price) { Console.WriteLine(
   
   
   
   "
   
   
   
   Received alert at : {0}. {1}:{2}
   
   
   
   "
   
   
   
   , 
  
  
  
  
  
  
  
  
   
   
   
    System.DateTime.Now, ticker, price); } 
   
   
   
   class
   
   
   
    Program { 
   
   
   
   static
   
   
   
    
   
   
   
   void
   
   
   
    Main(
   
   
   
   string
   
   
   
   [] args) { proxy.RegisterForUpdates(
   
   
   
   "
   
   
   
   MSFT
   
   
   
   "
   
   
   
   ); Console.WriteLine(
   
   
   
   "
   
   
   
   Press Enter or any key to exit
   
   
   
   "
   
   
   
   ); Console.ReadLine(); } } } }
  
  
  
  이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Exception in thread main java.lang. NoClassDefFoundError 오류 해결 방법즉,/home/hadoop/jarfile) 시스템은 Hello World 패키지 아래의class라는 클래스 파일을 실행하고 있다고 오인하여 시스템의 CLASSPATH 아래 (일반적으로 현재 디렉터리를 포함) Hell...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.