Evento
Campionato do Mundo de Power BI DataViz
Feb 14, 4 PM - Mar 31, 4 PM
Con 4 posibilidades de entrar, poderías gañar un paquete de conferencias e facelo ao Live Grand Finale en Las Vegas
Máis informaciónEste explorador xa non é compatible.
Actualice a Microsoft Edge para dispoñer das funcionalidades máis recentes, as actualizacións de seguranza e a asistencia técnica.
Nota
Esta no es la versión más reciente de este artículo. Para la versión actual, consulte la versión de .NET 9 de este artículo.
Aviso
Esta versión de ASP.NET Core ya no se admite. Para obtener más información, consulte la directiva de compatibilidad de .NET y .NET Core. Para la versión actual, consulte la versión de .NET 9 de este artículo.
Importante
Esta información hace referencia a un producto en versión preliminar, el cual puede sufrir importantes modificaciones antes de que se publique la versión comercial. Microsoft no proporciona ninguna garantía, expresa o implícita, con respecto a la información proporcionada aquí.
Para la versión actual, consulte la versión de .NET 9 de este artículo.
Las nuevas características agregadas a una aplicación pueden requerir que los servicios gRPC que se proporcionan a los clientes cambien y, en ocasiones, que lo hagan de forma inesperada y repentina. Si cambian los servicios gRPC:
El protocolo gRPC está diseñado para admitir servicios que cambian con el tiempo. Por lo general, las adiciones a los servicios y métodos gRPC suponen cambios secundarios. Los cambios secundarios permiten a los clientes existentes seguir trabajando como de costumbre. La modificación o la eliminación de los servicios gRPC producen cambios importantes. Si un servicio gRPC sufre cambios importantes, los clientes que lo usen deberán actualizarse y volver a implementarse.
La realización de cambios secundarios en un servicio tiene una serie de ventajas:
Los siguientes cambios son secundarios a nivel del protocolo gRPC y a nivel binario de .NET.
Los siguientes cambios son secundarios en el nivel del protocolo gRPC, pero es necesario actualizar el cliente si pasa a usar el contrato .proto
o el ensamblado .NET de cliente más reciente. La compatibilidad binaria es importante si tiene previsto publicar una biblioteca de gRPC en NuGet.
csharp_namespace
, cambiará el espacio de nombres de los tipos .NET generados. No se trata de un cambio importante del protocolo gRPC, pero el cliente debe actualizarse si pasa a usar el contrato más reciente.Los elementos siguientes son cambios binarios y de protocolo importantes:
Al realizar cambios secundarios, también debe tener en cuenta si los clientes más antiguos pueden seguir trabajando con el nuevo comportamiento del servicio. Por ejemplo, agregar un nuevo campo a un mensaje de solicitud:
La compatibilidad con el comportamiento la determina el código específico de su aplicación.
Es conveniente procurar que los servicios sigan siendo compatibles con versiones anteriores de los clientes antiguos. Es posible que los cambios realizados en la aplicación requieran cambios importantes. Introducir cambios en los clientes antiguos y exigir su actualización con un servicio nuevo no es una buena experiencia de usuario. Una manera de mantener la compatibilidad con versiones anteriores al realizar cambios importantes es publicar varias versiones de un servicio.
gRPC admite un especificador de paquete opcional, que funciona de manera muy similar a un espacio de nombres de .NET. De hecho, se usará package
como espacio de nombres de .NET para los tipos de .NET generados si no se establece option csharp_namespace
en el archivo .proto
. El paquete se puede usar para especificar un número de versión para el servicio y sus mensajes:
syntax = "proto3";
package greet.v1;
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
El nombre del paquete se combina con el nombre del servicio para identificar una dirección de servicio. Una dirección de servicio permite hospedar varias versiones de un servicio en paralelo:
greet.v1.Greeter
greet.v2.Greeter
Las implementaciones del servicio con versiones se registran en Startup.cs
:
app.UseEndpoints(endpoints =>
{
// Implements greet.v1.Greeter
endpoints.MapGrpcService<GreeterServiceV1>();
// Implements greet.v2.Greeter
endpoints.MapGrpcService<GreeterServiceV2>();
});
Incluir un número de versión en el nombre del paquete le permite publicar una versión v2 de su servicio con cambios importantes, a la vez que continúa admitiendo clientes más antiguos que llaman a la versión v1. Una vez que los clientes se hayan actualizado para usar el servicio v2, podrá eliminar la versión anterior. A la hora de planificar la publicación de varias versiones de un servicio:
Al publicar varias versiones de un servicio, este se duplica. Para reducir la duplicación, le recomendamos mover la lógica de negocios de las implementaciones de servicio a una ubicación centralizada que se pueda reutilizar en las implementaciones antiguas y nuevas:
using Greet.V1;
using Grpc.Core;
using System.Threading.Tasks;
namespace Services
{
public class GreeterServiceV1 : Greeter.GreeterBase
{
private readonly IGreeter _greeter;
public GreeterServiceV1(IGreeter greeter)
{
_greeter = greeter;
}
public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
{
return Task.FromResult(new HelloReply
{
Message = _greeter.GetHelloMessage(request.Name)
});
}
}
}
Los servicios y mensajes generados con distintos nombres de paquetes son diferentes tipos de .NET. Mover la lógica de negocios a una ubicación centralizada requiere la asignación de mensajes a tipos comunes.
Comentarios de ASP.NET Core
ASP.NET Core é un proxecto de código aberto. Selecciona unha ligazón para ofrecer comentarios:
Evento
Campionato do Mundo de Power BI DataViz
Feb 14, 4 PM - Mar 31, 4 PM
Con 4 posibilidades de entrar, poderías gañar un paquete de conferencias e facelo ao Live Grand Finale en Las Vegas
Máis informaciónFormación
Módulo
Implementación de una estrategia de control de versiones - Training
Implementación de una estrategia de control de versiones