Beispiel #1
0
        /// <summary>
        /// 导入插件配置文件
        /// </summary>
        /// <param name="plugfile">插件配置文件路径</param>
        public void LoadPlugin(string plugfile)
        {
            container = ZhyContainer.CreateUnity();
            plugin    = new PluginConfig();

            //switch (appType)
            //{
            //    case AppType.WCF:
            //        helper = new WcfFrame.ServerController.ControllerHelper();
            //        break;
            //}

            assemblyPath = new FileInfo(plugfile).Directory.FullName + "\\dll";

            var fileMap = new ExeConfigurationFileMap {
                ExeConfigFilename = plugfile
            };

            System.Configuration.Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);

            var plugininfo = (PluginSectionHandler)configuration.GetSection("plugin");

            if (plugininfo != null)
            {
                plugin.Load(plugininfo, plugfile);
            }

            LoadDllList(plugfile);//加载程序集

            var unitySection = (UnityConfigurationSection)configuration.GetSection("unity");

            if (unitySection != null)
            {
                container.LoadConfiguration(unitySection);//判断EntLib的路径对不对
            }
            if (plugin.defaultdbkey != "")
            {
                database = FactoryDatabase.GetDatabase(plugin.defaultdbkey);
            }
            else
            {
                database = FactoryDatabase.GetDatabase();
            }

            database.PluginName = plugin.name;

            if (plugin.defaultcachekey != "")
            {
                cache = ZhyContainer.CreateCache(plugin.defaultcachekey);
            }
            else
            {
                cache = ZhyContainer.CreateCache();
            }
        }
        /// <summary>
        /// 导入插件配置文件
        /// </summary>
        /// <param name="plugfile">插件配置文件路径</param>
        public void LoadPlugin(string plugfile)
        {
            container = ZhyContainer.CreateUnity();
            plugin    = new PluginConfig();

            var fileMap = new ExeConfigurationFileMap {
                ExeConfigFilename = plugfile
            };

            System.Configuration.Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);

            var plugininfo = (PluginSectionHandler)configuration.GetSection("plugin");

            if (plugininfo != null)
            {
                plugin.Load(plugininfo, plugfile);
            }

            DllList = LoadDllList(plugfile);//加载程序集

            var unitySection = (UnityConfigurationSection)configuration.GetSection("unity");

            if (unitySection != null)
            {
                container.LoadConfiguration(unitySection);//判断EntLib的路径对不对
            }
            if (plugin.defaultdbkey != "")
            {
                database = FactoryDatabase.GetDatabase(plugin.defaultdbkey);
            }
            else
            {
                database = FactoryDatabase.GetDatabase();
            }

            database.PluginName = plugin.name;

            if (plugin.defaultcachekey != "")
            {
                cache = ZhyContainer.CreateCache(plugin.defaultcachekey);
            }
            else
            {
                cache = ZhyContainer.CreateCache();
            }
        }
        public override AbstractController CreateController(string pluginname, string controllername)
        {
            string       pname = pluginname;
            string       cname = controllername;
            ModulePlugin mp;
            WcfControllerAttributeInfo wattr = AppPluginManage.GetPluginWcfControllerAttributeInfo(pname, cname, out mp);

            WcfServerController iController = (WcfServerController)EFWCoreLib.CoreFrame.Business.FactoryModel.GetObject(wattr.wcfControllerType, mp.database, mp.container, mp.cache, mp.plugin.name, null);

            //每次创建控制器的时候,重新创建db,防止并发操作数据
            AbstractDatabase db = FactoryDatabase.GetDatabase(mp.plugin.defaultdbkey);

            db.PluginName = mp.plugin.name;
            iController.BindDb(db, mp.container, mp.cache, mp.plugin.name);
            iController.requestData  = null;
            iController.responseData = null;

            return(iController);
        }
Beispiel #4
0
        public static void AppStart()
        {
            lock (locker)
            {
                if (_isCalled == false)
                {
                    try
                    {
                        WriterLog("--------------------------------");
                        WriterLog("应用开始启动!");

                        container = ZhyContainer.CreateUnity();
                        cache     = ZhyContainer.CreateCache();
                        database  = FactoryDatabase.GetDatabase();
                        //taskList = new List<TimingTask>();
                        //codeList = new List<FunClass>();

                        //加载插件
                        AppPluginManage.LoadAllPlugin();

                        _isCalled = true;

                        WriterLog("应用启动成功!");
                        WriterLog("--------------------------------");
                        //AppMain();
                    }
                    catch (Exception err)
                    {
                        AppGlobal.WriterLog("应用启动失败!");
                        AppGlobal.WriterLog(err.Message);
                        AppGlobal.WriterLog("--------------------------------");
                        throw err;
                    }
                }
            }
        }
