v3.5.2025.1001
大石头 authored at 2025-10-02 01:20:22
3.31 KiB
NewLife.Remoting
# ÓëÖ÷Á÷¿ò¼ÜµÄ¶Ô±È£¨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¡£