Tinyfox 发生重大改版
于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 发生重大改版的更多相关文章
- 一次I/O问题引发的P0重大故障[改版重推] 原创 二马读书 二马读书 8月16日 这是前段时间发的一篇文章,很多读者反馈,文章没有揭示故障发生的详细
一次I/O问题引发的P0重大故障[改版重推] 原创 二马读书 二马读书 8月16日 这是前段时间发的一篇文章,很多读者反馈,文章没有揭示故障发生的详细
- 最详细的网站改版SEO优化指南:如何让排名不降反升
我知道,网站改版很是让人头疼.首先,这个过程需要很长时间还有大量工作要做,并且通常结果不会如你的预期.其次,改版确实有破坏之前为 SEO 所做努力的风险. 但不要因为通常网站改版带来排名下降就认为这是 ...
- 知乎改版api接口之scrapy自动登陆
最近使用scrapy模拟登陆知乎,发现所有接口都发生变化了,包括验证码也发生了很大变化,通过抓包分析,记录下改版后的知乎模拟登陆,废话不多说,直接上代码,亲测有效 # -*- coding: utf- ...
- Indy 10.5.8 for Delphi and Lazarus 修改版(2011)
Indy 10.5.8 for Delphi and Lazarus 修改版(2011) Internet Direct(Indy)是一组开放源代码的Internet组件,涵盖了几乎所有流行的I ...
- 苹果iOS11重磅改版App Store,开发者应该了解这些
苹果在WWDC2017上重磅发布iOS11,其中一项重大更新就是对App Sore的全新改版,我们一起来看看具体有哪些变化,以及对我们会带来哪些影响. App Store的分类变化 在iOS10以前, ...
- SQLSERVER走起微信公众帐号全新改版 全新首页
SQLSERVER走起微信公众帐号全新改版 全新首页 今天,SQLSERVER走起微信公众帐号增加了首页功能 虽然还是订阅号,不过已经对版面做了比较大的修改,希望各位亲用得放心.用得安心O(∩_∩)O ...
- Js new到底发生了什么
在Js中,我们使用了new关键字来进行实例化 那么在这个new的过程中到底发生了什么? 关于构造函数的return 正常来讲构造函数中是不用写return语句的,因为它会默认返回新创建的对象. 但是, ...
- 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二)
前言 文章 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 中,已经完成对 gulp 的安装,由于是window环境,文中特意提到了可以通过安装 gitbash 来代替 ...
- 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 错误. 总结一下发生错误的原因,一般的 ...
- 解决vs创建或打开C++浏览数据库文件*.sdf时发生错误的问题
VS2012, 创建或打开C++浏览数据库文件*.sdf时发生错误. IntelliSense 和浏览信息将不能用于C++项目. 请确保已安装 Microsoft SQL Server Compac ...
随机推荐
- CommonsCollections3(基于ysoserial)
环境准备 JDK1.7(7u80).commons-collections(3.x 4.x均可这里使用3.2版本).javassist(3.12.1.GA) JDK:https://repo.huaw ...
- php操作sqlite3
距离上次接触sqlite3已经快一年了,去年这篇文章讲跟着菜鸟教程学python操作sqlite3,https://www.cnblogs.com/lizhaoyao/p/13717381.html ...
- js+jquery实现贪吃蛇经典小游戏
项目只使用到了html,css,js,jquery技术点,没有使用游戏框架,下载本地直接双击index.html 运行即可体验游戏效果. 项目展示 进入游戏 游戏开始 游戏暂停 html文件 < ...
- 深度探讨Java字节代码的操纵方法
本文为IBM工程师成富编写的<Java深度历险>的第一部分Java字节代码的操纵,像这样Java语言的深度理解和运用还没有很多文章,我们把他奉献给读者,希望读者们喜欢. AD:2013云计 ...
- C语言八股文(温故知新)
1.volatile关键字 volatile int i=10; int j = i; ... int k = i; volatile告诉编译器i变量是随时可能发生变化的,例如IO端口的输入值,所以每 ...
- PHP之常见问题
汇总在PHP开发中遇到的一些问题 1.post提交参数缺失 场景: 在前端页面发起一个post提交的时候,查看payload中的数据是正常的, 但是在接收的时候,发现只有部分数据,算了一下,包含的数据 ...
- Python 证件照换底色
# -*- coding: utf-8 -*- ''' @Time : 2021/4/12 19:06 @Author : 水一RAR ''' import numpy as np import cv ...
- kubernetes上报Pod已用内存不准问题分析
1.问题描述: 经常有业务反馈在使用容器云平台过程中监控展示的业务使用内存不准,分析了下kubernetes采集Pod内存使用的实现原理以及相应的解决思路 2.问题分析: 2.1 问题排查: 监控数据 ...
- Qt血的教训/细数Qt开发的各种坑/又爱又恨/欢迎围观留言评论
一.吐槽总结 搞Qt开发十几年了,最初从Qt4.6开始,一直追新到现在的6.7版本,中间经历过无数的血的教训,简直是又爱又恨.其实Qt挺好的,但是还是要忍不住吐槽一下,本人还是希望Qt发展的越来越好, ...
- 解决pip命令报错及Python环境配置指南:从安装到优化
1. 错误日志 当我在 Linux 机器(使用 Debian 或 Ubuntu 或衍生发行版)上运行 pip install xyz 时,会出现这样的错误: error: externally-man ...