163K网站系统

 找回密码
 注册
Mr.Li 发表于 2017-5-11 13:56:46 | 显示全部楼层 |阅读模式
主题5 | 帖子142 | 积分0

[后端开发文档] 插件开发 四:插件的结构

[复制链接]
一:一个完整的插件cs执行项目包含四部分:
    1:页面执行文件cs:如 myplugin\index.cs
       页面执行主要程序.
    2:插件用公共函数库:如 mynsb\code.cs
       用于多个页面调用的公共执行函数.
    3:外调数据接口函数库:如 mynsb\getdata.cs
       用于主程序调用的公共数据函数,这类函数只有官方开发的插件有.

     4:自动升级函数库:如:update\mypluginupdate.cs
        用于主程序升级时调用
        包含:插件版本号返回,本插件是否需要升级识别,升级时执行的升级函数.

二:页面执行文件结构:
    1:可以使用onload,Page_Load,或ProcessRequest等方法作为运行入口.根据自己的需求和习惯选择入口.
    2:核心实例化 必须 private Util.Cls_SiteBase nsb = new Util.Cls_SiteBase();
    3:初始化核心参数:非必须,
      nsb.GetSiteSettings(-1);
      参数含义:-1:自动识别客户端类型进行初始参数,0强制初始为pc客户端,1强制初始为wap(移动端)参数.
      当某页面使用纯数据输出,无视客户端类型,并不需要使用核心中的网站配置参数时可无需初始化核心参数.
      如制作一个纯数据输出的apiajax数据接口.
      //返回最近注册的10个高级企业会员.返回格式为json
      nsb.ResponseJsonObj(nsb.selectGetList("SELECT top 10 userid,chrname,regdate  FROM mh163k_Regusers where styleid=2 order by regdate desc"));
   

     
     4:逻辑分支处理
        为了减少页面入口文件aspx或ashx文件数量,统一将一个功能集,集中到一个执行文件中处理,使用action进行功能分支.
         如http://fuwu.163k.com/thread-54201-1-1.html中的index()和PageList(),一个页面程序执行多个不同的功能,
     
      5:页面执行权限:非必须.
          5.1 前台页面:无需执行权限判断.部分需要对是否登录会员进行限制的参考5.3
          5.2:后台页面(管理员管理):必须添加执行权限限制方法:
                        void CheckPower(int fid);//判断页面执行权限,直接输出错误页面
                        void CheckPower_Ajax(string fid);//判断后台页面执行权限,无权时输出json格式错误信息,用于各类后台ajax调用接口
                         bool isadmin=nsb.CheckPower_Bool(int fid);/只判断是否有页面执行权限
                         void CheckPower_WinShow(int fid);//用于返回调用MSGwindowShow的权限判断,无权时调用页面MSGwindowShow错误信息用于使用iframe提交接收数据页面
                         void CheckPowerA(int fid);后台页面执行权限判断,直接输出错误页面.同CheckPower()
                        方法中fid:该页面对应mh163k_funcmenu 后台菜单表中的fid编号.
           5.3:前台会员中心页面:
                  if (!nsb.Login()) //验证是否登陆
                   {//未登录跳转到网站统一的登录入口地址,nsb.GetUrl()获取当前执行页面完整地址进行编码后传给登录页面from参数,以便登录后能返回当前页面
                       Response.Redirect(mhconfig.webcfg.SiteUrl + "member/login.html?from=" + Server.UrlEncode(nsb.GetUrl()));
                        Response.End();
                   }

      5:初始化获取模板
         nsb.PageRequest = new mhmode.PageRequest(20170501, nsb.doPage(1, "myplugin", "index.html", 1, -1));
     

      6:对模板中的标签解析和数据逻辑层处理.
         如上一篇中的标签解析和数据处理.
         这也是本系统开发的主要部分.输入和输出基本都是选择型固定格式.

      
       7:输出页面 输出页面分为几种方式:
          1:直接输出模板内容.nsb.response.Write("解析完的模板"); nsb.response.End();
          2:用于页面使用iframe方式提交表单数据的输出返回消息:
               将调用页面js中的MSGwindowShow相关方法进行消息提示,参数详见程序中方法注释
               nsb.MSGwindowShow(1, "修改保存成功!", "connections.aspx");
           3:用于ajax接口统一输出返回:
              支持根据请求需求返回支持跨域调用的返回.跨域回调参数:jsoncallback
              nsb.ResponseJson***(object);//同类型有多个方式重载.请参阅注释使用.
           4:后台页面统一输出:
               nsb.ResponseAdmin("解析完中间模板页面");
           5:前台会员中心统一输出:
               nsb.ResponseE("解析完中间模板页面", "1", "1", "", 当前页面在mh163k_membermenu会员中心表中的菜单fid);
           6:前台页面
              由于前台页面带页面缓存,特殊解析输出方式详见样例或前台页面开发详解(待续).


待续....
您需要登录后才可以回帖 登录 | 注册

本版积分规则

163K,为互联网事业发展提供源动力!

小黑屋|手机版|Archiver|163k.com.   

© 2001-2013 Comsenz Inc.( 皖ICP备11020229号

快速回复 返回顶部 返回列表