Guest User

Untitled

a guest
Dec 11th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Reflection;
  4. using System.ServiceModel;
  5. using System.ServiceProcess;
  6.  
  7. namespace WcfAppServer
  8. {
  9. public class ServiceContainer : ServiceBase
  10. {
  11. public List<IsolatedServiceHost> IsolatedServiceHosts { get; set; }
  12.  
  13. protected override void OnStart(string[] args)
  14. {
  15. var configs = ConfigService.GetWcfServiceConfigs();
  16. IsolatedServiceHosts = new List<IsolatedServiceHost>(configs.Count);
  17.  
  18. foreach (var config in configs)
  19. {
  20. var isolatedServiceHost = CreateIsolatedServiceHost(config);
  21.  
  22. isolatedServiceHost.Open();
  23.  
  24. IsolatedServiceHosts.Add(isolatedServiceHost);
  25. }
  26. }
  27.  
  28. private IsolatedServiceHost CreateIsolatedServiceHost(WcfServiceConfig config)
  29. {
  30. var service = config.WcfService;
  31. var assembly = Assembly.ReflectionOnlyLoad(service.ServiceAssemblyName);
  32. var serviceType = assembly.GetType(string.Format("{0}.{1}", service.ServiceAssemblyName, service.ServiceClassName));
  33. var implementedContractType = assembly.GetType(string.Format("{0}.{1}", service.ServiceAssemblyName, service.ContractClassName));
  34.  
  35. var appDomainName = string.Format("{0}.{1}", serviceType.AssemblyQualifiedName, config.Endpoint);
  36.  
  37. return new IsolatedServiceHost(appDomainName,
  38. serviceType,
  39. implementedContractType,
  40. new Uri(config.Address),
  41. true);
  42. }
  43.  
  44. protected override void OnStop()
  45. {
  46. foreach (var isolatedServiceHost in IsolatedServiceHosts)
  47. {
  48. if (isolatedServiceHost == null)
  49. continue;
  50.  
  51. if (isolatedServiceHost.State == CommunicationState.Opened)
  52. isolatedServiceHost.Close();
  53. }
  54. }
  55. }
  56. }
Add Comment
Please, Sign In to add comment