Mozi.HttpEmbedded 嵌入式Web服务器

项目介绍

Mozi.HttpEmbedded是一个基于.Net构建的嵌入式Web服务器,为.Net App提供web服务功能。

嵌入式的目标不是单片机,而是.Net应用程序。 此项目并不会实现非常丰富的大型Web服务器功能 项目基于.Net Framework 4.0开发,也可转换为.Net Core/.Net Standard项目,亦可作为.Net5.0项目引用库

特点

Mozi.HttpEmbedded在Socket之上使用异步单线程模型,构建了一个HTTP服务器。

  1. 嵌入式
    本项目可作为.Net应用的内嵌Web服务器,亦可作为单独Web服务器
  2. 轻量化
    项目编译结果小,部署程序占用系统资源少
  3. 可用性
    开箱即用,配置少,可控性高。同时遵从.Net平台Web项目开发的典型规范。
  4. 低耦合
    不改变现有业务逻辑,无需对现有代码进行改造,即可实现现有功能面向HTTP提供服务器
  5. 可控性
    宿主程序对Web服务高度可控

典型应用场景

业务体系或功能已开发完成,期望在项目中加入一个Web服务器功能,同时不对现有代码进行大规模改动。

  1. APP内嵌WEB服务
    通过HTTP方式对应用终端数据或文件,进行主动推送、下载
  2. 简易WEB服务器
    仅用很少的系统资源即可快速搭建WEB服务器

在经典的Asp.Net开发中,Web服务的部署高度依赖于IIS,.Net Core项目则可基于Kestrel/IIS部署。 基于KESTREL或IIS部署的WEB项目,都基于Asp.Net体系。

原理及功能

  1. HTTP协议
    实现HTTP/1.1

  2. 通讯认证
    实现基本认证(Basic)

  3. Cookie管理
    支持标准Cookie

  4. HTTP请求方法
    GET POST

  5. 路由
    实现了URL管理,参见Router模块

  6. 引用与依赖关系
    依赖于.Net Framework

  7. Payload压缩
    使用GZip压缩

  8. 字符编码
    字符编码部分使用UTF-8

功能与版本迭代

不定期对Mozi.HttpEmbedded的功能进行完善,解决各种BUG。HTTP标准功能繁多,需要一步步实现。

版权说明

本项目采用MIT开源协议,引用请注明出处。欢迎复制,引用和修改。意见建议疑问请联系软件作者,或提交ISSUE。

用例说明

    HttpServer hs = new HttpServer();
