v3.5.2025.1001
# ÓëÖ÷Á÷¿ò¼ÜµÄ¶Ô±È£¨gRPC / ASP.NET Core Minimal APIs£©
±¾ÎÄ¶Ô±È `NewLife.Remoting` Óë³£¼û .NET RPC/Web ¿ò¼ÜµÄ²îÒìÓëÈ¡Éᣬ±ãÓÚÔÚ²»Í¬³¡¾°ÏÂ×öÑ¡ÐÍ¡£
## ×ÜÀÀ
- ´«Êä²ã
- NewLife.Remoting£º`Tcp`/`Http`/`WebSocket`£¬¿É³¤Á¬½Ó£¬Ö§³ÖÁ¬½Ó³ØÓëµ¥Á¬½Óģʽ¡£
- gRPC£ºHTTP/2£¨±ØÐ裩£¬Ë«ÏòÁ÷¡¢·þÎñ¶Ë/¿Í»§¶ËÁ÷¡¢Unary µ÷Óá£
- Minimal APIs£ºHTTP/1.1/2/3£¬REST ÓѺã¬ÃæÏòÇëÇó/ÏìÓ¦¡£
- ÆõÔ¼ÓëÐòÁл¯
- NewLife.Remoting£ºÏûÏ¢ÆõÔ¼£¨`IMessage`/`ApiMessage`£©£¬Ä¬ÈÏ JSON£¬¿ÉÌæ»» `IEncoder`£¨`JsonEncoder`/`HttpEncoder`£©¡£
- gRPC£ºÇ¿ÆõÔ¼£¨.proto£©£¬Ä¬ÈÏ Protobuf£¨¸ßÐÔÄÜ¡¢¿çÓïÑÔ£©¡£
- Minimal APIs£ºHTTP/JSON£¬OpenAPI/Swagger Éú̬ÍêÉÆ¡£
- Á¬½ÓÓë²¢·¢
- NewLife.Remoting£º³¤Á¬½Ó/Á¬½Ó³Ø¡¢`Multiplex` ²¢·¢¸´Óá¢`ISocketClient` ʼþ»ØÍÆ£¨·þÎñ¶Ë¿ÉÖ÷¶¯ÍƵ¥ÏòÏûÏ¢£©¡£
- gRPC£ºHTTP/2 ¶à·¸´Óá¢Á÷ʽµ÷ÓÃÌìȻ֧³Ö¡£
- Minimal APIs£º¶ÌÁ¬½Ó»ò HTTP/2 ¸´Óã¬ÎÞ¡°»á»°¼¶¡±API ¸ÅÄî¡£
- ÈÏÖ¤ÓëÀ¹½Ø
- NewLife.Remoting£º`Token` ×¢Èë¡¢`IApiHandler`/`IApiManager` À©Õ¹¡¢`Received` ʼþ¡¢`ServiceProvider` ×¢Èë¡£
- gRPC£ºÀ¹½ØÆ÷¡¢ÔªÊý¾Ý£¨Metadata£©¡¢TLS/Token Éú̬³ÉÊì¡£
- Minimal APIs£ºÖмä¼þ£¨Middleware£©+ Éí·ÝÈÏÖ¤/ÊÚȨ×é¼þ¡£
- ¿É¹Û²âÐÔ
- NewLife.Remoting£º`ILog`¡¢`ITracer`¡¢Âýµ÷ÓÃ/´¦ÀíÈÕÖ¾¡¢`ICounter` ¶¨Ê±Í³¼Æ¡£`client.Tracer` ÊÜÈÕÖ¾¼¶±ð¿ØÖÆ£¨Debug ´ò¿ªÏêϸ Trace£©¡£
- gRPC£ºÆÕ±é²ÉÓà OpenTelemetry/Activity£»Éú̬Í걸¡£
- Minimal APIs£ºÍ¬ ASP.NET Core ¹ÜµÀÉú̬¡£
- ´íÎó±í´ï
- NewLife.Remoting£º`ApiCode`£¨»ò `UseHttpStatus` Çл» HTTP ״̬£©£¬Òì³£Ó³Éä¿É¶¨ÖÆ£¬Êý¾Ý¿âÒì³£ÍÑÃô¡£
- gRPC£º`StatusCode` + `RpcException`¡£
- Minimal APIs£ºHTTP ״̬Âë + Ô¼¶¨µÄ JSON ´íÎóÌå¡£
## ÊÊÓó¡¾°
- NewLife.Remoting
- ÄÚÍø/É豸³¡¾°ÐèÒª³¤Á¬½Ó¡¢Ë«ÏòÏûÏ¢£¨·þÎñ¶ËÖ÷¶¯ÍÆËÍ£©¡£
- ¸üÇáµÄ²¿ÊðÒÀÀµ£»ÎÞÐè .proto£»±àÂëÆ÷¿ÉÌæ»»¡£
- ×Ô¶¨ÒåÐÒé/±àÂë/ͳ¼ÆÐèÇóÇ¿£»Ðè½ÓÈëÏÖÓÐ `NewLife.*` Éú̬¡£
- gRPC
- ¿çÓïÑÔ¡¢Ç¿ÆõÔ¼¡¢¸ßÐÔÄܶþ½øÖÆ£»Ë«Ïò/Á÷ʽ½»»¥·á¸»£»Éú̬³ÉÊì¡£
- Minimal APIs
- ÃæÏò Web/REST µÄ¿ª·Å API£»Óëǰ¶Ë/µÚÈý·½¼¯³ÉÓѺ㻹¤¾ßÁ´ÍêÉÆ¡£
## ÄÜÁ¦Ó³Éä
- ÈÏÖ¤
- NewLife.Remoting£º²ÎÊý×¢Èë `Token`£¬»òÔÚ `OnLoginAsync` ÖÐÖ´ÐеǼ¶¯×÷£»·þÎñ¶Ë¿ÉÔÚ `IApiHandler` ÖÐͳһУÑé¡£
- gRPC£ºMetadata + Interceptor¡£
- Minimal APIs£ºAuth Öмä¼þ + ¹ýÂËÆ÷¡£
- ¸ºÔØÓëÁ¬½Ó¸´ÓÃ
- NewLife.Remoting£º`ICluster`£¨µ¥Á¬½Ó/Á¬½Ó³Ø£©¡¢`SetServer` ƽ»¬Çл»¡¢¿ÉÑ¡ `IRetryPolicy` ÖØÊÔ¡£
- gRPC£ºHTTP/2 ¶à·¸´Ó㬷þÎñ·¢ÏÖ/¸ºÔؾùºâͨ³£ÓÉÍø¹Ø»ò Sidecar Ìṩ¡£
- ¿É¹Û²âÐÔ
- NewLife.Remoting£º`SlowTrace` ãÐÖµÈÕÖ¾¡¢`ITracer` Á´Â·¶Î£¨°´ Debug ¼¶±ð´ò¿ªµ×²ã Socket Trace£©¡¢`ICounter` ÖÜÆÚͳ¼Æ¡£
## È¡ÉáÓë×¢Òâ
- ÇáÁ¿Óë×Ô¶¨ÒåÓÅÏÈ£ºÄ¬ÈÏ JSON£¬±ãÓÚÅÅÕÏÓ뼯³É£»ÈçÐè¸ü¸ßÐÔÄÜ£¬¿É×Ô¶¨Òå `IEncoder`£¨¶þ½øÖÆ£©¡£
- Á¬½ÓÄ£ÐÍ£º³¤Á¬½ÓÓëµ¥ÏòÍÆËͶÔÉ豸/ÄÚÍøÓѺã»ÃæÏò¿ª·Å Web µÄÇé¿öÏ£¬¿ÉÓÅÏÈÑ¡ REST/gRPC¡£
- ¿É¹Û²âÐÔ£º³£¹æÔËÐнµµÍ Trace Á¿¼¶£»ÅÅÕÏʱÌáÉýÈÕÖ¾¼¶±ðÖÁ Debug ¼´¿ÉÆôÓà Socket Trace¡£
- ÖØÊÔ£º`IRetryPolicy` Óë `MaxRetries` ĬÈϹرգ¬½ö¶Ô·Ç 401 Òì³£ÉúЧ£»401 ÄÚÖõǼºóÖØ·¢£¬²»¼ÆÈëÖØÊÔ¡£
## ¿ìËÙ¶ÔÕÕ±í£¨ÕªÒª£©
- ÆõÔ¼£ºÏûÏ¢£¨JSON/¿ÉÌæ»»£© | .proto/Protobuf | HTTP/JSON
- Á¬½Ó£º³¤Á¬½Ó/³Ø/¸´Óà | HTTP/2 ¸´ÓÃ/Á÷ | HTTP/1.1/2/3
- ÍÆËÍ£ºÖ§³Ö£¨µ¥Ïò£© | Ö§³Ö£¨Á÷£© | Ðè WebSocket/SignalR
- ÈÏÖ¤£ºToken ×¢Èë/µÇ¼¹³×Ó | Metadata/Interceptor | Middleware/Auth
- ¿É¹Û²âÐÔ£ºILog/ITracer/Counter | OTel/Activity | ASP.NET Core Éú̬
## ½áÂÛ
- ÈôÄãÐèÒªÇáÁ¿¡¢¿É×Ô¶¨ÒåÐÒé/±àÂë¡¢³¤Á¬½Ó/É豸ÓѺá¢Í³Ò»ÈÕÖ¾/×·×Ù/ͳ¼Æ£¬`NewLife.Remoting` ÊǺÏÊÊÑ¡Ôñ¡£
- ÈôÄãÐèҪǿÆõÔ¼¡¢¿çÓïÑÔ¡¢¶þ½øÖƸßÐÔÄÜ¡¢³ÉÊìÉú̬£¬ÇãÏò gRPC¡£
- ÃæÏò Web/µÚÈý·½¼¯³ÉÓÅÏÈ REST£¬Ñ¡Ôñ Minimal APIs¡£
|