서비스 계약(이중 계약의 서버와 클라이언트 실현 사례)
코드
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에 따라 라이센스가 부여됩니다.