前言 在上一篇中简单讲了一些基础知识,例如Asp.Net Core Middleware 的使用,DI的简单使用以及嵌入式资源的使用方法等.本篇就是结合基础知识来构建一个基础框架出来. 那么框架有什么功能呢? 拦截LayIM请求 简单路由功能 路由调度器 通用接口 下面就基于以上四点搭建基础框架.其他缓存,日志什么的就先不在介绍. 拦截LayIM请求 正如上一篇介绍的那样,实现一个中间件就可以做拦截请求操作,换句话说,如果是layim的请求,我们不要放过.如果不是,那么拜拜.但是由于我们又使用了…
前言 开发一个AspNetCore的中间件需要理解RequestDelegate.另外,还需要理解.NET Core中的依赖注入.还有一个就是内嵌资源的访问.例如:EmbeddedFileProvider 的使用.那么本文就这三点做一个简单的介绍.理解了这些那么基本上开发下去就不难了. RequestDelegate 对于RequestDelegate的介绍,大家可以看一下这篇文章:https://www.cnblogs.com/artech/p/inside-asp-net-core-pipe…
前言 前几天写博客的时候突然看见了历史上的今天.不禁感慨时光如梭,这系列博客后来被我标注了已经过时,但是还有很多小伙伴咨询我.既然过时就要更新,正好 .NET Core 也出来很久了,于是乎想到把LayIM融入到.NET Core中做一项服务来用,就像SwaggerUI那样.只需要调用一句 app.UseLayiM() 即可实现LayIM的对接工作.当然,接口越简单,肯定背后承担了复杂的工作.之前我写过基于OWIN和融云的一个Asp.Net的组件,所以稍微有一点经验,但是对于.NET Core的…
前言 在前几篇中已经初步介绍了开发AspNetCore中间件的一些基础知识,不过都没有很深入的去研究,后续还是需要去看看源码.本篇呢,终于有点开头的味道了,就是要介绍LayIM了,其实标题写的是主角,其实由于我已经多次对接过LayIM的开发,所以这次的主角应该是Asp.Net Core,不过技术没有好坏之分,合起来才能完美.本篇对于LayIM只是做简单介绍,想了解详情的小伙伴可以去官网查看. LayIM简介 我觉得再多的语言也不如一张图来的实在. LayIM常用接口介绍 layim.config…
前言 “一旦开始了就要坚持下去“.为什么本文的第一句话是这么一句话呢,因为我经常就是开头轰轰烈烈,结果越来越枯燥,就不想做下去了.但是版图就放弃又那么不甘心,继续加油吧. 吐槽完毕,进入正题.在上一篇中我们的主角LayIM已经登场了.而且界面已经实现,那么有些小伙伴就有疑惑了,详细流程是什么样的,今天我就介绍一个东西,那就是 /layim/init 接口的实现细节 另外,项目已经升级至 .NET CORE 2.1 ,最新代码在 dev-netcore2.1 分支上 需求 需求是什么?需求是将La…
前言 距离上一篇博客竟然已经10多天了...工作上的事,个人原因,种种吧.不多说废话,本文将会重点介绍layim的入口配置. LayIM配置 其实在开发者文档里面已经描述的很清楚了.除了几个重要的接口配置,剩下的就是其他可选配置项了. 在普通的对接当中,这些配置都是直接写到页面中的,例如官网给出的例子: 由于在 LayIM.AspNetCore 项目中,为了实现前端的最简单对接.所以我将配置项目做到后台中了.为什么这么做呢?我的初衷就是后端可通过读取配置文件或者硬编码的形式更改LayIM配置,这…
前言   前几篇介绍了整个中间件的构成,路由,基本配置等等.基本上没有涉及到通讯部分.不过已经实现了融云的通讯功能,由于是第三方的就不在单独去写.正好.NET Core SignalR已经出来好久了,于是乎赶紧对接上.可以先看一下之前的文章:.Net Core SignalR初体验. Hub设计   Hub我采用了 Hub<T>,然后只定义了一个 Receive方法. namespace LayIM.AspNetCore.IM.SignalR { public interface ILayIM…
[PSR-0 规范的三项约定]: ① 命名空间必须与绝对路径一致 ② 类名的首字母必须大写 ③ 除入口文件外,其他".php"必须只有一个类(不能有可执行的代码) [开发符合 PSR-0 规范的基础框架]: ① 全部使用命名空间 ② 所有 PHP 文件必须自动载入,不能有 include/require ③ 单一入口 初始目录: 其中 index.php 入口文件 App 放置所有和业务逻辑相关的代码 Public 放置公共类文件(貌似 Public 会引起冲突,所以文件夹改名为 Co…
完成框架搭建后,编写自己的主函数起onvif服务 编写makefile objs = onvif.o onvif_func.o duration.o soapC.o soapServer.o stdsoap2.o onvif:$(objs)    gcc -o onvif $(objs) .PHONY:cleanclean:    #-rm onvif    rm *[!C.o].o 发现提示好多函数没有定义,在头文件soapStub.h中定义的,直接把没有定义的函数声明拷贝到一个onvif_f…
上一章,我们已经初步讲解了微信公众账号开发的基本原理,今天我们来探索设计实现. 首先我们设计了模块层次图,当然图中只是给出一种实现方式,不局限于此.具体见下图. 主要功能介绍如下: 1)请求接口层.处理HTTP请求,及响应 2)分发层.由接口层传入请求,然后具体分析请求类型,分发至不同的处理器 3)业务逻辑层.这里是我们的具体业务逻辑了,根据请求,实现具体的业务逻辑. 4)数据层.我们在实现某个应用时可能需要访问数据,可以是数据库或者是文件.如果是简单应用,可能没有这一层. 其实,具体的应用可以…