Giter Club home page Giter Club logo

tars.csharp's Introduction

[give up] 所有内容现已在 https://github.com/TarsNET 重新开始

Tars.Csharp

Tars.Csharp 是 https://github.com/Tencent/Tars 的 dotnet 版本

项目基于 netstandard2.0 标准

(ps:其实理论1.3就够了, 但为了偷懒,所以没有检查所有api在1.3的支持情况)

PS

目前项目处于刚起步阶段,暂未完善

初期目标如下:

  • Tars rpc server and client simple Demo

  • Tars rpc 协议解析完善 (大致整理了,但未作完整测试,并且代码应该可以进行优化)

  • 方法重载支持 (虽支持,但导致与tars不统一,接下来会统一规范形式)

  • Client 同步 / 异步 / 单向调用 区分处理与server端方法对应处理

    (实际 Tars 并不支持方法重载,server端只能有唯一的方法,只是client允许定义同一方法的不同调用形式)

    同步 - 普通方法

    异步 - Task / ValueTask 方法 (建议用 Async 方法名后缀标识,内部会处理与Tars统一,不用担心方法名不一致)

    单向 - 任意方法加 TarsOnewayAttribute (由于使用TAP,所以无法区分 异步与单向, 只能通过Attribute识别)

  • Servant 定位路由 (实际已支持,至于配置需要结合Tars配置文件才行)

tars.csharp's People

Contributors

fs7744 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

tars.csharp's Issues

整理

  1. 如下附件简单整理tars 包含的功能
    Tars.csharp.zip

  2. csharp 已具有同步形式的 async/await
    所以个人觉得不必考虑阻塞式实现方式,纯异步非阻塞多好

  3. client 可采用aop框架生成代理类,用TaskCompletionSource + callback 记录表 支持async/await

  4. callback 记录表 可用 ConcurrentDictionary 实现
    暂时没有想到还有什么数据结构更适合这个

  5. AspectCore-Framework aop 框架 功能非常强大
    但是rpc的话,有个问题,无法区分 service 和 client 的代理, 这个需要研究下方法

  6. 之前做demo的时候,感觉 tars编码实现有地方还有优化
    比如:减少中间byte数组创建

  7. log 功能可以 基于Microsoft.Extensions.Logger 扩展 tars logger LogF.tars

  8. config 功能 基于Microsoft.Extensions.Config 扩展 tars config ConfigF.tars

  9. 先基于 https://github.com/Azure/DotNetty 完整实现tcp所有功能后,我们再考虑其他内容哇

  10. 找一个统一的地方列举以及讨论问题以及issue

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.