I agree with everyone's notes here and I've certainly used both in high-throughput, high transaction volume situations very successfully.
There are some big differences, because of the functional difference in the underlying protocol, in the levers you have and can use to tune performance. WSI rides on an HTTP connection, so your tuning is limited to the adjustable parameters of that protocol and optimizations to server-side processing tasks. EJB rides on an ORB connection which is, in my experience, a more complex to tune protocol--simply because it has more levers to pull. I have found myself spending more time and energy squeezing every drop of throughput from EJB and being more easily able to over tune or tune too heavily to a specific workload (i.e. Workflow vs Content requests). See, adjusting the 1Mb block size,
@Michael Seaman noted above, to reduce the number of RPC calls for a specific PE request type in the context of a specific workflow... Now in that extreme case, EJB outperformed WSI, but the effort required to do it was very large and the need to handle a billion plus workflow requests in 8 hours (3-5x peak production load) was a unique requirement.
The API performance concern on my mind is GraphQL... It runs in a separate context and is, effectively, translating requests from GraphQL JSON formatted REST to XML formatted SOAP and forwarding them to the WSI endpoint. I'm curious if anyone has done any testing there to determine if the overhead causes issues? I haven't had a need to so far...
------------------------------
Eric Walk
Director
O: 617-453-9983 | NASDAQ: PRFT | Perficient.com
------------------------------