Giter VIP home page Giter VIP logo

stantoxt / natasha Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dotnetcore/natasha

0.0 2.0 0.0 24.73 MB

基于 Roslyn 的 C# 动态程序集构建库,该库允许开发者在运行时使用 C# 代码构建域 / 程序集 / 类 / 结构体 / 枚举 / 接口 / 方法等,使得程序在运行的时候可以增加新的模块及功能。Natasha 集成了域管理/插件管理,可以实现域隔离,域卸载,热拔插等功能。 该库遵循完整的编译流程,提供完整的错误提示, 可自动添加引用,完善的数据结构构建模板让开发者只专注于程序集脚本的编写,兼容 stanadard2.0 / netcoreapp3.0+, 跨平台,统一、简便的链式 API。 且我们会尽快修复您的问题及回复您的 issue.

Home Page: https://natasha.dotnetcore.xyz/

License: MIT License

C# 100.00%

natasha's Introduction

中文 | English

你们的反馈是我的动力,文档还有很多不足之处;

当你看完文档之后仍然不知道如何实现你的需求,您可以查看 FAQ 或者在issue中提出你的需求。

Natasha

Member project of .NET Core Community NuGet Badge Gitter Badge GitHub license

    基于 Roslyn 的 C# 动态程序集构建库,该库允许开发者在运行时使用 C# 代码构建域 / 程序集 / 类 / 结构体 / 枚举 / 接口 / 方法等,使得程序在运行的时候可以增加新的模块及功能。Natasha 集成了域管理/插件管理,可以实现域隔离,域卸载,热拔插等功能。 该库遵循完整的编译流程,提供完整的错误提示, 可自动添加引用,完善的数据结构构建模板让开发者只专注于程序集脚本的编写,兼容 netcoreapp2.0+ / netcoreapp3.0+, 跨平台,统一、简便的链式 API。 且我们会尽快修复您的问题及回复您的 issue.
更多的动图展示

展示



类库信息(Library Info)

GitHub tag (latest SemVer) GitHub repo size GitHub commit activity Codecov

Script .NET Env Document
Compile standard standard standard standard wiki
CI Platform Build Server Master Build
Github os Build status
Azure Windows Build Status
Azure linux Build Status
Azure mac Build Status


使用方法(User Api):

顺序 操作行为 操作内容 说明
1 引类库 DotNetCore.Natasha.CSharp.All 该页面提供最新版操作,旧版详见
2 初始化 NatashaInitializer.InitializeAndPreheating(); / Initialize(); 预热会慢一点,后面编译就快了,也可以只初始化不预热
3 写代码 使用说明 https://natasha.dotnetcore.xyz/ 可联系作者: [email protected]查看FAQ提出问题


发布日志

最新发布

v2.1.0.0

  • 2021/05/09
    • 优化引擎, 精简编译流程, 移除不常用事件.

    • 域增加 AddReferenceFrom[Type/Type/Assembly] 3种添加引用的 API.

    • 反解器增加扩展方法:

      • GetDevelopNameWithoutFlag 获取无标志类型名 : System.Collections.Generic.List<>
      • GetDevelopName 获取全类型名 : System.Collections.Generic.List<T>
      • GetRuntimeName 获取运行时类名 : List<int>
    • 增加强名编译.

    • 规范文件结构以及辅助类命名.



生态周边

维护状态 项目名称 项目地址 项目简介
flag DynamicProxy Github 基于 Natasha 的高性能接口动态代理,支持多参数初始化和单例模式
flag Libra Github 基于 Natasha 和 DynamicDictionary 的高性能,弱约束的 Http 协议 RPC 库
flag NatashaPad Github 由 Roslyn 和 Natasha 支持的另一种dotnet调试工具,如 LinqPad 和 dotnet fiddle
flag Leo Github 基于 Natasha 和 查找树算法的高速反射类,可以操作对象的属性以及字段
flag DeepClone Github 由 Natasha 的高性能深度克隆库
flag BTFindTreee Github 快速查找算法的构建,包括哈希二分查找,字串模糊查找,字串归并精确查找
flag Papper Github 对语法树解析库,主要目标时服务于 SG(Source Generator)技术
flag RuntimeToDynamic Github 将运行时数据压入到动态代理类中,以方便其他动态构建时对其进行复用
flag DynamicDictionary Github 高速动态缓存,在只读并发场景中提供超高性能的数据查找功能
flag Aries Github 对 FreeSql 的高度封装,提供高性能、直观的 外联 / 乐观锁 / CURD 操作

Note:
flag : 维护且更新活跃,需求充足.
flag : 维护但需求较少, 按需更新发布.
flag : 需求极少, 暂不维护.



开发计划

2.0+ 计划

  • 编写英文文档,以后将以英文文档为主
  • 以微服务组件开发为主, "自研组件"作为 Natasha 的甲方.
  • 调研 .NET6 中性能优化的新特性
  • 发现并补充 UT 测试
  • 挣钱, 生存下来

周边项目计划

  • BTF 算法

    • 每周定时跑算法随机测试程序
    • 持续评估 span 序列比较方法 及 指针转换比较 的性能
    • 评估 Trie 及变种 与 BTF 算法的性能差距
  • 元数据

    • 优化性能
    • 精确解析
    • 持续评估封装架构的设计方案
  • 改造 Leo

    • 持续优化性能
    • 私有支持
    • 评估是否支持 AOP
    • 评估 Leo 代理方式 和 DynmaicDictionary 代理方式 在 R2D 模板下的异同及抽象
    • 优化静态自动机代码
    • 使用委托指针优化性能
  • 依赖还原库

    • NET 模块
    • NUGET 模块
    • FOLDER SCAN 模块
    • 跨平台 模块
  • 定制语法/语法糖 to Natasha

  • 持续评估 Natasha 在灵活授权模型上的应用

  • 持续搜集反编译的需求

  • 调研 JAVA to C#

  • 调研 GO to C#

  • 考虑要不要调研 PHP to C#

  • 谁能来帮我一起搞,帮我点上左边的小对号?

欢迎大家提交PR



性能测试

  • 动态初始化性能测试(对照组: emit, origin)
    初始化性能测试
  • 内存及CPU监测截图
    内存及CPU


赞助:

捐助明细

  • ****天下 10元
  • 文航 5元
  • TonyQu 10元


License

FOSSA Status

natasha's People

Contributors

alexinea avatar fs7744 avatar mzorec avatar nmsazulx avatar ran-snow avatar weihanli avatar wlclass avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.