What you might want to do is to use the callback system that is available in WCF Services. Since your callbacks can be on a different machine and not just locally, I think you would have a problem just putting the action in that way you had. You could setup something like this...
[ServiceContract(Name = "FeedbackService",
Namespace = "http://mycompany.com/FeedbackServices",
CallbackContract = typeof(IFeedbackAppProxyCallback),
SessionMode = SessionMode.Required)]
public interface IFeedbackAppProxy
{
[OperationContract]
void Subscribe();
[OperationContract]
void Unsubscribe();
}
public interface IFeedbackAppProxyCallback
{
[OperationContract(IsOneWay = true)]
void QuestionAnswered(Question q, Answer a);
}
Then in the implementation of the service for the subscribing you can add this...
IFeedbackAppProxyCallback callback;
public void Subscribe()
{
callback = OperationContext.Current.GetCallbackChannel<IFeedbackAppProxyCallback>();
}
public void Unsubscribe()
{
callback = null;
}
Then when you need to callback from the service you can just call...
callback.QuestionAnswered(questionThatWasAnswered, answerGiven);