public void PluginConfigurationSettingsSerializationTest() { var expectedXml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + "<plugins xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" + "<plugin name=\"Plugin\" type=\"Test.TestPluginType\" />" + "<plugin name=\"Plugin1\" type=\"Test1.TestPluginType\" />" + "</plugins>"; var config = new PluginConfigurationCollection { new PluginConfiguration { Name = "Plugin", PluginTypeName = "Test.TestPluginType" }, new PluginConfiguration { Name = "Plugin1", PluginTypeName = "Test1.TestPluginType" } }; string serData; var seri = new XmlSerializer(typeof(PluginConfigurationCollection)); using (var ms = new MemoryStream()) { using (var 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(); } Assert.AreEqual(expectedXml, serData); PluginConfigurationCollection expectedCollection; using (var ms = new MemoryStream(Encoding.Default.GetBytes(expectedXml))) { ms.Seek(0, SeekOrigin.Begin); expectedCollection = (PluginConfigurationCollection)seri.Deserialize(ms); ms.Close(); } Assert.IsNotNull(expectedCollection); Assert.AreEqual(expectedCollection[0].Name, "Plugin"); Assert.AreEqual(expectedCollection[0].PluginTypeName, "Test.TestPluginType"); Assert.AreEqual(expectedCollection[1].Name, "Plugin1"); Assert.AreEqual(expectedCollection[1].PluginTypeName, "Test1.TestPluginType"); }
/// <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) { var serVact = new ServiceFactory { ServiceName = serviceName, DisplayName = displayName, Description = description, Service = (IGaiaService)Activator.CreateInstance(typeof(T)) }; var serviceController = new ServiceController <IGaiaService>(serVact.Service, pluginsConfiguration); 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) { 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)); }
/// <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) { }
/// <summary> /// Base constructor of plugin manager /// </summary> /// <param name="logger">Instance of logger</param> /// <param name="plugins">Plugins configuration collection</param> public PluginsManager(PluginConfigurationCollection plugins) { _logger = new Logger <PluginsManager>(new LoggerFactory()); _pluginsConfiguration = plugins; _plugins = new List <IServicePlugin>(); }
/// <summary> /// Base constructor of plugin manager /// </summary> /// <param name="plugins">Plugins configuration collection</param> public PluginsManager(PluginConfigurationCollection plugins) { _log = LogManager.GetLogger(GetType()); _pluginsConfiguration = plugins; _plugins = new List <IServicePlugin>(); }
/// <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> public ServiceController(T service, PluginConfigurationCollection pluginsConfiguration) : base(service, pluginsConfiguration) { }