C # .NET Remoting Лучшая практика? - PullRequest
0 голосов
/ 14 февраля 2012

Хорошо, я знаю, что я очень новичок в удаленном взаимодействии .NET, и у меня есть вопрос относительно наилучшей практики. Во-первых, у меня уже есть собственное приложение, которое я создал, и у меня есть DLL, на которые я ссылаюсь, которые обрабатывают все данные для меня. Я хочу, чтобы версия моего приложения на сервере могла использовать все эти классы и их методы и передавать эти пользовательские объекты туда-сюда.

Мой вопрос заключается в том, должен ли я применять [Serializable] ко всем моим классам, которые я хочу передавать взад и вперед, а затем создавать специальные классы, которые специально используют мои методы для Get, AddOrUpdate, Delete и т. Д.?

Прямо сейчас у меня есть методы Get, AddOrUpdate и Delete во всех моих классах, которые обмениваются данными с моей базой данных. Я уже узнал, что я не могу MarshalByRefObject & [Serializable] для всех этих классов, или я столкнусь с проблемами. Вот почему я думаю, что мне нужно создать отдельные классы, которые выполняют «Управление» (например, Get, AddOrUpdate, Delete), в отличие от наличия определений свойств, а также вызовов методов.

Пример того, что я думаю, должен быть сделан.

[Serializable]
    public class Users {
        #region Properties...
        private int _userID;
        private string _displayName;
        private string _userName;
        private string _firstName;
        private string _lastName;
        private string _LogOnPassword;
        private List<Users> _Associates = new List<Users>();
        private AuthenticationLevel _authorizationLevel;
        private string _userSettingsXML;
        private string _active;
        private string _signature;
        private int _PhoneExtension;
        private int _Index;
        private List<UserAssignedRoles> _Roles = new List<UserAssignedRoles>();

Тогда для создания списка мне нужен отдельный класс, называемый UserManagement.

public class UserManagement : MarshalByRefObject { 
    public List<Users> GetUsers() { 

    }
}

Любой совет с благодарностью!

1 Ответ

1 голос
/ 14 февраля 2012

Удаленный доступ может быть хорошим подходом, но, поскольку вы не дали достаточного контекста относительно того, почему вы используете удаленный доступ, позвольте мне предложить дополнительное предложение.Вы можете рассмотреть возможность создания веб-сервисов для связи между архитектурными уровнями.Windows Communication Foundation (WCF) - это зрелая технология, которая делает это довольно простым для простого общения.Вы также можете прочитать о сервис-ориентированной архитектуре (SOA), возможно, начиная с четырех принципов SOA .

У вас не должно возникнуть никаких проблем при повторном использовании текущих классов с WCF.Службы просто дадут вам немного лучшую структуру, плюс навыки WCF гораздо более распространены, чем навыки .NET Remoting (для человека, которому нужно управлять этим кодом после вас).

Удачи!-Билль

...