21

Re: Порадьте архітектуру ще одну.

koala написав:

А нащо з патерном "команда" давати доступ клієнту до паролів і логінів, я не розумію?

ну бо по іншому не виходе *PARDON*  ну виходе, звичайно, але ж то вже буде костиль, явважаю. Ну то я маю на увазі, коли в інтерфейса буде два метода, Execute і SetDBConnector, і от коли від клієнта серверу приходить клас, то ми викликаємо SetDBConnector і передаємо в нього потрібну штуку, для підключення до БД.

22

Re: Порадьте архітектуру ще одну.

тьху, а знаєте, що саме смішне? деякі класи, як ото MySQLConnection або класи потрібні для роботи на клієнті не серіалізуються. Тобто не вийде передавати класи з методами, котрі мають щось робити. Тепер можна відправляти лише класи без методів, а лише с даними. Ех... все ж switch одержав перемогу, без нього тут ніяк, хоча мона зробити

using System;
 
namespace ConsoleApplication1
{
 
    internal interface IInt
    {
 
    }
 
    class Class1 : IInt
    {
 
    }
 
    class Class2 : IInt
    {
 
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            IInt @class = new Class1();
            Execute(@class);
            @class = new Class2();
            Execute(@class);
        }
 
        private static void ExecuteInternal(Class1 @class)
        {
            Console.WriteLine("@class is instance of Class1");
        }
        private static void ExecuteInternal(Class2 @class)
        {
            Console.WriteLine("@class is instance of Class2");
        }
 
        private static void Execute(IInt @class)
        {
            dynamic val = @class;
            ExecuteInternal(val);
        }
 
    }
}

23

Re: Порадьте архітектуру ще одну.

Значить от що я вигадав. Буде аж 3 dll. Перша dll містить класи, котрі будуть містити лише дані, котрі будуть відправлятись клієнтом та сервером. Друга dll буде містити посилання на першу dll та буде містити класи, котрі будуть обробляти класи з даними, котрі відправляє клієнт. А третья dll буде містити класи, котрі будуть обробляти класи з даними котрі відправляє сервер. Тобто це все розділяється на 3 частини. Перша частина - дані, друга частина - логіка сервера, третя частина - логіка клієнта. А хоча ні, я не буду робити dll для клієнта, а знаєте чо? Просто я не знаю, що на клієнті буде робитись по приходженні даних від клієнта. В скрипті клієнта може бути 1000 змінних, і я не можу передбачити, з якими змінними та що робити треба по приходженні данних від клієнта. Але я постараюсь оглянути декілька випадків та змоделювати в голові поведніку клієнта.

24

Re: Порадьте архітектуру ще одну.

ой млинець. щось я знову запутався. Я забув про switch xD

25

Re: Порадьте архітектуру ще одну.

а нє нє нє, switch замінив от такою конструкцією.

public class SuperExecutor
    {
        public IServerData Executor(IClientData clientData)
        {
            dynamic var = clientData;
            return Execute(var);
        }

        private IServerData Execute(LoginData data)
        {
            return new LoginExecutor(data).Execute();
        }

        private IServerData Execute(ExampleData data)
        {
            return new ExampleExecutor(data).Execute();
        }
    }