private static void RunPerformanceTest(PersonRegistryClient client) { var sw = new Stopwatch(); sw.Start(); client.GetDemographics(CreateGetDemographicsRequest(new II(FhNumberOid, CreateRandomFhNumber()))); sw.Stop(); Console.WriteLine("Initial request: " + sw.Elapsed); sw.Restart(); const int numRequests = 1000; for (int i = 0; i < numRequests; ++i) { client.GetDemographics(CreateGetDemographicsRequest(new II(FhNumberOid, 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 (int i = 0; i < numIndividualRequests; ++i) { using (var c = CreateClient()) { c.GetDemographics(CreateGetDemographicsRequest(new II(FhNumberOid, 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(); } }
private static void GetDemographics(PersonRegistryClient client) { string idNumber = ReadLineAndTrim("Enter id number: "); if (string.IsNullOrWhiteSpace(idNumber)) { return; } var id = new II { root = GetOid(idNumber.Trim()), extension = idNumber.Trim() }; PRPA_IN101307NO01 request = CreateGetDemographicsRequest(id); GetDemographicsRequestSerializer.Serialize(Console.Out, request); Console.WriteLine("\n"); PRPA_IN101308NO01 response = client.GetDemographics(request); 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: '{0}'", queryResponseCode); break; } }