Beispiel #5
0
        public static void AppStart()
        {
            lock (locker)
            {
                if (_isCalled == false)
                {
                    try
                    {
                        WriterLog("--------------------------------");
                        WriterLog("应用开始启动!");

                        string ClientType = System.Configuration.ConfigurationManager.AppSettings["ClientType"];
                        if (ClientType == "Web")
                        {
                            appType = AppType.Web;
                        }
                        else if (ClientType == "Winform")
                        {
                            appType     = AppType.Winform;
                            AppRootPath = System.Windows.Forms.Application.StartupPath + "\\";
                        }
                        else if (ClientType == "WCF")
                        {
                            appType     = AppType.WCF;
                            AppRootPath = System.Windows.Forms.Application.StartupPath + "\\";
                        }
                        else if (ClientType == "WCFClient")
                        {
                            appType     = AppType.WCFClient;
                            AppRootPath = System.Windows.Forms.Application.StartupPath + "\\";
                        }


                        IsSaas = System.Configuration.ConfigurationManager.AppSettings["IsSaas"] == "true" ? true : false;

                        container  = ZhyContainer.CreateUnity();
                        cache      = ZhyContainer.CreateCache();
                        database   = FactoryDatabase.GetDatabase();
                        taskList   = new List <TimingTask>();
                        codeList   = new List <FunClass>();
                        missingDll = new List <string>();

                        AppPluginManage.LoadAllPlugin();

                        //初始化Web定制任务
                        MultiTask.Init(container, taskList);//任务
                        //是否开启Web控制器请求权限认证

                        //扩展Global,网站程序启动、停止可自定义代码
                        GlobalExtend.StartInit();
                        //初始化委托代码
                        BaseDelegateCode.Init(container, codeList);//执行函数

                        _isCalled = true;


                        IsRun = true;

                        if (missingDll.Count > 0)
                        {
                            string msg = "缺失的程序集:";
                            WriterLog(msg);
                            for (int i = 0; i < missingDll.Count; i++)
                            {
                                msg = missingDll[i];
                                WriterLog(msg);
                            }
                            //MessageBox.Show(msg, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }

                        WriterLog("应用启动成功!");
                        WriterLog("--------------------------------");
                        //AppMain();
                    }
                    catch (Exception err)
                    {
                        AppGlobal.WriterLog("应用启动失败!");
                        AppGlobal.WriterLog(err.Message);
                        AppGlobal.WriterLog("--------------------------------");
                        throw err;
                    }
                }
            }
        }
Beispiel #6
0
        public static void AppStart()
        {
            lock (locker)
            {
                if (_isCalled == false)
                {
                    try
                    {
                        WriterLog("--------------------------------");
                        WriterLog("应用开始启动!");

                        container  = ZhyContainer.CreateUnity();
                        cache      = ZhyContainer.CreateCache();
                        database   = FactoryDatabase.GetDatabase();
                        taskList   = new List <TimingTask>();
                        codeList   = new List <FunClass>();
                        missingDll = new List <string>();


                        //加载插件
                        AppPluginManage.LoadAllPlugin();
                        //AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);

                        //下面三个需要配置unity.config
                        //初始化Web定制任务
                        //MultiTask.Init(container, taskList);//任务
                        //是否开启Web控制器请求权限认证
                        //扩展Global,网站程序启动、停止可自定义代码
                        //GlobalExtend.StartInit();
                        //初始化委托代码
                        //BaseDelegateCode.Init(container, codeList);//执行函数

                        _isCalled = true;

                        //IsRun = true;

                        if (missingDll.Count > 0)
                        {
                            string msg = "缺失的程序集:";
                            WriterLog(msg);
                            for (int i = 0; i < missingDll.Count; i++)
                            {
                                msg = missingDll[i];
                                WriterLog(msg);
                            }
                            //MessageBox.Show(msg, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }

                        WriterLog("应用启动成功!");
                        WriterLog("--------------------------------");
                        //AppMain();
                    }
                    catch (Exception err)
                    {
                        AppGlobal.WriterLog("应用启动失败!");
                        AppGlobal.WriterLog(err.Message);
                        AppGlobal.WriterLog("--------------------------------");
                        throw err;
                    }
                }
            }
        }