微信公共平台开发分享

1 篇文章 0 订阅

最近在玩微信公共平台的开发,分享一下心得


1、封装细节,客户端只关注业务逻辑。

这个是客户端代码,客户端只需要根据请求消息体进行处理,并返回响应消息即可。

这里关于token,还可以进行一层封装,这样就不用每次都要实现Token属性了;或者直接写入配置文件。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace wx
{

    public class QuestionAnswer:MpWeixinService
    {
        /// <summary>
        /// 处理请求消息,并返回响应消息
        /// </summary>
        /// <param name="msg">请求消息</param>
        /// <returns>响应消息</returns>
        public override WxResponseMsg ProcessMessage(WxRequestMsg msg)
        {
            WxTextResponseMsg resMsg = new WxTextResponseMsg(
                msg.FromUserName, msg.ToUserName, System.DateTime.Now.Ticks, "Test");

            return resMsg;
        }

        /// <summary>
        /// 返回token
        /// </summary>
        public override string Token
        {
            get { return "mytoken"; }
        }
    }
}



2、结合数据库和反射,完成业务逻辑的配置和自动加载,无须停止应用。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Xml;
using System.IO;
using System.Text;
using log4net;
using System.Data;
using System.Data.SqlClient;
using System.Reflection;


namespace wx
{
    /// <summary>
    /// 根据路由表中的路由消息,将指定的消息交给指定的处理程序进行处理,并返回相应的处理结果
    /// </summary>
    public class WxRoute : MpWeixinService
    {
        private DataTable routeTable = new DataTable();

        public override WxResponseMsg ProcessMessage(WxRequestMsg msg)
        {
            WxResponseMsg resMsg = null;
            string appName = SearchRouteAppName(msg);
            if (!string.IsNullOrEmpty(appName))
            {
                Type t = Type.GetType(appName);
                object o = Activator.CreateInstance(t);
                resMsg = (WxResponseMsg)t.GetMethod("ProcessMessage").Invoke(o, new WxRequestMsg[] { msg });
            }
            return resMsg;
        }

        public WxRoute()
        {
            LoadRouteTable();
        }

        private void LoadRouteTable()
        {
            //加载路由表
            string strSelect = "SELECT route_id, msgtype, msgtext, appurl, remark " +
                "FROM tbwx_Route";
            SqlConnection conn = Common.GetConnection();
            SqlCommand cmd = new SqlCommand(strSelect, conn);
            conn.Open();
            SqlDataAdapter ada = new SqlDataAdapter(cmd);
            ada.Fill(routeTable);
            ada.Dispose();
            conn.Close();
        }

        private string SearchRouteAppName(WxRequestMsg msg)   //查找路由处理appname
        {
            string appName = "";
            foreach (DataRow row in routeTable.Rows)
            {
                switch (msg.MsgType)
                {
                    case MsgTypes.Text:
                        {
                            if (row["msgtype"].ToString() == "text" &&
                                row["msgtext"].ToString() == ((WxTextRequestMsg)msg).Content.ToLower())
                            {
                                appName = row["appname"].ToString();
                            }
                        }
                        break;
                    default:
                        break;
                }
            }

            return appName;
        }

        public override string Token
        {
            get
            {
                return "sjfxsoft";
            }
        }

    }
}

路由表结构

create table dbo.tbwx_Route (
   route_id             bigint               not null,
   msgtype              varchar(50)          null,
   msgtext              varchar(50)          null,
   appname              varchar(500)         not null,
   remark               varchar(255)         collate Chinese_PRC_CI_AS null,
   constraint PK_tbWxRoute primary key (route_id)
         on "PRIMARY"
)


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PycharmVSCode都是常用的代码编辑器,但它们有一些不同之处。Pycharm是一款功能强大的Python IDE,提供了许多高级功能,如调试、测试、代码分析等。它还支持许多其他语言,如Java、JavaScript等。Pycharm的缺点是它比较笨重,占用大量内存和硬盘空间。另一方面,VSCode是一款轻量级的代码编辑器,它的优点是占用内存小,启动快,而且可以通过安装插件来扩展功能。VSCode的缺点是它的功能相对较少,需要安装插件来实现一些高级功能。总的来说,如果你需要一个功能强大的IDE,并且不介意占用大量内存和硬盘空间,那么Pycharm是一个不错的选择。如果你需要一个占用内存小,启动快,而且可以通过插件来扩展功能的编辑器,那么VSCode是一个不错的选择。 以下是演示如何在VSCode中使用Python: 1. 安装Python插件 在VSCode中,你需要安装Python插件才能使用Python。你可以通过按下Ctrl+Shift+X打开扩展面板,然后搜索Python插件并安装它。 2. 创建一个Python文件 在VSCode中,你可以通过按下Ctrl+N来创建一个新文件。然后,你可以将文件保存为.py文件。 3. 编写Python代码 在新文件中,你可以编写Python代码。例如,以下是一个简单的Python程序,它将打印“Hello, World!”: ```python print("Hello, World!") ``` 4. 运行Python代码 你可以通过按下F5来运行Python代码。在运行之前,你需要选择一个Python解释器。如果你还没有安装Python解释器,你需要先安装它。在运行之后,你将看到输出结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值