public static void RunPerformanceTest(PersonRegistryClient client) { var sw = new Stopwatch(); sw.Start(); client.GetDemographicsAsync(CreateGetDemographicsRequest(new II(IdNumberOid.FhNumber, CreateRandomFhNumber()))); sw.Stop(); Console.WriteLine("Initial request: " + sw.Elapsed); sw.Restart(); const int numRequests = 1000; for (var i = 0; i < numRequests; ++i) { client.GetDemographicsAsync(CreateGetDemographicsRequest(new II(IdNumberOid.FhNumber, CreateRandomFhNumber()))); } sw.Stop(); Console.WriteLine("{0} subsequent requests: {1} ({2} ms per request)", numRequests, sw.Elapsed, sw.ElapsedMilliseconds / numRequests); sw.Restart(); const int numIndividualRequests = 100; for (var i = 0; i < numIndividualRequests; ++i) { using (var c = Program.CreateClient()) { c.GetDemographicsAsync(CreateGetDemographicsRequest(new II(IdNumberOid.FhNumber, CreateRandomFhNumber()))); } } sw.Stop(); Console.WriteLine("{0} individual requests: {1} ({2} ms per request)", numIndividualRequests, sw.Elapsed, sw.ElapsedMilliseconds / numIndividualRequests); const int numThreads = 20; var threads = new Thread[numThreads]; for (int i = 0; i < numThreads; ++i) { threads[i] = new Thread(ThreadTester); threads[i].Start(i); } foreach (var thread in threads) { thread.Join(); } }
internal static void GetDemographics(PersonRegistryClient client) { string idNumber = ReadLineAndTrim("Enter id number: "); if (string.IsNullOrWhiteSpace(idNumber)) { return; } var id = new II { root = GetIdOid(idNumber.Trim()), extension = idNumber.Trim() }; PRPA_IN101307NO01 request = CreateGetDemographicsRequest(id); GetDemographicsRequestSerializer.Serialize(Console.Out, request); Console.WriteLine("\n"); PRPA_IN101308NO01 response = client.GetDemographicsAsync(request).Result; GetDemographicsResponseSerializer.Serialize(Console.Out, response); Console.WriteLine("\n"); string queryResponseCode = response.controlActProcess.queryAck.queryResponseCode.code; switch (queryResponseCode) { case QueryResponseCode.Ok: Console.WriteLine(PersonToString(response.controlActProcess.subject[0].registrationEvent.subject1 .identifiedPerson)); break; case QueryResponseCode.NoResultsFound: Console.WriteLine("No results found"); break; case QueryResponseCode.QueryParameterError: Console.WriteLine("Query parameter error"); break; default: Console.WriteLine($"Unrecognized query response code: '{queryResponseCode}'"); break; } }