C#.NET Remoting最佳实践?

时间:2012-02-13 22:52:56

标签: c# remoting serializable marshalbyrefobject

好的,所以我知道我对.NET远程处理非常陌生,就最佳实践而言,我有一个问题。首先,我已经有一个我已经构建的内部应用程序,并且我引用的dll是为我处理所有数据的。我希望我的应用程序的服务器版本能够利用所有这些类及其方法,并能够来回传递这些自定义对象。

我的问题是,我应该将[Serializable]应用于我想要来回传递的所有类,然后创建专门使用我的方法来获取GetOrUpdate,删除等的特殊类吗?

现在,我在所有与我的数据库来回通信的类中都有Get,AddOrUpdate和Delete方法。我已经知道我不能MarshalByRefObject& [Serializable]到所有这些类或我将遇到问题。所以,这就是为什么我认为我需要创建单独的类来执行“管理”(例如Get,AddOrUpdate,删除),而不是使用属性定义和方法调用。

我正在思考的一个例子需要做。

[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 个答案:

答案 0 :(得分:1)

远程处理可能是一个很好的方法,但由于你没有提供很多关于你为何进行远程处理的背景,让我提供一个额外的建议。您可能需要考虑为跨架构层的通信创建Web服务。 Windows Communication Foundation(WCF)是一种成熟的技术,可以使pretty straight-forward进行简单的通信。您可能还想阅读有关面向服务的体系结构(SOA),可能从four SOA tenets开始。

将您当前的类重用于WCF应该没有任何问题。服务只会给你一个更好的结构,而且WCF技能比.NET Remoting技能更常见(对于需要在你之后管理这个代码的人)。

祝你好运! - 比尔