1.一种同一进程下多应用模块客户端的异常处理方法,其特征在于,包括以下步骤:
创建功能单元Mi:以系统中相互独立的子模块作为功能单元,由功能单元集合构成的整个系统S={M1,M2,M3,……,Mn}寄宿在单一进程P中;
系统S在其寄宿进程P中为各个功能单元Mi创建应用程序域:其中Ai∈{A1,A2,......,An};
将各个功能单元Mi寄宿到应用程序域Ai中:Ai{Mi};
系统集成各应用程序域及功能单元:
系统及各个功能单元寄宿在单一进程中:P(S(Ai{Mi}));
当不同的功能单元之间存在业务关联时,采用跨应用程序域的数据传递方法进行不同的功能单元之间的数据传递;
当功能单元发生异常时,系统将该功能单元卸载。
2.根据权利要求1所述的同一进程下多应用模块客户端的异常处理方法,其特征在于,所述系统为生产制造执行系统时,根据业务功能,将功能单元划分为:计划排产、计划调度、生产追踪、报警管理、物料管理、质量管理、设备管理、工装工具管理、工艺管理、KPI统计分析,针对每个功能单元创建独立的动态运行库。
3.根据权利要求1所述的同一进程下多应用模块客户端的异常处理方法,其特征在于,为功能单元创建并配置应用程序域,具体过程如下:
使用System.AppDomain类来创建应用程序域,
使用AppDomainSetup类来配置应用程序域,配置过程如下:(a)、指定应用程序域名称;(b)、指定应用程序域根目录;(c)、指定应用程序域属性:独立域/中立域;(d)、指定应用程序域的安全策略。
4.根据权利要求1所述的同一进程下多应用模块客户端的异常处理方法,其特征在于,所述采用跨应用程序域的数据传递方法进行不同的功能单元之间的数据传递,具体为:
(a)、传值方式:首先将某应用程序域要传递的对象字段序列化到一个内存块中,然后将该内存块传递给另一个应用程序域,最后再执行反序列化得到新的对象;
(b)、传引用方式:当对象的引用被传递给一个目的应用程序域时,CLR会在目的应用程序域中创建一个代理类型的实例,目的应用程序域中的代码将使用这个代理实例来引用对象。
5.根据权利要求1所述的同一进程下多应用模块客户端的异常处理方法,其特征在于,所述系统将发生异常的功能单元卸载,具体为:
获取发生异常模块所在应用程序域名称;
调用应用程序域卸载函数:System.AppDomain.Unload卸载应用程序域;
释放该应用程序域中的所有资源。