/* Service.cs */using System;using System.ComponentModel;using System.Configuration;using System.Configuration.Install;using System.ServiceModel;using System.ServiceModel.Description;using System.ServiceProcess;using CoreSiX.Implementation;using CoreSiX.ServiceContracts; namespace CoreSiX { class CoreSiXService : ServiceBase { public ServiceHost host = null; public CoreSiXService() { ServiceName = "CoreSiX_Service"; } public static void Main(){ System.Diagnostics.Debugger.Launch(); ServiceBase.Run(new CoreSiXService()); } protected override void OnStart(string[] args){ if (host != null) host.Close(); host = new ServiceHost(typeof(SiXAdmin)); host.Open(); } protected override void OnStop(){ if (host != null){ host.Close(); host = null; } } } [RunInstaller(true)] public class CoreSiXServiceInstaller : Installer { private ServiceProcessInstaller process; private ServiceInstaller service; public CoreSiXServiceInstaller() { process=new ServiceProcessInstaller(); process.Account=ServiceAccount.LocalSystem; service=new ServiceInstaller(); service.ServiceName="CoreSiX_Service"; Installers.Add(process); Installers.Add(service); } }} /* ISiXAdmin.cs */using System;using System.Collections.Generic;using System.ServiceModel; namespace CoreSiX.ServiceContracts { [ServiceContract(Namespace = "http://PiE.ServiceModel.CoreSiX")] public interface ISiXAdmin { [OperationContract] int Login(string username, string password); }} /* SiXAdmin.cs */using System;using System.Collections.Generic;using System.Data;using System.Data.Common;using System.ServiceModel;using System.Text;using Microsoft.Practices.EnterpriseLibrary.Data;using CoreSiX.ServiceContracts; namespace CoreSiX.Implementation { class SiXAdmin : ISiXAdmin { private const string connectionString="system"; private readonly Microsoft.Practices.EnterpriseLibrary.Data.Database database=DatabaseFactory.CreateDatabase(connectionString); public int Login(string username, string password) { /* Implementation is here */ } }} /* App.config */<?xml version="1.0" encoding="utf-8" ?><configuration> <connectionStrings> <add name="system" connectionString="" providerName="System.Data.SqlClient" /> </connectionStrings> <system.serviceModel> <bindings> <basicHttpBinding> <binding name="default" closeTimeout="00:01:00" /> </basicHttpBinding> </bindings> <behaviors> <endpointBehaviors> <behavior name="default"> <callbackDebug includeExceptionDetailInFaults="true" /> </behavior> </endpointBehaviors> </behaviors> <services> <service name="CoreSiX.CoreSiXService"> <endpoint address="http://localhost:8000/CoreSiX/Admin/" binding="basicHttpBinding" bindingConfiguration="default" behaviorConfiguration="default" contract="CoreSiX.CoreSiX.ISiXAdmin" /> </service> </services> </system.serviceModel></configuration>
<
</