ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Vladimir Ozerov <voze...@gridgain.com>
Subject New thin client and interfaces/facades
Date Tue, 12 Sep 2017 09:42:18 GMT

We are developing new thin client. There are two approaches on how to
design it's interfaces - either re-use existing Ignite interfaces, or
define new.  Both approaches has pros and cons

*1) Re-use interfaces*
This approach is used in Hazelcast. Both server and client share the same

- excellent UX, switching from server to client is a matter of changing
several lines of code
- first versions of our client would have very limited API support, so
users would have wrong impression that client is very rich, while in
reality most methods will throw "UnsupportedOperationException". This is
- Client and server interfaces will be locked forever, which might not be
appropriate in certain cases. E.g. thin client might decide to execute
"ComputeTask" inside the cluster, but ComputeTasl is not Serializable, so
it cannot be re-used.

*2) Separate interfaces*
E.g. we will have "IgniteCache" and "IgniteClientCache", "IgniteCompute"
and "IgniteClientCompute", etc.

- Only really supported stuff is exposed to API
- Separate code for thin client and (server, thick client) modes

I would definitely prefer the first approach with shared interfaces, but a
lot "UnsupportedOperationException" in the first versions scares me.

What do you think?


  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message