ServiceHostCollection.cs 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. /*******************************************************************************
  2. * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:ServiceHostCollection.cs
  5. * 2.功能描述:服务集合
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 陈晓野 2014/09/16 1.00 新建
  9. *******************************************************************************/
  10. using System;
  11. using System.Collections.ObjectModel;
  12. using System.ServiceModel;
  13. using Dongke.IBOSS.PRD.WCF.ExHGS3QRS;
  14. using Dongke.IBOSS.PRD.WCF.Services.ConfigSetting;
  15. namespace Dongke.IBOSS.PRD.WCF.Services
  16. {
  17. /// <summary>
  18. /// 服务集合
  19. /// </summary>
  20. public class ServiceHostCollection : Collection<ServiceHost>, IDisposable
  21. {
  22. #region 属性
  23. /// <summary>
  24. /// 服务名
  25. /// </summary>
  26. public string ServiceName
  27. {
  28. get
  29. {
  30. return "DKService";
  31. }
  32. }
  33. /// <summary>
  34. /// IP
  35. /// </summary>
  36. public string IP
  37. {
  38. get;
  39. set;
  40. }
  41. /// <summary>
  42. /// 端口
  43. /// </summary>
  44. public string Port
  45. {
  46. get;
  47. set;
  48. }
  49. #endregion
  50. #region 构造函数
  51. /// <summary>
  52. /// 构造函数
  53. /// </summary>
  54. public ServiceHostCollection()
  55. {
  56. }
  57. #endregion
  58. #region 公有方法
  59. /// <summary>
  60. /// 初始化
  61. /// </summary>
  62. public void Init()
  63. {
  64. //BatchingHostingSettings settings = BatchingHostingSettings.GetSection();
  65. //foreach (ServiceTypeElement element in settings.ServiceTypes)
  66. //{
  67. // this.AddServiceHost(element.ServiceType);
  68. //}
  69. //<add type="Dongke.IBOSS.PRD.WCF.Services.WCFTestService, WCF.Services" />
  70. //<add type="Dongke.IBOSS.PRD.WCF.ExHGS3QRS.ExHGS3QR, WCF.ExHGS3QRS" />
  71. //<add type="Dongke.IBOSS.PRD.WCF.Services.PDAModuleService, WCF.Services" />
  72. //<add type="Dongke.IBOSS.PRD.WCF.Services.DKIBOSSPRDService, WCF.Services" />
  73. //<add type="Dongke.IBOSS.PRD.WCF.Services.CommonModuleService, WCF.Services" />
  74. //<add type="Dongke.IBOSS.PRD.WCF.Services.SystemModuleService, WCF.Services" />
  75. //<add type="Dongke.IBOSS.PRD.WCF.Services.HRModuleService, WCF.Services" />
  76. //<add type="Dongke.IBOSS.PRD.WCF.Services.PCModuleService, WCF.Services" />
  77. //<add type="Dongke.IBOSS.PRD.WCF.Services.PMModuleService, WCF.Services" />
  78. //<add type="Dongke.IBOSS.PRD.WCF.Services.PPModuleService, WCF.Services" />
  79. //<add type="Dongke.IBOSS.PRD.WCF.Services.TATModuleService, WCF.Services" />
  80. //<add type="Dongke.IBOSS.PRD.WCF.Services.ReportModuleService, WCF.Services" />
  81. //<add type="Dongke.IBOSS.PRD.WCF.Services.CMNModuleService, WCF.Services" />
  82. //<add type="Dongke.IBOSS.PRD.WCF.Services.PMModuleServiceNew, WCF.Services" />
  83. //<add type="Dongke.IBOSS.PRD.WCF.Services.PCModuleServiceNew, WCF.Services" />
  84. //<add type="Dongke.IBOSS.PRD.WCF.Services.PAMModuleService, WCF.Services" />
  85. //<add type="Dongke.IBOSS.PRD.WCF.Services.PublicModuleService, WCF.Services" />
  86. //<add type="Dongke.IBOSS.PRD.WCF.Services.SmartDeviceService, WCF.Services" />
  87. //<add type="Dongke.IBOSS.PRD.WCF.Services.SAPDataService, WCF.Services" />
  88. //<add type="Dongke.IBOSS.PRD.WCF.Services.Ex_HGS3_QR, WCF.Services" />
  89. this.AddServiceHost(typeof(WCFTestService));
  90. this.AddServiceHost(typeof(PDAModuleService));
  91. this.AddServiceHost(typeof(DKIBOSSPRDService));
  92. this.AddServiceHost(typeof(CommonModuleService));
  93. this.AddServiceHost(typeof(CMNModuleService));
  94. this.AddServiceHost(typeof(SystemModuleService));
  95. this.AddServiceHost(typeof(HRModuleService));
  96. this.AddServiceHost(typeof(PCModuleService));
  97. this.AddServiceHost(typeof(PMModuleService));
  98. this.AddServiceHost(typeof(PPModuleService));
  99. this.AddServiceHost(typeof(TATModuleService));
  100. this.AddServiceHost(typeof(ReportModuleService));
  101. this.AddServiceHost(typeof(PMModuleServiceNew));
  102. this.AddServiceHost(typeof(PCModuleServiceNew));
  103. this.AddServiceHost(typeof(PAMModuleService));
  104. this.AddServiceHost(typeof(PublicModuleService));
  105. this.AddServiceHost(typeof(SmartDeviceService));
  106. this.AddServiceHost(typeof(SAPDataService));
  107. this.AddServiceHost(typeof(ExHGS3QR));
  108. //this.AddServiceHost(typeof(Ex_HGS3_QR));
  109. }
  110. /// <summary>
  111. /// 追加服务类型
  112. /// </summary>
  113. /// <param name="serviceTypes"></param>
  114. public void AddServiceHosts(params Type[] serviceTypes)
  115. {
  116. if (null != serviceTypes)
  117. {
  118. Array.ForEach<Type>(serviceTypes, serviceType => AddServiceHost(serviceType));
  119. }
  120. }
  121. /// <summary>
  122. /// 追加服务类型
  123. /// </summary>
  124. /// <param name="serviceType"></param>
  125. public void AddServiceHost(Type serviceType)
  126. {
  127. Uri baseAddress = new Uri(string.Format("http://{0}:{1}/{2}/{3}", this.IP, this.Port, this.ServiceName, serviceType.Name));
  128. ServiceHost host = new ServiceHost(serviceType, baseAddress);
  129. this.Add(host);
  130. }
  131. /// <summary>
  132. /// 启动服务
  133. /// </summary>
  134. public void Open()
  135. {
  136. foreach (ServiceHost host in this)
  137. {
  138. host.Open();
  139. }
  140. }
  141. /// <summary>
  142. /// 销毁
  143. /// </summary>
  144. public void Dispose()
  145. {
  146. foreach (IDisposable host in this)
  147. {
  148. host.Dispose();
  149. }
  150. this.Clear();
  151. }
  152. #endregion
  153. }
  154. }