WCF的WindowsService开发参考【附源码】

简介:

首先看图:

1:源码结构图

2:配置文件参考


<? xml version = " 1.0 " ?>
< configuration >
< system.serviceModel >
< services >
< service name = " DotNet.Service.ExceptionService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/ExceptionService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.IExceptionService " >
</ endpoint >
</ service >
< service name = " DotNet.Service.FileService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/FileService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.IFileService " >
</ endpoint >
</ service >
< service name = " DotNet.Service.FolderService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/FolderService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.IFolderService " >
</ endpoint >
</ service >
< service name = " DotNet.Service.ItemDetailsService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/ItemDetailsService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.IItemDetailsService " >
</ endpoint >
</ service >
< service name = " DotNet.Service.ItemsService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/ItemsService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.IItemsService " >
</ endpoint >
</ service >
< service name = " DotNet.Service.LogOnService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/LogOnService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.ILogOnService " >
</ endpoint >
</ service >
< service name = " DotNet.Service.LogService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/LogService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.ILogService " >
</ endpoint >
</ service >
< service name = " DotNet.Service.MessageService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/MessageService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.IMessageService " >
</ endpoint >
</ service >
< service name = " DotNet.Service.ModuleService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/ModuleService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.IModuleService " >
</ endpoint >
</ service >
< service name = " DotNet.Service.OrganizeService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/OrganizeService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.IOrganizeService " >
</ endpoint >
</ service >
< service name = " DotNet.Service.ParameterService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/ParameterService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.IParameterService " >
</ endpoint >
</ service >
< service name = " DotNet.Service.PermissionItemService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/PermissionItemService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.IPermissionItemService " >
</ endpoint >
</ service >
< service name = " DotNet.Service.PermissionService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/PermissionService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.IPermissionService " >
</ endpoint >
</ service >
< service name = " DotNet.Service.RoleService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/RoleService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.IRoleService " >
</ endpoint >
</ service >
< service name = " DotNet.Service.SequenceService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/SequenceService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.ISequenceService " >
</ endpoint >
</ service >
< service name = " DotNet.Service.StaffService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/StaffService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.IStaffService " >
</ endpoint >
</ service >
< service name = " DotNet.Service.UserService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/UserService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.IUserService " >
</ endpoint >
</ service >
< service name = " DotNet.Service.UserCenterDbHelperService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/UserCenterDbHelperService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.IDbHelperService " >
</ endpoint >
</ service >
< service name = " DotNet.Service.BusinessDbHelperService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/BusinessDbHelperService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.IDbHelperService " >
</ endpoint >
</ service >
< service name = " DotNet.Service.WorkFlowActivityAdminService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/WorkFlowActivityAdminService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.IWorkFlowActivityAdminService " >
</ endpoint >
</ service >
< service name = " DotNet.Service.WorkFlowCurrentService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/WorkFlowCurrentService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.IWorkFlowCurrentService " >
</ endpoint >
</ service >
< service name = " DotNet.Service.WorkFlowProcessAdminService "  behaviorConfiguration = " Internet " >
< endpoint address = " http://localhost:8888/DotNet.Service/WorkFlowProcessAdminService/ "  binding = " basicHttpBinding "  contract = " DotNet.IService.IWorkFlowProcessAdminService " >
</ endpoint >
</ service >
</ services >
< behaviors >
< serviceBehaviors >
< behavior name = " Internet " >
< serviceMetadata httpGetEnabled = " true " />
< serviceDebug httpHelpPageEnabled = " True "  includeExceptionDetailInFaults = " True " />
</ behavior >
</ serviceBehaviors >
</ behaviors >
</ system.serviceModel >
</ configuration >


3:核心代码部分

// --------------------------------------------------------------------
//  All Rights Reserved , Copyright (C) 2011 , Hairihan TECH, Ltd. 
// --------------------------------------------------------------------

using  System;
using  System.Configuration;
using  System.Reflection;
using  System.ServiceModel;
using  System.ServiceModel.Configuration;
using  System.ServiceProcess;
using  System.Diagnostics;
using  System.Windows.Forms;

