于2015年6月首次公开发布。为配合Tinyfox的实际应用,在Tinyfox发布后相继推出了 Tinyfox.FastWebApi 和Tinyfox.WebSocket 两个关键的应用框架,构成了相对完整而独立的基于OWIN协议的面向Web应用的服务系统。

正因为原始的 Tinyfox 本质上是一款以 Microsoft OWIN 协议为基石的 OWIN基础引擎,虽然具备了基础层面的坚固与强大,但是,Web应用层与其OWIN内核层之间需要进行较为低阶的数据转换和封装,这个过程,不但对性能有一定的影响,也对Tinyfox使用者提出了更高的要求,它需要开发者对OWIN协议及其管道模型具有较为深入的理解才能开发出更强大的应用程序,这与现实情况出现了不小的反差,既不利于用户使用,也不利于Tinyfox的发展。

为了克服传统Tinyfox的不足,Tinyfox的原作者宇内流云先生(也是Jexus的作者)结合目前主流的Web系统的特点、.NET最新发展成果以及总结 Tinyfox 近10年来各类用户的需求规律,于2024年12月初开始对其进行了全新设计,并于2025年1月18日在nuget.org上发布了第一个全新的Tinyfox版本:Tinyfox v6.0.118。

新版Tinyfox有如下特点:

1,去除了OWIN协议。

新版Tinyfox的网络传输层与应用层紧密接合,不再使用OWIN协议进行转换、包装,不但进一步提升了性能,也大大简化了操作过程,降低了学习和使用门槛;

2,集成WebApi和WebSocket,新增“动态HTML”功能。

新版Tinyfox不再将应用层功能分散到 Tinyfox.FastWebApi 和 Tinyfox.WebSocket 等子框架中,而是与 Tinyfox 的 HTTP内核集成为一个整体。值得一提的是,新版Tinyfox在原生支持WebApi和WebSocket等“纯数据服务”的同时,还新增了对html文件的扩展支持,即“动态HTML”。“动态HTML”是通过在html文件中添加“标签”的方式使普通的html文件具备“动态性”(在html中对变量赋值、取值以及直接与宿主程序的函数互动)。动态HTML特性的加入,使Tinyfox具备了直接开发出具有UI界面的WEB网站程序的能力,而无需Asp.Net Core、Java Spring或PHP等等其它WEB框架或引擎的支持。

3,超轻量、极强的独立性、普适性和对.NET AOT天然支持。

新版Tinyfox所有功能集中在一个大小仅为200K字节左右的 .net dll中,通过nuget引用,不依赖任何第三方组件。

Tinyfox自带HTTP服务引擎,其通讯组件不使用.NET Socket的任何东西,完全基于操作系统底层函数并针对HTTP服务的特点进行原生开发。正因为这样,Tinyfox 无需 IIS、Jexus、Nginx 等外部WEB服务器的支持就能独立对外提供基于HTTP协议的高性能网络服务。

新版Tinyfox既支持.NET Frameowrk 4.5.1以上版本的传统.NET框架,也支持 .NET 6以上版本的.NET“新世界”,既支持Windows,也也支持Linux(包括“国产操作系统”),既支持x86/x86_64,也支持arm/aarch64,甚至还支持国产的龙芯CPU。它可以嵌入到任何.NET程序中,对目标环境具有广泛的适应性。为了支持.NET NativeAOT,新版Tinyfox的本身已去除了外部.NET程序集动态加载、动态反射等影响 NativeAOT 操作的相关代码,为用户基于Tinyfox打造独立性极强且源码安全的商业程序提供了框架层面的关键支持。

4,易用性、开放性与完整的开发文档。

简单易用是新版Tinyfox的最明显特点之一,它完全去除了旧版Tinyfox所使用的不易理解OWIN协议,用户无需再与任何原始协议打交道,仅需一句诸如“Fox.Router["/"] = _ => new TextResult("Hello")” 这样简单的代码就能实现数据输出,熟悉 c# 的朋友仅需认真看一看Tinyfox用户手册,快的只需要几分钟就能轻松上手。