//配置端口并启动服务器
hs.SetPort(9000).Start(); //开启认证
hs.UseAuth(AuthorizationType.Basic).SetUser("admin", "admin"); //开启文件压缩
hs.UseGzip(new Compress.CompressOption() {
MinContentLength=1024,
CompressLevel=2
}); //开启静态文件支持
hs.UseStaticFiles("");
//配置虚拟目录 虚拟目录下的文件可以随意访问
hs.SetVirtualDirectory("config", AppDomain.CurrentDomain.BaseDirectory + @"Config\"); //路由映射
Router router = Router.Default;
router.Map("services/{controller}/{action}"); Console.ReadLine();

By Jason on Feb. 5,2020

Mozi.HttpEmbedded嵌入式Web服务器的更多相关文章

  1. 学号20145332 《信息安全系统设计基础》实验五 简单嵌入式WEB服务器实验

    实验目的 掌握在 ARM 开发板实现一个简单 WEB 服务器的过程. 学习在 ARM 开发板上的 SOCKET 网络编程. 学习 Linux 下的 signal()函数的使用. 实验内容 学习使用 s ...

  2. 20145216 20145330 《信息安全系统设计基础》 实验五 简单嵌入式WEB 服务器实验

    20145216 20145330 <信息安全系统设计基础> 实验五 简单嵌入式WEB 服务器实验 实验报告封面 实验步骤 1.阅读理解源码 进入/arm2410cl/exp/basic/ ...

  3. 20145208《信息安全系统设计基础》实验五 简单嵌入式WEB 服务器实验

    20145208<信息安全系统设计基础>实验五 简单嵌入式WEB 服务器实验 20145208<信息安全系统设计基础>实验五 简单嵌入式WEB 服务器实验

  4. 20145210 20145226 《信息安全系统设计基础》实验五 简单嵌入式WEB服务器实验

    20145210 20145226 <信息安全系统设计基础>实验五 简单嵌入式WEB服务器实验 结对伙伴:20145226 夏艺华 实验报告封面 实验目的与要求 · 掌握在ARM开发板实现 ...

  5. 20145221 《信息安全系统设计基础》实验五 简单嵌入式WEB服务器实验

    20145221 <信息安全系统设计基础>实验五 简单嵌入式WEB服务器实验 实验报告 队友博客:20145326蔡馨熠 实验博客:<信息安全系统设计基础>实验五 简单嵌入式W ...

  6. 实验5 简单嵌入式WEB服务器实验 实验报告 20135303 20135326

    北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础                班级:  1353 姓名:20135303 魏昊卿 学号:2013532 ...

  7. 20145303 20145339 《信息安全系统设计基础》 实验五 简单嵌入式WEB服务器实验

    20145303 20145339 <信息安全系统设计基础> 实验五 简单嵌入式WEB服务器实验 实验目的与要求 1.掌握在ARM开发板实现一个简单WEB服务器的过程 2.学习在ARM开发 ...

  8. 三种嵌入式web服务器(Boa / lighttpd / shttpd)的 linux移植笔记

    一:移植Boa(web服务器)到嵌入式Linux系统 一.Boa程序的移植 1.下载Boa源码    下载地址: http://www.boa.org/    目前最新发行版本: 0.94.13   ...

  9. Atitit.嵌入式web 服务器 java android最佳实践

    Atitit.嵌入式web 服务器 java android最佳实践 1. Android4.4.21 2. 自己的webserver1 3. CyberHTTP for Java  cybergar ...

随机推荐

  1. iOS全埋点解决方案-应用退出和启动

    前言 ​ 通过应用程序退出事件,可以分析应用程序的平均使用时长:通过应用程序的启动事件,可以分析日活和新增.我们可以通过全埋点方式 SDK 实现应用程序的退出和启动事件. 一.全埋点的简介 ​ 目前. ...

  2. ShellExecuteA加载exe文件指定工作目录找不到文件的问题

    使用ShellExecuteA调用exe文件时,指定工作目录需要注意 函数原型为: HINSTANCE ShellExecuteA( HWND hwnd, LPCTSTR lpOperation, L ...

  3. eureka自我保护机制是什么?

    当Eureka Server 节点在短时间内丢失了过多实例的连接时(比如网络故障或频繁启动关闭客户端)节点会进入自我保护模式,保护注册信息,不再删除注册数据,故障恢复时,自动退出自我保护模式.

  4. 什么是 ThreadLocal 变量?

    ThreadLocal 是 Java 里一种特殊的变量.每个线程都有一个 ThreadLocal 就是每 个线程都拥有了自己独立的一个变量,竞争条件被彻底消除了.它是为创建代价 高昂的对象获取线程安全 ...

  5. Java中8种基本数据类型是哪些

    1 public class Ceshi { 2 int a; 3 double b; 4 boolean c; 5 char d; 6 float f; 7 byte e; 8 long h; 9 ...

  6. 详解AOP——用配置文件的方式实现AOP

    AOP概念 1.AOP:面向切面(方面)编程,扩展功能不修改源代码实现 AOP原理 AOP采用横向抽取机制,取代了传统纵向继承体系重复性代码 传统的纵向抽取机制: 横向抽取机制: AOP操作术语 1. ...

  7. vue 初识(基础语法与数据驱动模型)

    1.es6的语法 let 特点: 1.局部作用域 2.不会存在变量提升 3.变量不能重复声明 const 特点: 1.局部作用域 2.不会存在变量提升 3.不能重复声明,只声明常量 不可变的量 模板字 ...

  8. centos云服务器配置redis外网可访问

    找到这行,注释 bind 127.0.0.1 #bind 127.0.0.1 找到这行,修改 protected-mode yes protected-mode no 重启服务 ./redis-ser ...

  9. Pandas基础笔记

    Basic knowledge of Pandas pandas库是以numpy库为基础建成的,是python数据分析的核心库.也正因如此,pandas内的数据结构与numpy的数组有许多相似的地方. ...

  10. 自动驾驶运动规划-Reeds Shepp曲线

    自动驾驶运动规划-Reeds Shepp曲线 相比于Dubins Car只允许车辆向前运动,Reeds Shepp Car既允许车辆向前运动,也允许车辆向后运动. Reeds Shepp Car运动规 ...