public ServiceHost CreateServiceHost(ClusterConfiguration clusterConfiguration) { var managerNode = new ManagerNode(clusterConfiguration); managerNode.Start(); var serviceHost = new ServiceHost(managerNode, new[] { new Uri(string.Format("http://localhost:{0}/brightstarcluster", Configuration.HttpPort)), new Uri(string.Format("net.tcp://localhost:{0}/brightstarcluster", Configuration.TcpPort)), new Uri(string.Format("net.pipe://localhost/{0}", Configuration.NamedPipeName)) }); var basicHttpBinding = new BasicHttpContextBinding { TransferMode = TransferMode.StreamedResponse, MaxReceivedMessageSize = int.MaxValue, SendTimeout = TimeSpan.FromMinutes(30), ReaderQuotas = XmlDictionaryReaderQuotas.Max, Namespace = "http://www.networkedplanet.com/schemas/brightstar" }; var netTcpContextBinding = new NetTcpContextBinding { TransferMode = TransferMode.StreamedResponse, MaxReceivedMessageSize = int.MaxValue, SendTimeout = TimeSpan.FromMinutes(30), ReaderQuotas = XmlDictionaryReaderQuotas.Max, Namespace = "http://www.networkedplanet.com/schemas/brightstar" }; var netNamedPipeBinding = new NetNamedPipeBinding { TransferMode = TransferMode.StreamedResponse, MaxReceivedMessageSize = int.MaxValue, SendTimeout = TimeSpan.FromMinutes(30), ReaderQuotas = XmlDictionaryReaderQuotas.Max, Namespace = "http://www.networkedplanet.com/schemas/brightstar" }; serviceHost.AddServiceEndpoint(typeof(IBrightstarClusterManagerService), basicHttpBinding, ""); serviceHost.AddServiceEndpoint(typeof(IBrightstarClusterManagerService), netTcpContextBinding, ""); serviceHost.AddServiceEndpoint(typeof(IBrightstarClusterManagerService), netNamedPipeBinding, ""); var throttlingBehavior = new ServiceThrottlingBehavior { MaxConcurrentCalls = int.MaxValue }; serviceHost.Description.Behaviors.Add(new ServiceMetadataBehavior { HttpGetEnabled = true }); serviceHost.Description.Behaviors.Add(throttlingBehavior); serviceHost.Closed += StopNode; return serviceHost; }
/// <summary> /// Initialises and returns a new HTTP service client. This client should be used when the client is on a separate machine from the service and /// firewall or other constrains prohibit the use of the TcpNet client. /// </summary> /// <param name="endpointUri">The uri where the HTTP endpoint is running. By default this is http://{machinename}:8090/brightstar</param> /// <param name="queryCache">OPTIONAL : the cache to use for query results</param> /// <returns>A new brightstar service client. It is important to call dispose on the client after use.</returns> internal static IBrightstarService GetHttpClient(Uri endpointUri, ICache queryCache = null) { var binding = new BasicHttpContextBinding { MaxReceivedMessageSize = Int32.MaxValue, SendTimeout = TimeSpan.FromMinutes(30), TransferMode = TransferMode.StreamedResponse, ReaderQuotas = XmlDictionaryReaderQuotas.Max }; var endpointAddress = new EndpointAddress(endpointUri); var client = new BrightstarServiceClient(new BrightstarWcfServiceClient(binding, endpointAddress), queryCache); return client; }
public static Binding Resolve(WcfBindingTypes type) { Binding binding = null; switch (type) { case WcfBindingTypes.BasicHttpBinding: binding = new BasicHttpBinding(); break; case WcfBindingTypes.NetTcpBinding: binding = new NetTcpBinding(); break; case WcfBindingTypes.NetTcpContextBinding: binding = new NetTcpContextBinding(); break; case WcfBindingTypes.WsHttpBinding: binding = new WSHttpBinding(); break; case WcfBindingTypes.NetMsmqBinding: binding = new NetMsmqBinding(); break; case WcfBindingTypes.NetPeerTcpBinding: binding = new NetPeerTcpBinding(); break; case WcfBindingTypes.BasicHttpContextBinding: binding = new BasicHttpContextBinding(); break; case WcfBindingTypes.WSHttpContextBinding: binding = new WSHttpContextBinding(); break; case WcfBindingTypes.WS2007FederationHttpBinding: binding = new WS2007FederationHttpBinding(); break; case WcfBindingTypes.WS2007HttpBinding: binding = new WS2007HttpBinding(); break; case WcfBindingTypes.NetNamedPipeBinding: binding = new NetNamedPipeBinding(); break; case WcfBindingTypes.WSFederationHttpBinding: binding = new WSFederationHttpBinding(); break; case WcfBindingTypes.WSDualHttpBinding: binding = new WSDualHttpBinding(); break; default: binding = new CustomBinding(); break; } return binding; }
public void TestUnavailableWithNoNodes() { StartClusterManagerService(); var endpointUri = "http://127.0.0.1:9090/brightstarcluster"; var binding = new BasicHttpContextBinding { MaxReceivedMessageSize = Int32.MaxValue, SendTimeout = TimeSpan.FromMinutes(30), TransferMode = TransferMode.StreamedResponse, ReaderQuotas = XmlDictionaryReaderQuotas.Max }; var endpointAddress = new EndpointAddress(endpointUri); var client = new BrightstarClusertManagerServiceClient (binding, endpointAddress); var clusterDescription = client.GetClusterDescription(); Assert.IsNotNull(clusterDescription); Assert.AreEqual(ClusterStatus.Unavailable, clusterDescription.Status); }
private void AddClient(RoleInstance workerInstance) { var binding = new BasicHttpContextBinding { TransferMode = TransferMode.StreamedResponse, MaxReceivedMessageSize = Int32.MaxValue, SendTimeout = TimeSpan.FromMinutes(10), ReaderQuotas = XmlDictionaryReaderQuotas.Max, HostNameComparisonMode = HostNameComparisonMode.Exact }; var endpointUri = String.Format("http://{0}", workerInstance.InstanceEndpoints["StoreWorkerService"].IPEndpoint); var endpointAddress = new EndpointAddress(endpointUri); var client = new StoreWorkerServiceClient(binding, endpointAddress); lock (_clients) { _clients.RemoveAll(t => t.Item1.Equals(workerInstance.Id)); _clients.Add(new Tuple<string, IStoreWorkerService>(workerInstance.Id, client)); } }
private static BrightstarClusertManagerServiceClient GetClusterClient() { const string endpointUri = "http://127.0.0.1:9090/brightstarcluster"; var binding = new BasicHttpContextBinding { MaxReceivedMessageSize = Int32.MaxValue, SendTimeout = TimeSpan.FromMinutes(30), TransferMode = TransferMode.StreamedResponse, ReaderQuotas = XmlDictionaryReaderQuotas.Max }; var endpointAddress = new EndpointAddress(endpointUri); var client = new BrightstarClusertManagerServiceClient(binding, endpointAddress); return client; }
/// <summary> /// Get a binding based on values of this class /// </summary> /// <returns>Hydrated binding</returns> /// <exception cref="InvalidOperationException">Thrown if requested binding doesn't match one of the implemented bindings</exception> public Binding GetBinding() { System.ServiceModel.Channels.Binding binder = null; switch (this.Binding) { case WcfBindings.BasicHttp: if (!string.IsNullOrWhiteSpace(ConfigurationName)) { binder = new BasicHttpBinding(ConfigurationName); } else { binder = new BasicHttpBinding() { BypassProxyOnLocal = ByPassProxyOnLocal, MaxBufferPoolSize = MaxBufferSize, MaxReceivedMessageSize = MaxReceivedMessageSize, //UseDefaultWebProxy = UseDefaultProxy, ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas() { MaxArrayLength = MaxArrayLength, MaxBytesPerRead = MaxBytesPerRead, MaxDepth = MaxDepth, MaxNameTableCharCount = MaxNameTableCharCount, MaxStringContentLength = MaxStringContentLength } }; } break; case WcfBindings.BasicContext: if (!string.IsNullOrWhiteSpace(ConfigurationName)) { binder = new BasicHttpContextBinding(ConfigurationName); } else { binder = new BasicHttpContextBinding() { BypassProxyOnLocal = ByPassProxyOnLocal, MaxBufferPoolSize = MaxBufferSize, MaxReceivedMessageSize = MaxReceivedMessageSize, UseDefaultWebProxy = UseDefaultProxy, ProxyAddress = new Uri(ProxyAddress), ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas() { MaxArrayLength = MaxArrayLength, MaxBytesPerRead = MaxBytesPerRead, MaxDepth = MaxDepth, MaxNameTableCharCount = MaxNameTableCharCount, MaxStringContentLength = MaxStringContentLength } }; } break; case WcfBindings.NetTcp: if (!string.IsNullOrWhiteSpace(ConfigurationName)) { binder = new NetTcpBinding(ConfigurationName); } else { binder = new NetTcpBinding() { MaxBufferPoolSize = MaxBufferSize, MaxReceivedMessageSize = MaxReceivedMessageSize, ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas() { MaxArrayLength = MaxArrayLength, MaxBytesPerRead = MaxBytesPerRead, MaxDepth = MaxDepth, MaxNameTableCharCount = MaxNameTableCharCount, MaxStringContentLength = MaxStringContentLength } }; } break; case WcfBindings.WebHttp: if (!string.IsNullOrWhiteSpace(ConfigurationName)) { binder = new WebHttpBinding(ConfigurationName); } else { binder = new WebHttpBinding() { BypassProxyOnLocal = ByPassProxyOnLocal, MaxBufferPoolSize = MaxBufferSize, MaxReceivedMessageSize = MaxReceivedMessageSize, UseDefaultWebProxy = UseDefaultProxy, ProxyAddress = new Uri(ProxyAddress), ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas() { MaxArrayLength = MaxArrayLength, MaxBytesPerRead = MaxBytesPerRead, MaxDepth = MaxDepth, MaxNameTableCharCount = MaxNameTableCharCount, MaxStringContentLength = MaxStringContentLength } }; } break; case WcfBindings.WsHttpBinding: if (!string.IsNullOrWhiteSpace(ConfigurationName)) { binder = new WSHttpBinding(ConfigurationName); } else { binder = new WSHttpBinding() { BypassProxyOnLocal = ByPassProxyOnLocal, MaxBufferPoolSize = MaxBufferSize, MaxReceivedMessageSize = MaxReceivedMessageSize, UseDefaultWebProxy = UseDefaultProxy, ProxyAddress = new Uri(ProxyAddress), ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas() { MaxArrayLength = MaxArrayLength, MaxBytesPerRead = MaxBytesPerRead, MaxDepth = MaxDepth, MaxNameTableCharCount = MaxNameTableCharCount, MaxStringContentLength = MaxStringContentLength } }; } break; case WcfBindings.WsHttpContext: if (!string.IsNullOrWhiteSpace(ConfigurationName)) { binder = new WSHttpContextBinding(ConfigurationName); } else { binder = new WSHttpContextBinding() { BypassProxyOnLocal = ByPassProxyOnLocal, MaxBufferPoolSize = MaxBufferSize, MaxReceivedMessageSize = MaxReceivedMessageSize, UseDefaultWebProxy = UseDefaultProxy, ProxyAddress = new Uri(ProxyAddress), ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas() { MaxArrayLength = MaxArrayLength, MaxBytesPerRead = MaxBytesPerRead, MaxDepth = MaxDepth, MaxNameTableCharCount = MaxNameTableCharCount, MaxStringContentLength = MaxStringContentLength } }; } break; default: throw ExceptionFactory.New<InvalidOperationException>("Unable to instantiante a binding of '{0}'", this.Binding.ToString()); } binder.CloseTimeout = CloseTimeout; binder.OpenTimeout = OpenTimeout; binder.ReceiveTimeout = ReceiveTimeout; binder.SendTimeout = SendTimeout; return binder; }