Advertisement
Guest User

Untitled

a guest
Feb 9th, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
  2. public class service1:IService1
  3. {
  4. public static List<service1> servicesInstances = new List<service1>();
  5. ParallelOptions paralleOptions = new ParallelOptions();
  6. public static init()
  7. {
  8. TimerCallback processDataTimerDelegate = new TimerCallback(ProcessData);
  9. Timer processDataTimerDelegateItem = new Timer(processDataTimerDelegate , new object(), 0, 1000);
  10.  
  11. Thread DispatchMWThread = new Thread(new ThreadStart(dispatchData));
  12. DispatchMWThread.IsBackground = true;
  13. DispatchMWThread.Priority = ThreadPriority.Highest;
  14. DispatchMWThread.Start();
  15.  
  16. paralleOptions.MaxDegreeOfParallelism = -1;
  17. }
  18. public void login()
  19. {
  20. Monitor.TryEnter(servicesInstances);
  21. servicesInstances.Add((service1)OperationContext.Current.InstanceContext.GetServiceInstance());
  22. Monitor.Exit(servicesInstances);
  23. }
  24. public static void ProcessData(object obj)
  25. {
  26. //some code to process data for all clients
  27. }
  28. public static void dispatchData()
  29. {
  30. //When data processed is ready. Dispatch data concurrently
  31. Parallel.foreach(serviceInstances, delegate(service1)
  32. {
  33. service1.callbackData();
  34. }
  35. }
  36.  
  37. <serviceBehaviors>
  38. <behavior name="service1.mybehaviour">
  39. <serviceMetadata httpGetEnabled="false"/>
  40. <serviceDebug includeExceptionDetailInFaults="true"/>
  41. <serviceThrottling maxConcurrentCalls="5000" maxConcurrentInstances="5000" maxConcurrentSessions="5000"/>
  42. </behavior>
  43. </serviceBehaviors>
  44.  
  45. <netTcpBinding>
  46. <binding name="MyServiceBinding" listenBacklog="2500" maxConnections="5000" portSharingEnabled="true" maxReceivedMessageSize="4194304" maxBufferPoolSize="0">
  47. <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
  48. <reliableSession ordered="true" inactivityTimeout="00:20:00" enabled="false"/>
  49. <security mode="None">
  50. <message clientCredentialType="None"/>
  51. </security>
  52. </binding>
  53. </netTcpBinding>
  54.  
  55. [OperationContract(IsOneWay = true)]
  56. Task OnPushData(data);
  57.  
  58. public async Task PublishData()
  59. {
  60. communicationCallback = (ICommunicationObject)service.Callback;
  61. if (communicationCallback.State == CommunicationState.Opened)
  62. {
  63. await service.Callback.OnPushData(data);
  64. }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement