/// <summary> /// ServiceController constructor creates new instatnce of service for registration /// </summary> /// <param name="service">Instance of service</param> /// <param name="pluginsConfiguration">Instance of plugin configuration collections</param> /// <param name="wcfServicesConfiguration">WCF services configuration</param> protected ServiceControllerBase(IGaiaService service, PluginConfigurationCollection pluginsConfiguration, ServiceHostConfigurationCollection wcfServicesConfiguration) { Service = service; PluginsManager = new PluginsManager(pluginsConfiguration); ServicesManager = new WcfServicesManager(wcfServicesConfiguration); service.ServiceController = this; }
/// <summary> /// Factory creates and run service /// </summary> /// <param name="serviceName">Service system name</param> /// <param name="displayName">Service display name</param> /// <param name="description">Service description</param> /// <param name="pluginsConfiguration"></param> /// <param name="wcfServicesConfiguration"></param> /// <returns></returns> public static ServiceFactory Create <T>(string serviceName, string displayName, string description = null, PluginConfigurationCollection pluginsConfiguration = null, ServiceHostConfigurationCollection wcfServicesConfiguration = null) { var serVact = new ServiceFactory { ServiceName = serviceName, DisplayName = displayName, Description = description, Service = (IGaiaService)Activator.CreateInstance(typeof(T)) }; var serviceController = new ServiceController <IGaiaService>( serVact.Service, pluginsConfiguration, wcfServicesConfiguration); serVact.RunService(serviceController); return(serVact); }
/// <summary> /// Factory creates and run service /// </summary> /// <param name="pluginsConfiguration"></param> /// <param name="wcfServicesConfiguration"></param> /// <returns></returns> public static ServiceFactory Create <T>(PluginConfigurationCollection pluginsConfiguration = null, ServiceHostConfigurationCollection wcfServicesConfiguration = null) { var serviceType = typeof(T); var serviceName = serviceType.Name; var displayName = serviceType.FullName; var description = $"{serviceName}{Environment.NewLine}{displayName}{Environment.NewLine}{serviceType.Assembly.Location}"; var info = serviceType.GetCustomAttribute <ServiceInfoAttribute>(); if (info != null) { serviceName = info.ServiceName; displayName = info.DisplayName; description = info.Description; } return(Create <T>(serviceName, displayName, description, pluginsConfiguration, wcfServicesConfiguration)); }
/// <summary> /// ServiceController constructor creates new instatnce of service for registration /// </summary> /// <param name="service">Instance of service</param> /// <param name="pluginsConfiguration">Instance of plugin configuration collections</param> /// <param name="wcfServicesConfiguration">WCF services configuration</param> public ServiceController(T service, PluginConfigurationCollection pluginsConfiguration, ServiceHostConfigurationCollection wcfServicesConfiguration) : base(service, pluginsConfiguration, wcfServicesConfiguration) { }
public void ServiceConfigurationSettingsSerializationTest() { var expectedXml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + "<serviceHosts xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" + "<host type=\"Test.TestServiceType\" name=\"Host\" factory=\"Test.TestFactory\" />" + "<host type=\"Test1.TestServiceType\" name=\"Host1\" factory=\"Test1.TestFactory\" />" + "</serviceHosts>"; var config = new ServiceHostConfigurationCollection { new ServiceHostConfiguration { Name = "Host", FactoryTypeName = "Test.TestFactory", ServiceTypeName = "Test.TestServiceType" }, new ServiceHostConfiguration { Name = "Host1", FactoryTypeName = "Test1.TestFactory", ServiceTypeName = "Test1.TestServiceType" } }; string serData; var seri = new XmlSerializer(typeof(ServiceHostConfigurationCollection)); MemoryStream ms = null; StreamWriter sr = null; try { ms = new MemoryStream(); sr = new StreamWriter(ms); using (var xmlWriter = XmlWriter.Create(sr, new XmlWriterSettings { Indent = false })) { seri.Serialize(xmlWriter, config); } ms.Seek(0, SeekOrigin.Begin); serData = Encoding.Default.GetString(ms.GetBuffer()); sr.Close(); ms.Close(); } finally { if (ms != null) { ms.Dispose(); } if (sr != null) { sr.Dispose(); } } Assert.AreEqual(expectedXml, serData); ServiceHostConfigurationCollection expectedCollection; try { ms = new MemoryStream(Encoding.Default.GetBytes(expectedXml)); ms.Seek(0, SeekOrigin.Begin); expectedCollection = (ServiceHostConfigurationCollection)seri.Deserialize(ms); ms.Close(); } finally { if (ms != null) { ms.Dispose(); } } Assert.IsNotNull(expectedCollection); Assert.AreEqual(expectedCollection[0].Name, "Host"); Assert.AreEqual(expectedCollection[0].FactoryTypeName, "Test.TestFactory"); Assert.AreEqual(expectedCollection[0].ServiceTypeName, "Test.TestServiceType"); Assert.AreEqual(expectedCollection[1].Name, "Host1"); Assert.AreEqual(expectedCollection[1].FactoryTypeName, "Test1.TestFactory"); Assert.AreEqual(expectedCollection[1].ServiceTypeName, "Test1.TestServiceType"); }
/// <summary> /// Manager constructor /// </summary> /// <param name="configurationCollection">List of services to be managed by this manager</param> public WcfServicesManager(ServiceHostConfigurationCollection configurationCollection) { _log = LogManager.GetLogger(GetType()); _serviceHosts = new List <ServiceHostBase>(); _servicesConfiguration = configurationCollection; }