【发布时间】:2012-03-05 08:54:14
【问题描述】:
好的,我知道我对 .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() {
}
}
非常感谢任何建议!
【问题讨论】:
-
参见msdn.microsoft.com/en-us/library/5dxse167(v=vs.80).aspx 和alexthissen.nl/blogs/main/archive/2007/12/23/… 如果需要,您可以将所有对象作为 MarshalByRefObject 传递,只要您有足够的权限。所有其他都取决于您的设计决定。
-
Remoting 的最佳实践通常是放弃它并继续使用 WCF。也许您仅限于 Fx2 左右,但请务必调查选项。
-
Henk,谢谢,我想我肯定会走 WCF 路线。看起来这将是一种比远程处理更简单的方法,并且更优雅,这正是我正在寻找的。span>
标签: c# remoting serializable marshalbyrefobject