namespace  DotNet.WindowsService
{
using  DotNet.Utilities;

/// <summary>
///  CommonService
///
///  修改纪录
///
///         2008.03.06 版本:1.0 JiRiGaLa 创建Windows服务。
///
///  版本:1.0
///
/// <author>
/// <name> JiRiGaLa </name>
/// <date> 2007.08.15 </date>
/// </author>
/// </summary>
public partial class  CommonService : ServiceBase
   {
public  CommonService()
       {
           InitializeComponent();
       }

/// <summary>
///  服务数组
/// </summary>
       ServiceHost[] serviceHosts  = null ;

protected override void  OnStart( string [] args)
       {
//  是否检查在线状态
           BaseSystemInfo.CheckOnLine  = false ;
           BaseSystemInfo.AllowNullPassword 
= true ;
//  是否记录日志
           BaseSystemInfo.RecordLog  = true ;
//  是否需要注册
           BaseSystemInfo.NeedRegister  = false ;
//  读取配置文件
           ConfigHelper.GetConfig(Application.StartupPath  + " \\ " +  ConfigHelper.FileName);

//  读取配置文件
           Configuration configuration  =  ConfigurationManager.OpenExeConfiguration(Assembly.GetEntryAssembly().Location);
           ServiceModelSectionGroup serviceModelSectionGroup 
=  (ServiceModelSectionGroup)configuration.GetSectionGroup( " system.serviceModel " );
//  开启每个服务
int  i  = 0 ;
           serviceHosts 
= new  ServiceHost[serviceModelSectionGroup.Services.Services.Count];
foreach  (ServiceElement serviceElement  in  serviceModelSectionGroup.Services.Services)
           {
string  assemblyString  =  serviceElement.Name.Substring( 0 , serviceElement.Name.LastIndexOf( ' . ' ));
               var serviceHost 
= new  ServiceHost(Assembly.Load(assemblyString).GetType(serviceElement.Name), serviceElement.Endpoints[ 0 ].Address);
               serviceHost.Opened 
+= delegate  { Console.WriteLine( " 第{0}服务:{1} " , i + 1 , serviceHost.BaseAddresses[ 0 ]); };
               serviceHost.Open();
               serviceHosts[i] 
=  serviceHost;
               i
++ ;
           }
base .OnStart(args);
       }

protected override void  OnStop()
       {
           Trace.WriteLine(
" Shutting down ServiceHost... " );
if  (serviceHosts  != null )
           {
for  ( int  i  =  serviceHosts.Length - 1 ; i  >= 0 ; i -- )
               {
                   serviceHosts[i].Close();
                   serviceHosts[i] 
= null ;
               }
           }
base .OnStop();
       }
   }
}


4:安装服务、卸载服务的命令

installutil  / " D:\DotNet.Common\DotNet.CommonV3.6\DotNet.WindowsService\bin\Debug\DotNet.WindowsService.exe "
installutil 
/ " D:\DotNet.Common\DotNet.CommonV3.6\DotNet.WindowsService\bin\Debug\DotNet.WindowsService.exe "

5:安装服务

6:运行情况

7:运行客户端,搞定!

8:全部功能调试ok,源码参考下载【WindowsService部分】

/Files/jirigala/JiRiGaLa.DotNet.WindowsService.rar


心情压抑时,看看女儿的照片,逗逗女儿啥烦恼都没了,像我不哈哈,小小可爱。





本文转自 jirigala 51CTO博客,原文链接:http://blog.51cto.com/2347979/1199868,如需转载请自行联系原作者
相关文章
|
Oracle 关系型数据库 API
C# LIS检验系统源码,接口技术:RESTful API + Http+WCF
LIS检验系统一种专门用于医院化验室的计算机系统,它致力于提高医院化验室的工作效率和检测准确率。LIS系统由多个子系统组成,包括样本管理系统、质控系统、检验结果管理系统、报告管理系统等。体系结构:Client/Server架构 SaaS模式 客户端:WPF+Windows Forms 服务端:C# +.Net 数据库:Oracle 接口技术:RESTful API + Http+WCF
118 2
|
自然语言处理 网络协议 数据格式
|
测试技术 Go 数据库
使用Entity Framework和WCF Ria Services开发SilverLight之1:简单模型
本文目的是通过Silverlight ria service完成一次数据的读取过程,并且在此基础上建立测试项目。 Ria service借助于WCF和ADO.NET Entity Framework构建分布式开发框架。
969 0
|
数据库 测试技术 安全
使用Entity Framework和WCF Ria Services开发SilverLight之2:POCO
在上一篇中《使用Entity Framework和WCF Ria Services开发SilverLight之1:简单模型》我们提出这类简单模型的几个问题: 1:实体模型被紧耦合在EDM中,同时它不能项目(模块)使用。
1239 0
|
前端开发
WCF更新服务引用报错的原因之一
WCF更新服务引用报错的原因之一
|
C# 数据安全/隐私保护
c#如何创建WCF服务到发布(SqlServer版已经验证)
c#如何创建WCF服务到发布(SqlServer版已经验证)
78 0