EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

将应用程序服务器作为Windows服务运行

重点

本主题演示了可由解决方案向导自动生成的代码。如果要在现有XAF解决方案中实现演示的功能,请继续。如果要创建新的XAF解决方案,请改用向导。

在生产环境中,可以方便地将XAF应用程序服务器设置和运行为Windows服务。本主题介绍如何将“中间层安全性-WCF服务”主题中实现的控制台应用程序服务器转换为Windows服务。调试时,请使用控制台应用程序服务器。在最终部署之前,将其转换为Windows服务。转换之前,请确保Console Application Server正常运行。

添加Windows服务应用程序服务器项目

尽管可以将中间层应用程序服务器实现为常规Windows服务,但是XAF提供了一个项目模板来简化此任务。因此,要将Windows Service应用程序服务器项目添加到您的解决方案中,请执行以下操作。

  • 解决方案资源管理器中右键单击解决方案。
  • 在调用的上下文菜单中,选择添加|。新项目...
  • 选择DevExpress v 19.2 XAF解决方案向导模板。
  • 指定项目名称(例如MySolutionApplicationServer),然后单击“确定”。
  • 在解决方案向导中选择Application Server Project,然后按Next
  • 选择 Windows服务作为中间层服务器类型,然后按完成

结果,将从模板创建MySolutionApplicationServer项目。

从控制台应用程序服务器项目复制服务器配置

将位于控制台应用程序服务器项目中的ServerApplication.cs(ServerApplication.vb)文件中的ServerApplication.ApplicationName属性和ServerApplication.Modules集合初始化复制到ApplicationServerService.cs(ApplicationServerService.vb)文件。

using DevExpress.ExpressApp.Security.ClientServer.Wcf;
using DevExpress.ExpressApp.Xpo;
using DevExpress.Persistent.Base;
using DevExpress.Persistent.BaseImpl.PermissionPolicy;
// 鈥� 
public partial class ApplicationServerService : System.ServiceProcess.ServiceBase {
    // 鈥� 
    protected override void OnStart(string[] args) {
        string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        ValueManager.ValueManagerType = typeof(MultiThreadValueManager<>).GetGenericTypeDefinition();
        ServerApplication serverApplication = new ServerApplication();
        serverApplication.ApplicationName = "DxSampleService";
        serverApplication.Modules.BeginInit();
        serverApplication.Modules.Add(new MySolutionWindowsFormsModule());
        serverApplication.Modules.Add(new MySolutionAspNetModule());
        serverApplication.Modules.EndInit();
        //...
    }
    //...
}

不要忘记为模块项目添加必需的引用(例如,MySolution.ModuleMySolution.Module.WinMySolution.Module.Web)。右键单击新创建的应用服务器项目,然后选择添加引用...。在调用的对话框中,切换到“项目”选项卡,选择模块项目,然后单击“确定”。

Windows Service Application Server配置为使用WCF客户端连接类型,PermissionPolicyUser用户类型,PermissionPolicyRole角色类型和AuthenticationStandard身份验证类型。如果控制台应用程序服务器的设置不同,则将相应的代码复制到MySolutionService.csMySolutionService.vb)文件中。下面是WCF的示例(修改了MySolutionService类的OnStartOnStop方法)。

using DevExpress.ExpressApp.Security.ClientServer.Wcf;
using DevExpress.ExpressApp.Xpo;
using DevExpress.Persistent.Base;
using DevExpress.Persistent.BaseImpl.PermissionPolicy;
// 鈥� 
public partial class ApplicationServerService : System.ServiceProcess.ServiceBase {
    // 鈥� 
    protected override void OnStart(string[] args) {
        //...
        serverApplication.CheckCompatibilityType = CheckCompatibilityType.DatabaseSchema;
        serverApplication.CreateCustomObjectSpaceProvider  = (s, e) => 
            e.ObjectSpaceProvider = new XPObjectSpaceProvider(connectionString);
        serverApplication.ConnectionString = connectionString;
        SecurityAdapterHelper.Enable();
        serverApplication.Setup();
        serverApplication.CheckCompatibility();
        serverApplication.Dispose(); 
        Func dataServerSecurityProvider = () =>
            new SecurityStrategyComplex(typeof(PermissionPolicyUser), typeof(PermissionPolicyRole), new AuthenticationStandard());
        serviceHost = new WcfXafServiceHost(connectionString, dataServerSecurityProvider);
        string serviceEndPoint = @"net.tcp://localhost:1451/DataServer";
        serviceHost.AddServiceEndpoint(typeof(IWcfXafDataServer), WcfDataServerHelper.CreateNetTcpBinding(), serviceEndPoint);
        serviceHost.Open();
    }
    protected override void OnStop() {
        serviceHost.Close();
    }
}
注意

SecurityAdapterHelper.Enable方法使安全权限缓存以提高性能。

使用WCF时,需要对System.ServiceModel.dll程序集的引用。要将应用程序服务器连接到数据库提供程序,请在应用程序服务器项目中的配置文件(App.config)中指定连接字符串,或在上面的代码中将其明确设置为connectionString变量。

安装并运行Windows Service Application Server

要安装和运行应用程序服务器服务,请执行以下操作。

  • 生成应用程序服务器项目。
  • 运行Visual Studio命令提示符(从Windows“开始”菜单)。
  • 键入“ installutil path_to_service_executable ”,然后按Enter。
  • 输入“ net start service_name ”。您可以在installutil输出中的上一步中看到服务名称。可以在为ProjectInstaller.csProjectInstaller.vb)文件调用的设计器中配置服务名称(更改ServiceInstaller.ServiceName值)。

要停止该服务,请键入“ net stop service_name ”。要卸载它,请键入“ installutil path_to_service_executable / u”。每次需要重建应用程序服务器项目时,请不要忘记停止服务。否则,Visual Studio将无法用新的可执行文件替换服务可执行文件。

注意

如果您在执行这些步骤时遇到任何困难,请参阅下面列出的MSDN主题。

Windows服务疑难解答

如果无法通过net start命令启动该服务,请启动“事件查看器”应用程序并打开“应用程序”日志以查找问题所在。

调试应用服务器

如果这样做没有帮助,请参考下面列出的MSDN主题。

相关文章

转载保留此链接,注明出处