Можно ли настроить более одного клиента синтаксического анализа в одном приложении? - PullRequest
0 голосов
/ 04 апреля 2019

Итак, у меня есть несколько разных серверов разбора.Один сервер просто для записи журналов ошибок из различных приложений (у меня есть много) в красивой унифицированной базе данных.

Так что у меня может быть специальный автономный инструмент переноса данных, который, если он обнаружит ошибку, выпишетисключение в эту таблицу / класс анализа Error_log.Никаких проблем там нет.

Но, если у меня есть приложение, которое использует базу данных Parse для себя, я не смог выяснить, как позволить ей работать на собственной конфигурации сервера синтаксического анализа для своих собственных вещей, нозаписывать журналы ошибок в этот другой экземпляр сервера Parse.

Да ... Я мог бы испытать трудности с записью чего-либо через API REST только для записи журналов, но я пытаюсь избежать этого ипридерживайтесь собственных API синтаксического анализа для конкретной платформы, на которой я работаю, из-за преимуществ, которые API дают по сравнению с REST (например, сохранение в конечном итоге для вещей без .NET).

РЕДАКТИРОВАТЬ

Некоторые пояснения былиЗапрошено, поэтому здесь я иду ...

На стороне приложения (c # для этого примера, но то же самое относится и к iOS и т. д.) ... Я делаю обычную инициализацию клиента Parse как такового ...

                ParseClient.Initialize(new ParseClient.Configuration
                {
                    ApplicationId =  "MyAppID",
                    WindowsKey = "MyDotNetKey",
                    Server = "www.myparseserver.com/app1"
                });

Так что для всех вызовов, чтобы сохранить объект разбора, пройти через это соединение клиента разбора

Но то, что мне нужно сделать, было бы что-то вроде этого ...

//Main App cloud database
                ParseClient1.Initialize(new ParseClient.Configuration
                {
                    ApplicationId =  "MyAppID",
                    WindowsKey = "MyDotNetKey",
                    Server = "www.myparseserver.com/app1"
                });

                ParseClient2.Initialize(new ParseClient.Configuration
                {
                    ApplicationId =  "MyAppID",
                    WindowsKey = "MyDotNetKey",
                    Server = "www.myparseserver.com/errorcollection"
                });

try{
                ParseConfig config = null;
                config = await ParseConfig.GetAsync().ParseClient1;
} catch (Exception ex){
   ParseObject MyError = new ParseObject("Error_Log");

   MyError["Application"] = "My First App-App2";
   MyError["Error"] = ex.message;
   await MyError.Save().ParseClient2;

}

Да - это все фальшивый код ... моя точка зрения - я хочу иметь возможность иметь несколько экземпляров ParseClient в одном приложении.

Теперь ... я могу просто написать подпрограмму, которая записываетошибки, которые сбрасывают ParseClient.Initialization к экземпляру сервера анализа ошибок, а затем возвращают его обратно в исходный экземпляр (данные основного приложения), когда это сделано ... но это просто вызывает проблемы в многопоточной среде и вызывает конфликтыесли какой-то другой поток в приложении переходит к записи данных анализа в тот момент, когда метод ошибки сбрасывает инициализацию.

Если ParseClient был IDisposable, я, вероятно, мог бы сделать это, используя:


ParseClient ParseErrorServer = new ParseClient();
ParseErrorServer.ApplicationId = "hmmm";
ParseErrorServer.WindwosKey= "hmmm";
ParseErrorServer.Server= "www.hmmm.com/errorcollection";

using ParseErrorServer {

   //Do The Work

}

Это ясно как грязь еще?; P

1 Ответ

0 голосов
/ 14 апреля 2019

Без изменений я считаю, что ни один из Parse SDK не способен инициализировать несколько экземпляров.

Например, в iOS SDK можно создать новый экземпляр (скажем, с другим URL-адресом сервера) после перезапуска приложения, но у вас не может быть нескольких. В iOS SDK также обсуждалась возможность изменять конфигурацию без перезапуска , но никто еще не реализовал это.

Мы с радостью рассмотрим PR для этого, однако для этого потребуется капитальный и сложный капитальный ремонт, поскольку вам придется управлять кешем, пользователями и т. Д. В нескольких случаях.

...