寄宿WCF服务相关实现方法解析
创始人
2024-06-23 20:41:39
0

WCF是一款由微软公司研发的.NET Framework 3.5重要组成部件。它的功能优势突出,比如在兼容性,安全性方面尤其突出。在windows服务中寄宿WCF服务,需要继承ServiceBase,此外,还须要继承Installer以安装服务.以下为具体实现步骤:

寄宿WCF服务步骤1.创建文件winservice.cs,输入代码

  1. namespace windowswcfservice  
  2. {  
  3. using System.ServiceProcess;  
  4. using System.ServiceModel;  
  5. using System.Configuration.Install;  
  6. using System.Configuration;  
  7. using System.ComponentModel;  
  8. [ServiceContract(Namespace="http://mysample")]  
  9. public interface ICalculator  
  10. {  
  11. [OperationContract]  
  12. double Add(double n1, double n2);  
  13. [OperationContract]  
  14. double Subtract(double n1, double n2);  
  15. [OperationContract]  
  16. double Multiply(double n1, double n2);  
  17. [OperationContract]  
  18. double Divide(double n1, double n2);  
  19. }  
  20. public class CalculatorService : ICalculator  
  21. {  
  22. public double Add(double n1, double n2)  
  23. {  
  24. return n1 + n2;  
  25. }  
  26. public double Subtract(double n1, double n2)  
  27. {  
  28. return n1 - n2;  
  29. }  
  30. public double Multiply(double n1, double n2)  
  31. {  
  32. return n1 * n2;  
  33. }  
  34. public double Divide(double n1, double n2)  
  35. {  
  36. return n1 / n2;  
  37. }  
  38. }  
  39. [RunInstaller(true)]  
  40. public class ProjectInstaller : Installer  
  41. {  
  42. private ServiceProcessInstaller process;  
  43. private ServiceInstaller service;  
  44. public ProjectInstaller()  
  45. {  
  46. process = new ServiceProcessInstaller();  
  47. process.Account = ServiceAccount.LocalSystem;  
  48. service = new ServiceInstaller();  
  49. service.ServiceName = "WCFWindowsServiceSample";  
  50. Installers.Add(process);  
  51. Installers.Add(service);  
  52. }  
  53. }  
  54. public class WindowsCalculatorService : ServiceBase  
  55. {  
  56. public ServiceHost serviceHost = null;  
  57. public static void Main()  
  58. {  
  59. ServiceBase.Run(new WindowsCalculatorService());  
  60. }  
  61. protected override void OnStart(string[] args)  
  62. {  
  63. if (serviceHost != null)  
  64. {  
  65. serviceHost.Close();  
  66. }  
  67. try  
  68. {  
  69. serviceHost = new ServiceHost(typeof(CalculatorService));  
  70. serviceHost.Open();  
  71. }  
  72. catch(System.Exception err)  
  73. {  
  74. System.Diagnostics.EventLog.WriteEntry("Application", err.Message);  
  75. }  
  76. }  
  77. protected override void OnStop()  
  78. {  
  79. if (serviceHost != null)  
  80. {  
  81. serviceHost.Close();  
  82. serviceHost = null;  
  83. }  
  84. }  
  85. }  

 

寄宿WCF服务步骤2.用csc编译文件winservice.cs

csc /t:exe winservice.cs /r:"C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Communication

Foundation\System.ServiceModel.dll" /r:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.ServiceProcess.dll /r:System.Configuration.Install.dll

寄宿WCF服务步骤3.创建winservice.exe.config,内容如下:

  1. < ?xml version="1.0"?> 
  2. < configuration> 
  3. < system.serviceModel> 
  4. < services> 
  5. < service name="windowswcfservice.CalculatorService" 
    behaviorConfiguration="Metadata" > 
  6. < host> 
  7. < baseAddresses> 
  8. < add baseAddress="http://localhost:8000/service"/> 
  9. < /baseAddresses> 
  10. < /host> 
  11. < endpoint address="*" binding="wsHttpBinding" 
    contract="windowswcfservice.ICalculator" /> 
  12. < endpoint address="mex" binding="mexHttpBinding" 
    contract="IMetadataExchange"/> 
  13. < /service> 
  14. < /services> 
  15. < behaviors> 
  16. < serviceBehaviors> 
  17. < behavior name="Metadata"> 
  18. < serviceMetadata httpGetEnabled="true" /> 
  19. < /behavior> 
  20. < /serviceBehaviors> 
  21. < /behaviors> 
  22. < /system.serviceModel> 
  23. < /configuration> 

寄宿WCF服务步骤4.利用工具C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\installutil.exe安装windows 服务.installutil.exe winservice.exe

#t#

寄宿WCF服务步骤5.启动服务:net start WCFWindowsServiceSample。如果服务不能启动,可查看事件日志以定位错误.

寄宿WCF服务步骤6.访问wcf服务:http://localhost:8000/service

寄宿WCF服务步骤7.停止wcf服务:net stop WCFWindowsServiceSample

寄宿WCF服务步骤8.卸载windows服务:installutil.exe /u winservice.exe

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...