Spring.Net에서 WCF 사용하기
Spring Context에 object로 등록된 서비스에 대해 .Net Remoting, Web Service, WCF 채널로 export 시켜주는 기능을 제공한다. Spring.Net에서 제공하는 Exporter를 사용하면 Client에서 해당 Interface 타입으로 Proxy 객체를 만들어주므로 별도의 Proxy를 만들 필요가 없다.
Server Setting
Spring Object를 WCF Host하는 설정
<?xml version="1.0" encoding="utf-8" ?> <objects xmlns="http://www.springframework.net"> <object id="RemoteCallServiceHost" type="Spring.ServiceModel.Activation.ServiceHostFactoryObject, Spring.Services"> <property name="TargetName" value="RemoteCallService" /> </object> <object id="RemoteSaleMngServiceHost" type="Spring.ServiceModel.Activation.ServiceHostFactoryObject, Spring.Services" > <property name="TargetName" value="RemoteSaleMngService"/> </object> </objects>
채널 등록(web.config / app.config)
<system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="debug"> <serviceDebug includeExceptionDetailInFaults="true" /> </behavior> </serviceBehaviors> </behaviors> <bindings> <netMsmqBinding> <binding name="MsmqBindingConfig" maxBufferPoolSize="2097152" maxReceivedMessageSize="2097152"> <security mode="None"/> </binding> </netMsmqBinding> <netTcpBinding> <binding name="TcpBindingConfig" maxBufferPoolSize="2097152" maxBufferSize="2097152" maxReceivedMessageSize="2097152" openTimeout="00:10:00" closeTimeout="00:10:00" sendTimeout="00:10:00" receiveTimeout="00:10:00"> <security mode="None"/> </binding> </netTcpBinding> </bindings> <services> <service name="RemoteCallService" behaviorConfiguration="debug"> <host> <baseAddresses> <add baseAddress="net.tcp://localhost:8007/Waven"/> </baseAddresses> </host> <endpoint address="RemoteCallService" binding="netTcpBinding" bindingConfiguration="TcpBindingConfig" contract="Waven.SystemMng.Service.IRemoteCallService"/> </service> <service name="RemoteSaleMngService" behaviorConfiguration="debug"> <host> <baseAddresses> <add baseAddress="net.tcp://localhost:8007/Waven"/> </baseAddresses> </host> <endpoint address="RemoteSaleMngService" binding="netTcpBinding" bindingConfiguration="TcpBindingConfig" contract="Waven.SaleMng.Service.IRemoteSaleMngService"/> </service> </services> </system.serviceModel>
Client Setting
EndPoint 설정
<system.serviceModel> <bindings> <netMsmqBinding> <binding name="MsmqBindingConfig"> <security mode="None"/> </binding> </netMsmqBinding> <netTcpBinding> <binding name="TcpBindingConfig" maxBufferPoolSize="2097152" maxBufferSize="2097152" maxReceivedMessageSize="2097152" openTimeout="00:10:00" closeTimeout="00:10:00" sendTimeout="00:10:00" receiveTimeout="00:10:00"> <security mode="None"/> </binding> </netTcpBinding> </bindings> <client> <endpoint name="RemoteSaleMngServiceEndPoint" contract="Waven.SaleMng.Service.IRemoteSaleMngService" binding="netTcpBinding" bindingConfiguration="TcpBindingConfig" address="net.tcp://127.0.0.1:8007/Waven/RemoteSaleMngService"/> <endpoint name="RemoteCallServiceEndpoint" contract="Waven.SystemMng.Service.IRemoteCallService" binding="netTcpBinding" bindingConfiguration="TcpBindingConfig" address="net.tcp://127.0.0.1:8007/Waven/RemoteCallService"/> </client> </system.serviceModel>
EndPoint를 Spring Object로 설정
<objects xmlns="http://www.springframework.net" xmlns:wcf="http://www.springframework.net/wcf" default-lazy-init="true"> <wcf:channelFactory id="RemoteCallService" channelType="Waven.SystemMng.Service.IRemoteCallService, Waven.Core" endpointConfigurationName="RemoteCallServiceEndpoint" /> <wcf:channelFactory id="RemoteSaleMngService" channelType="Waven.SaleMng.Service.IRemoteSaleMngService, Waven.Core" endpointConfigurationName="RemoteSaleMngServiceEndPoint"/> </objects>




















