Hello DevExpress,
Let me explain the problem in general.
Most modern software products have several UI client applications (Desktop, Web, Mobile). UI applications are consuming the same web services to get data.
Lets say client UI has to get from web service the list of orders. We could implement one "GetOrders" method in web service and use it from all types of UI client applications. How we are getting data from web service is not depend from your controls.
The problem appears when your controls are involved in data retrieval logic. That is happening for data grid and combobox in "server" or "virtual" mode. In some way (defined by you), the information about next portion of data has to be passed to web service, than at web service, that information has to be converted to queries to database and reverted back to UI client.
Lets check how "GetOrders" method could be implemented for desktop and web UI clients in this case:
- Desktop. For WinForms xtraGrid and Combobox in "server" mode you provide only WCF or ODATA web services implementations. WCF is out of question as is not supported, ODATA - is too complicated just for read only operations.
- Web. Grid and Combobox have "virtual" mode, where CustomData event together with DevExtreme.AspNet.Data package are providing a elegant way to pass DataSourceLoadOptions to web service, convert it using EF or XPO to database queries and revert back a result.
So, just to get a list of orders from web service, the same logic has to be implemented twice, using totally different approaches for different UI clients. That is too complicated to implement and support, especially in huge enterprise software.
We would like to have one web service method "GetOrders" which could be reused by any UI client. As for me, I like the way how it is implemented using DevExtreme.AspNet.Data package.
Now why gRPC:
- Much more faster.
- Due to code generation, much more developer friendly. No needs for external packages, like nswag to generate clients.
- Easy to share *.proto file between projects/solutions
- Is a part of .net. Recommended by Microsoft.
Suggestion: Provide a easy way to implement gRPC web service method, which could be used to get data for any your control (Desktop or Web) in "server/virtual" mode.
Hope I was able to explain problems we are facing in a clear way.
Regards, Konstantin