首先看圖:
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">
<service name="DotNet.Service.FolderService" behaviorConfiguration="Internet">
<endpoint address="http://localhost:8888/DotNet.Service/FolderService/" binding="basicHttpBinding" contract="DotNet.IService.IFolderService">
<service name="DotNet.Service.ItemDetailsService" behaviorConfiguration="Internet">
<endpoint address="http://localhost:8888/DotNet.Service/ItemDetailsService/" binding="basicHttpBinding" contract="DotNet.IService.IItemDetailsService">
<service name="DotNet.Service.ItemsService" behaviorConfiguration="Internet">
<endpoint address="http://localhost:8888/DotNet.Service/ItemsService/" binding="basicHttpBinding" contract="DotNet.IService.IItemsService">
<service name="DotNet.Service.LogOnService" behaviorConfiguration="Internet">
<endpoint address="http://localhost:8888/DotNet.Service/LogOnService/" binding="basicHttpBinding" contract="DotNet.IService.ILogOnService">
<service name="DotNet.Service.LogService" behaviorConfiguration="Internet">
<endpoint address="http://localhost:8888/DotNet.Service/LogService/" binding="basicHttpBinding" contract="DotNet.IService.ILogService">
<service name="DotNet.Service.MessageService" behaviorConfiguration="Internet">
<endpoint address="http://localhost:8888/DotNet.Service/MessageService/" binding="basicHttpBinding" contract="DotNet.IService.IMessageService">
<service name="DotNet.Service.ModuleService" behaviorConfiguration="Internet">
<endpoint address="http://localhost:8888/DotNet.Service/ModuleService/" binding="basicHttpBinding" contract="DotNet.IService.IModuleService">
<service name="DotNet.Service.OrganizeService" behaviorConfiguration="Internet">
<endpoint address="http://localhost:8888/DotNet.Service/OrganizeService/" binding="basicHttpBinding" contract="DotNet.IService.IOrganizeService">
<service name="DotNet.Service.ParameterService" behaviorConfiguration="Internet">
<endpoint address="http://localhost:8888/DotNet.Service/ParameterService/" binding="basicHttpBinding" contract="DotNet.IService.IParameterService">
<service name="DotNet.Service.PermissionItemService" behaviorConfiguration="Internet">
<endpoint address="http://localhost:8888/DotNet.Service/PermissionItemService/" binding="basicHttpBinding" contract="DotNet.IService.IPermissionItemService">
<service name="DotNet.Service.PermissionService" behaviorConfiguration="Internet">
<endpoint address="http://localhost:8888/DotNet.Service/PermissionService/" binding="basicHttpBinding" contract="DotNet.IService.IPermissionService">
<service name="DotNet.Service.RoleService" behaviorConfiguration="Internet">
<endpoint address="http://localhost:8888/DotNet.Service/RoleService/" binding="basicHttpBinding" contract="DotNet.IService.IRoleService">
<service name="DotNet.Service.SequenceService" behaviorConfiguration="Internet">
<endpoint address="http://localhost:8888/DotNet.Service/SequenceService/" binding="basicHttpBinding" contract="DotNet.IService.ISequenceService">
<service name="DotNet.Service.StaffService" behaviorConfiguration="Internet">
<endpoint address="http://localhost:8888/DotNet.Service/StaffService/" binding="basicHttpBinding" contract="DotNet.IService.IStaffService">
<service name="DotNet.Service.UserService" behaviorConfiguration="Internet">
<endpoint address="http://localhost:8888/DotNet.Service/UserService/" binding="basicHttpBinding" contract="DotNet.IService.IUserService">
<service name="DotNet.Service.UserCenterDbHelperService" behaviorConfiguration="Internet">
<endpoint address="http://localhost:8888/DotNet.Service/UserCenterDbHelperService/" binding="basicHttpBinding" contract="DotNet.IService.IDbHelperService">
<service name="DotNet.Service.BusinessDbHelperService" behaviorConfiguration="Internet">
<endpoint address="http://localhost:8888/DotNet.Service/BusinessDbHelperService/" binding="basicHttpBinding" contract="DotNet.IService.IDbHelperService">
<service name="DotNet.Service.WorkFlowActivityAdminService" behaviorConfiguration="Internet">
<endpoint address="http://localhost:8888/DotNet.Service/WorkFlowActivityAdminService/" binding="basicHttpBinding" contract="DotNet.IService.IWorkFlowActivityAdminService">
<service name="DotNet.Service.WorkFlowCurrentService" behaviorConfiguration="Internet">
<endpoint address="http://localhost:8888/DotNet.Service/WorkFlowCurrentService/" binding="basicHttpBinding" contract="DotNet.IService.IWorkFlowCurrentService">
<service name="DotNet.Service.WorkFlowProcessAdminService" behaviorConfiguration="Internet">
<endpoint address="http://localhost:8888/DotNet.Service/WorkFlowProcessAdminService/" binding="basicHttpBinding" contract="DotNet.IService.IWorkFlowProcessAdminService">
</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 /i "D:\DotNet.Common\DotNet.CommonV3.6\DotNet.WindowsService\bin\Debug\DotNet.WindowsService.exe"
installutil /u "D:\DotNet.Common\DotNet.CommonV3.6\DotNet.WindowsService\bin\Debug\DotNet.WindowsService.exe"
5:安裝服務
6:運作情況
7:運作用戶端,搞定!
8:全部功能調試ok,源碼參考下載下傳【WindowsService部分】
本文轉自jirigala_bao 51CTO部落格,原文連結:http://blog.51cto.com/jirigala/811868