权限管理、用户权限系统、开源用户权限系统、信息化建设标准基础数据管理平台
代码改变世界

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

2011-05-08 01:03  通用C#系统架构  阅读(5062)  评论(13编辑  收藏  举报

首先看图:

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 

 

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

 

 



C# ASP.NET 通用权限设计、通用权限管理、通用权限组件、单点登录、集中式权限管理、统一授权体系、分级管理分级授权


微信扫一扫加好友