Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
This topic contains functional and technical information for the Microsoft Windows Communication Foundation (WCF)-based event provider that provides a model for object-oriented interface definitions and configurable interprocess communication methods, without the need to change code. This provider is the default provider.
The Episerver event system is used for distributing events between websites in a multi-site and/or load-balanced scenario. The configuration consists of two parts: subscriber and publisher. An Episerver Server can be both subscriber and publisher.
The Subscriber works as a WCF Server, therefore configure it as WCF Service. To configure the Episerver Event System Subscriber make the following checks/adjustment to the Episerver CMS web.config file:
<system.serviceModel>
...
<services>
<service name="EPiServer.Events.Remote.EventReplication"
behaviorConfiguration="*">
<endpoint name="RemoteEventServiceEndPoint"
contract="EPiServer.Events.ServiceModel.IEventReplication"
binding="*" address="*" />
</service>
</services>
...
</system.serviceModel>
<system.serviceModel>
...
<client>
<endpoint name="*" address="*" binding="*" bindingConfiguration="*"
contract="EPiServer.Events.ServiceModel.IEventReplication" />
</client>
</system.serviceModel>
An example configuration using UDP multicast, make sure to use unique port numbers if you have multiple installations on the same network.
Note: UDP multicast is not supported in Azure Virtual Networks.
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<extensions>
<bindingElementExtensions>
<add name="udpTransportCustom" type="Microsoft.ServiceModel.Samples.UdpTransportElement, EPiServer.Events"/>
</bindingElementExtensions>
</extensions>
<services>
<service name="EPiServer.Events.Remote.EventReplication" >
<endpoint name="RemoteEventServiceEndPoint"
contract="EPiServer.Events.ServiceModel.IEventReplication"
binding="customBinding"
bindingConfiguration="RemoteEventsBinding"
address="soap.udp://239.255.255.19:5000/RemoteEventService" />
</service>
</services>
<client>
<endpoint name="RemoteEventServiceClientEndPoint"
address="soap.udp://239.255.255.19:5000/RemoteEventService"
binding="customBinding"
bindingConfiguration="RemoteEventsBinding"
contract="EPiServer.Events.ServiceModel.IEventReplication" />
</client>
<behaviors>
<serviceBehaviors>
<behavior name="DebugServiceBehaviour">
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<customBinding>
<binding name="RemoteEventsBinding">
<binaryMessageEncoding />
<udpTransportCustom multicast="True"/>
</binding>
</customBinding>
</bindings>
</system.serviceModel>
An example configuration using TCP as the protocol, in the following example the server with IP 192.168.1.1 is configured to communicate with servers 192.168.1.2 and 192.168.1.3. Each server should have an unique configuration to expose 1 service and have multiple clients to communicate with other servers.
Server 1 example:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<services>
<service name="EPiServer.Events.Remote.EventReplication">
<endpoint
name="RemoteEventServiceEndPoint"
contract="EPiServer.Events.ServiceModel.IEventReplication"
bindingConfiguration="RemoteEventsBinding"
address="net.tcp://192.168.1.1:5000/RemoteEventService"
binding="netTcpBinding" />
</service>
</services>
<client>
<endpoint name="192.168.1.2"
address="net.tcp://192.168.1.2:5000/RemoteEventService"
binding="netTcpBinding"
bindingConfiguration="RemoteEventsBinding"
contract="EPiServer.Events.ServiceModel.IEventReplication" />
<endpoint name="192.168.1.3"
address="net.tcp://192.168.1.3:5000/RemoteEventService"
binding="netTcpBinding"
bindingConfiguration="RemoteEventsBinding"
contract="EPiServer.Events.ServiceModel.IEventReplication" />
</client>
<behaviors>
<serviceBehaviors>
<behavior name="DebugServiceBehaviour">
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<netTcpBinding>
<binding name="RemoteEventsBinding" portSharingEnabled="true">
<security mode="None" />
</binding>
</netTcpBinding>
</bindings>
</system.serviceModel>
<configuration>
<system.serviceModel>
...
<services>
<service name="EPiServer.Events.Remote.EventReplication"
behaviorConfiguration="*">
<endpoint name="RemoteEventServiceEndPoint"
contract="EPiServer.Events.ServiceModel.IEventReplication"
binding="*" address="*" />
</service>
</services>
...
</system.serviceModel>
</configuration>
<system.serviceModel>
...
<services>
<service name="[IIS web site name 1]/EPiServer.Events.Remote.EventReplication"
behaviorConfiguration="*">
<endpoint name="RemoteEventServiceEndPoint"
contract="EPiServer.Events.ServiceModel.IEventReplication"
binding="*" address="*" />
</service>
</services>
<service name="[IIS web site name 2]/EPiServer.Events.Remote.EventReplication"
behaviorConfiguration="*">
<endpoint name="RemoteEventServiceEndPoint"
contract="EPiServer.Events.ServiceModel.IEventReplication"
binding="*" address="*" />
</service>
</services>
...
</system.serviceModel>
Last updated: Sep 21, 2015