寄宿WCF服务相关实现方法解析

开发 开发工具
如果我们想要在windows中进行寄宿WCF服务的话,应该如何正确操作才能实现这一功能呢?在这里就会为大家详细介绍相关方法。

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

责任编辑:曹凯 来源: CSDN
相关推荐

2010-02-26 14:39:27

WCF服务寄宿

2010-02-24 11:22:04

WCF方法重载

2010-02-26 17:51:16

Silverlight

2010-02-26 08:59:10

WCF服务宿主程序

2010-02-26 16:20:56

WCF程序事务

2010-02-23 17:30:41

WCF部署于IIS

2010-02-24 14:59:52

WCF自定义过滤器

2010-02-25 13:54:48

WCF安全参数

2009-12-21 11:19:50

WCF配置文件

2010-02-23 10:15:22

WCF运行机制

2010-02-25 16:52:12

引用WCF服务

2010-03-01 16:31:58

WCF实现SOA

2009-12-21 18:10:50

WCF实现事件通知

2010-02-22 17:43:19

WCF服务启动

2010-02-22 14:28:35

WCF实现loadin

2009-12-21 17:48:30

WCF方法重载

2010-03-01 13:17:46

WCF单向服务

2009-12-21 13:27:45

WCF服务配置信息

2010-02-25 17:57:26

WCF服务合同

2010-02-25 16:20:02

WCF客户端
点赞
收藏

51CTO技术栈公众号