2016-05-04 2 views
0

Во избежание ограничения на использование RCAMaxConcurrency (0-100) для Exchange Server, я хочу закодировать службу прослушивателя (streamlistener), которая может обрабатывать до 5000 пользователей, используя только одно соединение , У меня уже есть 200 тестовых учетных записей и еще одна учетная запись, олицетворяющая права на эти 200 тестовых учетных записей. Если возможно, было бы неплохо избежать переключения всех учетных записей.EWS Exchange Impersonate 2 или более пользователей, использующих одно соединение ExchangeService

У нас уже есть код, и он отлично работает с олицетворением всего 1 пользователя.

public void SuscribeToCalendar() 
{ 
    // Set the email address of the account to get the appointment. 
    service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.PrincipalName, "xxxxxxxxx"); 
    // Subscribe to streaming notifications in the Inbox. 
    StreamingSubscription streamingSubscription = service.SubscribeToStreamingNotifications(
     new FolderId[] { WellKnownFolderName.Calendar }, EventType.Created, EventType.Modified, EventType.Moved); 

    // Create a streaming connection to the service object, over which events are returned to the client. 
    // Keep the streaming connection open for 30 minutes. 
    StreamingSubscriptionConnection connection = new StreamingSubscriptionConnection(service, 30); 
    connection.AddSubscription(streamingSubscription); 
    connection.OnNotificationEvent += OnNotificationEvent; 
    connection.OnDisconnect += OnDisconnect; 
    connection.Open(); 
} 
+0

Hola Фернандо, я действительно не понимаю, что вы хотите достичь, но посмотрите на моем приложении и с ehow я использовать олицетворение, возможно, это может дать вам представление о том https://github.com/rojobo/ EWSContactsSynchronization/blob/master/cContactsSynchronization.vb – rojobo

ответ

2

RCAMaxConcurrency не влияет на EWS, это влияет на соединения Outlook, использующие RPC для подключения. Что будет влиять на EWS, это EWSMaxConcurrency, который по умолчанию имеет меньшее значение до 10. (вы также пострадали от EWSMaxSubscriptions, который равен 20).

Параметры олицетворения влияют на заголовок запроса EWS, поэтому вы не можете выдать себя за другого пользователя за один вызов, поэтому при создании подписки вам нужен один вызов для каждого пользователя, подписавшегося. Вы можете сгруппировать подписку вместе в одно соединение с олицетворением, используя следующие https://msdn.microsoft.com/en-us/library/office/dn458789(v=exchg.150).aspx.

Ограничения с группой - 200 пользователей на группу, учитывая количество оттока, которое у вас есть с подписками, которые вы действительно не хотите больше. Когда вы используете олицетворение, количество соединений не является проблемой, если вы не привязываете группу к одному и тому же почтовому ящику.

Приветствие Глен

+0

Да, вы действительно поняли, что я ищу. Теперь моя забота заключается в том, что если обмен имеет все эти политики ограничения дросселирования, то как, например, 1000 сотрудников, использующих смартфоны, одновременно прослушивают уведомления об обмене? эти 10, 20, 200 лимитов слишком мало. –

+0

Есть ли способ использовать EWS из мобильного приложения без кодирования службы-прослушивателя на сервере (между обменом и мобильным приложением)? –

+1

>> 1000 сотрудников, использующих смартфоны, одновременно прослушивают уведомления об обмене? ограничение на параллелизм для каждого пользователя, поэтому в этом примере это единственное соединение для каждого устройства/пользователя. Ограничение основано на том, что одна учетная запись пользователя не может одновременно открывать 10 одновременных подключений (нет ограничений на количество подключений параллелизма на уровне сервера Exchange, которое, по-видимому, является вашим предположением). Когда вы используете олицетворение, что проблема параллелизма действительно исчезает, потому что соединение заряжается пользователем, вы выдаете себя за него. –