为了不重蹈其它框架越做越大、越做越庞杂、越做越低效的覆辙,Tinyfox自身的开发设计严守“边界”二字,即,把全部精力用于网络层、WebApi、WebSocket和动态HTML等几个关键功能模块的优化完善和对外接口标准化建设方面,力求内核的高效、坚固,绝不轻易添加功能而突破设计“边界”。与此同时,为了适应不同用户的特定需求,新版Tinyfox不管是WebApi还是WebSokcet,它与用户应用层有关的基类都进行了开放,任何用户都可以根据其具体项目的需求对Tinyfox的功能进行自由派生、任意拓展。

旧版Tinyfox最缺的是开发文档,不少老用户在使用旧Tinyfox时,要么是依靠网上零散的技术博文自我摸索着使用,要么是与作者联系,在作者的指导下进行开发。为了克服这个不足,新版Tinyfox有了自己的“家”:官网 www.tinyfox.pro。现在,Tinyfox用户已经可以在Tinyfox官网上获取完整的Tinyfox用户手册,无需作者单独指导也无需自己作太多的摸索,就能掌握相对完整的Tinyfox使用方法和开发技能。

旧版Tinyfox是否继续维护,如何区分新旧Tinyfox? 

新版Tinyfox与旧版Tinyfox是两个完全不同的框架,但是,为了保证基于旧版Tinyfox所开发的应用程序的可持续性,我们会继续维护旧版Tinyfox(修复新发现的BUG、对内核关键代码持续优化)。新旧两版Tinyfox的分界线是它们的版本号,新版Tinyfox的版本号命名是从6.0开始的,只要是高于6.0的Tinyfox就是新版Tinyfox,传统Tinyfox的版本号将保持在4.x-5.x以内(目前最新的旧版TinyFox是 Tinyfox v4.2.9),因此,基于旧版Tinyfox开发的程序无需担心因新版Tinyfox的诞生而影响旧版的可持续性。

Tinyfox 发生重大改版的更多相关文章

  1. 一次I/O问题引发的P0重大故障[改版重推] 原创 二马读书 二马读书 8月16日 这是前段时间发的一篇文章,很多读者反馈,文章没有揭示故障发生的详细

    一次I/O问题引发的P0重大故障[改版重推] 原创 二马读书 二马读书 8月16日 这是前段时间发的一篇文章,很多读者反馈,文章没有揭示故障发生的详细

  2. 最详细的网站改版SEO优化指南:如何让排名不降反升

    我知道,网站改版很是让人头疼.首先,这个过程需要很长时间还有大量工作要做,并且通常结果不会如你的预期.其次,改版确实有破坏之前为 SEO 所做努力的风险. 但不要因为通常网站改版带来排名下降就认为这是 ...

  3. 知乎改版api接口之scrapy自动登陆

    最近使用scrapy模拟登陆知乎,发现所有接口都发生变化了,包括验证码也发生了很大变化,通过抓包分析,记录下改版后的知乎模拟登陆,废话不多说,直接上代码,亲测有效 # -*- coding: utf- ...

  4. Indy 10.5.8 for Delphi and Lazarus 修改版(2011)

    Indy 10.5.8 for Delphi and Lazarus 修改版(2011)    Internet Direct(Indy)是一组开放源代码的Internet组件,涵盖了几乎所有流行的I ...

  5. 苹果iOS11重磅改版App Store,开发者应该了解这些

    苹果在WWDC2017上重磅发布iOS11,其中一项重大更新就是对App Sore的全新改版,我们一起来看看具体有哪些变化,以及对我们会带来哪些影响. App Store的分类变化 在iOS10以前, ...

  6. SQLSERVER走起微信公众帐号全新改版 全新首页

    SQLSERVER走起微信公众帐号全新改版 全新首页 今天,SQLSERVER走起微信公众帐号增加了首页功能 虽然还是订阅号,不过已经对版面做了比较大的修改,希望各位亲用得放心.用得安心O(∩_∩)O ...

  7. Js new到底发生了什么

    在Js中,我们使用了new关键字来进行实例化 那么在这个new的过程中到底发生了什么? 关于构造函数的return 正常来讲构造函数中是不用写return语句的,因为它会默认返回新创建的对象. 但是, ...

  8. 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二)

    前言 文章 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 中,已经完成对 gulp 的安装,由于是window环境,文中特意提到了可以通过安装 gitbash 来代替 ...

  9. android 使用Tabhost 发生could not create tab content because could not find view with id 错误

    使用Tabhost的时候经常报:could not create tab content because could not find view with id 错误. 总结一下发生错误的原因,一般的 ...

  10. 解决vs创建或打开C++浏览数据库文件*.sdf时发生错误的问题

    VS2012,  创建或打开C++浏览数据库文件*.sdf时发生错误. IntelliSense 和浏览信息将不能用于C++项目. 请确保已安装 Microsoft SQL Server Compac ...

随机推荐

  1. 基于antlr的表达式解析器

    package formula; import java.util.HashMap; import java.util.List; import java.util.Map; import org.a ...

  2. .NET周刊【11月第4期 2024-11-24】

    国内文章 C# 入门深度学习:万字长文讲解微积分和梯度下降 https://www.cnblogs.com/whuanle/p/18551532 这篇文章主要介绍了使用 C# 进行深度学习的方法,特别 ...

  3. ELSTICSEARCH 将数据从热节点转到冷节点

    在ES查询时,有些数据是热点数据,这些数据是需要需要更好的机器配置的节点,当数据变得不是那么重要的时候,我们需要转到配置相对低的节点上. 比如热点新闻专题,我们需要更好的机器,热点过后,这些数据不再需 ...

  4. 服务迁移之《mysql数据同步问题》

    我们大概是从2022年十月份开始进行拆分的.面对一百多个服务的时候,真的是无从下手,然后公司突然空降了一个从阿里出来的架构师,然后就带着我们大刀阔斧的整体迁移. 先是服务器购买阿里云的,然后从几个核心 ...

  5. PM-如何优雅的抄袭代码?世上所有代码都是一大抄

    你借了我的思想,在我的思想上,发展出一套理好的思想. 你借了我的代码,在我的代码上,开发出一套理好的代码.   你们知道程序员最熟悉,最熟练,最常用的两个快捷键是哪两个吗?没错,估计你现在心中所想的就 ...

  6. 【Amadeus原创】HP惠普笔记本重装系统无法引导无法进操作系统的终极解决方法

    F9进入BIOS-先进(Advanced)-安全引导配置- 启用传统支持和禁用安全引导

  7. Java 提取字符串中xml格式内容

    @ 目录 前言 简介 总结 前言 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i. 提示:以下是本篇文章正文内容,下面案例可供参考 简介 在Java中,使用正则表达式来提取字符串中的XML格 ...

  8. Hive数据库【操作】+ 【分区】+【分桶】+【查询】+【运算】+【函数】

    目录 键值对信息 数据库表操作 内部表操作 外部表操作 分区表的操作 分桶表操作 数据查询 关系运算 数学运算 逻辑运算 数值计算 日期函数 键值对信息 添加数据库的描述信息(添加键值对信息) cre ...

  9. metasploit模块

    模块类型 辅助模块(Auxiliary) 渗透攻击模块(Exploits) 后渗透攻击模块(Post) 攻击载荷模块(Payloads) 空指令模块(Nops) 编码器模块(Encoders) 后渗透 ...

  10. Linux打印显示时间

    Linux打印显示时间具体使用参数如下: 1.输出当前年月日echo $(date +%F)2.输出当前时间(时分)echo $(date +%R)3.输出当前时间(时分秒)echo $(date + ...