static void Main(string[] args) { //Change headnode here const string headnode = "head.contoso.com"; const string serviceName = "CommonData.PrimeFactorization"; SessionStartInfo info = new SessionStartInfo(headnode, serviceName); Random random = new Random(); try { //create an interactive session using (Session session = Session.CreateSession(info)) { Console.WriteLine("Session {0} has been created", session.Id); using (BrokerClient <IPrimeFactorization> client = new BrokerClient <IPrimeFactorization>(session)) { //send request int num = random.Next(1, Int32.MaxValue); FactorizeRequest request = new FactorizeRequest(num); client.SendRequest <FactorizeRequest>(request, num); client.EndRequests(); //get response foreach (BrokerResponse <FactorizeResponse> response in client.GetResponses <FactorizeResponse>()) { int number = response.GetUserData <int>(); int[] factors = response.Result.FactorizeResult; Console.WriteLine("{0} = {1}", number, string.Join <int>(" * ", factors)); } } session.Close(); Console.WriteLine("done"); Console.WriteLine("Press any key to exit"); Console.ReadKey(); } } catch (System.Exception ex) { Console.WriteLine(ex.Message); } }
static void Main(string[] args) { //change headnode name and service name SessionStartInfo info = new SessionStartInfo("head.contoso.com", "PrimeFactorizationService"); try { //Create a durable session DurableSession session = DurableSession.CreateSession(info); Console.WriteLine("Session {0} has been created", session.Id); //Send batch request Random random = new Random(); const int numRequests = 100; using (BrokerClient <IPrimeFactorization> client = new BrokerClient <IPrimeFactorization>(session)) { Console.WriteLine("Sending {0} requests...", numRequests); for (int i = 0; i < numRequests; i++) { int number = random.Next(1, Int32.MaxValue); FactorizeRequest request = new FactorizeRequest(number); //The second param is used to identify each request. //It can be retrieved from the response. client.SendRequest <FactorizeRequest>(request, number); } client.EndRequests(); Console.WriteLine("All the {0} requests have been sent", numRequests); Console.WriteLine("Press any key to exit"); Console.ReadKey(); } } catch (System.Exception ex) { Console.WriteLine(ex.Message); } }
static void Main(string[] args) { //Change headnode here const string headnode = "head.contoso.com"; const string serviceName = "PrimeFactorizationService"; SessionStartInfo info = new SessionStartInfo(headnode, serviceName); //Enable session pool info.ShareSession = true; info.UseSessionPool = true; try { //create an interactive session using (Session session = Session.CreateSession(info)) { Console.WriteLine("Session {0} has been created", session.Id); //in one session, each broker client should have a unique id string ClientId = Guid.NewGuid().ToString(); //use this event sync main thread and callback AutoResetEvent done = new AutoResetEvent(false); using (BrokerClient <IPrimeFactorization> client = new BrokerClient <IPrimeFactorization>(ClientId, session)) { Console.WriteLine("BrokerClient {0} has been created", ClientId); //set callback function. this handler will be invoke before service replies. client.SetResponseHandler <FactorizeResponse>((response) => { int number = response.GetUserData <int>(); int[] factors = response.Result.FactorizeResult; Console.WriteLine("{0} = {1}", number, string.Join <int>(" * ", factors)); //release the lock done.Set(); }); Random random = new Random(); int num = random.Next(1, Int32.MaxValue); //send request FactorizeRequest request = new FactorizeRequest(num); client.SendRequest <FactorizeRequest>(request, num); client.EndRequests(); //wait until callback returns done.WaitOne(); } Console.WriteLine("Factorization done."); Console.WriteLine("Press any key to exit"); Console.ReadKey(); } } catch (System.Exception ex) { Console.WriteLine(ex.Message); } }