I have a service implementing the following contract:
[OperationContract(IsOneWay = true)]
void Execute(IList<SomeObject> someObjects);
In order to avoid stalling on caller side (which taking a few seconds when latency is high) I want to change the contract to async pattern:
[OperationContract]
void Execute(IList<SomeObject> someObjects);
[OperationContract(AsyncPattern = true)]
IAsyncResult BeginExecute(IList<SomeObject> someObjects, AsyncCallback asyncCallback, object state);
void EndExecute(IAsyncResult asyncResult);
The problem: I won't be able to upgrade the implementation side, due to production limitation.
I ran it and found that everything behave as expected, except that the end callback is being called only when the channel is closed.
The question is: would I suffer from any performance issues, memory leaks, or other issues I haven't thought of?