История изменений
Исправление upcFrost, (текущая версия) :
А чего, вот эти сообщения SayA, SayB они прямо сильно разные?
Да, например параметры пуша со всеми кнопками/звуками будут сильно отличаться от параметров письма. И как раз пуш и письмо в 90% случаев надо слать вместе на одно действие.
Имхо, тебе тогда проще в .proto объявить enum типов сообщений и потом в SendNotification сделать поле тип сообщения, а сами сообщения - таки да передавать просто массивом байтов (внути хоть JSON, хоть черт лысый) и разбирать на клиенте.
Это any по факту. Минус code completion и проверки, плюс пачка геморроя с его разбором. А с вариантом енум+bytes нужно будет ещё больше кастомной логики (any можно хоть как-то разобрать штатными средствами, пусть и через пачку if и/или рефлекшн/getattr)
И кстати огромный минус any - оно очень implementation-specific. Например у меня в модуле А используется ванильная шлаколиба, в Б - более человечный protoplus, а в В вообще betterproto. И вот они все бинарно совместимы, но разобрать any из-за косяков с typeUrl во всех трех реализациях будет геморройно.
Можно было б красиво сделать через extension, но их выпилили, а мигрировать на proto2 это та ещё задача
Исправление upcFrost, :
А чего, вот эти сообщения SayA, SayB они прямо сильно разные?
Да, например параметры пуша со всеми кнопками/звуками будут сильно отличаться от параметров письма. И как раз пуш и письмо в 90% случаев надо слать вместе на одно действие.
Имхо, тебе тогда проще в .proto объявить enum типов сообщений и потом в SendNotification сделать поле тип сообщения, а сами сообщения - таки да передавать просто массивом байтов (внути хоть JSON, хоть черт лысый) и разбирать на клиенте.
Это any по факту. Минус code completion и проверки, плюс пачка геморроя с его разбором. А с вариантом енум+bytes нужно будет ещё больше кастомной логики (any можно хоть как-то разобрать штатными средствами, пусть и через пачку if и/или рефлекшн/getattr)
И кстати огромный минус any - оно очень implementation-specific. Например у меня в модуле А используется ванильная шлаколиба, в Б - более человечный protoplus, а в В вообще betterproto. И вот они все бинарно совместимы, но разобрать any из-за косяков с typeUrl во всех трех реализациях будет геморройно.
Исправление upcFrost, :
А чего, вот эти сообщения SayA, SayB они прямо сильно разные?
Да, например параметры пуша со всеми кнопками/звуками будут сильно отличаться от параметров письма. И как раз пуш и письмо в 90% случаев надо слать вместе на одно действие.
Имхо, тебе тогда проще в .proto объявить enum типов сообщений и потом в SendNotification сделать поле тип сообщения, а сами сообщения - таки да передавать просто массивом байтов (внути хоть JSON, хоть черт лысый) и разбирать на клиенте.
Это any по факту. Минус code completion и проверки, плюс пачка геморроя с его разбором. А с вариантом енум+bytes нужно будет ещё больше кастомной логики (any можно хоть как-то разобрать штатными средствами, пусть и через пачку if и/или рефлекшн/getattr)
И кстати огромный минус any - оно очень implementation-specific. Например у меня в модуле А исполняется ванильная шлаколиба, а в Б - более человечный protoplus. А в В вообще betterproto. И вот они все бинарно совместимы, но разобрать any из-за косяков с typeUrl во всех трех реализациях будет геморройно.
Исправление upcFrost, :
А чего, вот эти сообщения SayA, SayB они прямо сильно разные?
Да, например параметры пуша со всеми кнопками/звуками будут сильно отличаться от параметров письма. И как раз пуш и письмо в 90% случаев надо слать вместе на одно действие.
Имхо, тебе тогда проще в .proto объявить enum типов сообщений и потом в SendNotification сделать поле тип сообщения, а сами сообщения - таки да передавать просто массивом байтов (внути хоть JSON, хоть черт лысый) и разбирать на клиенте.
Это any по факту. Минус code completion и проверки, плюс пачка геморроя с его разбором. А с вариантом енум+bytes нужно будет ещё больше кастомной логики (any можно хоть как-то разобрать штатными средствами, пусть и через пачку if и/или рефлекшн/getattr)
Исходная версия upcFrost, :
А чего, вот эти сообщения SayA, SayB они прямо сильно разные?
Да, например параметры пуша со всеми кнопками/звуками будут сильно отличаться от параметров письма. И как раз пуш и письмо в 90% случаев надо слать вместе на одно действие.
Имхо, тебе тогда проще в .proto объявить enum типов сообщений и потом в SendNotification сделать поле тип сообщения, а сами сообщения - таки да передавать просто массивом байтов (внути хоть JSON, хоть черт лысый) и разбирать на клиенте.
Это any по факту. Минус code completion, плюс пачка геморроя с его разбором. А с вариантом енум+bytes нужно будет ещё больше кастомной логики (any можно хоть как-то разобрать штатными средствами, пусть и через пачку if и/или рефлекшн/getattr)