C#.NET远程处理最佳实践?
好的,所以我知道我对.NET远程处理非常陌生,我有一个关于最佳实践的问题。首先,我已经有了一个我已经构建的内部应用程序,还有我引用的dll,它可以为我处理所有的数据。我希望我的应用程序的服务器版本能够利用所有这些类及其方法,并能够来回传递这些自定义对象 我的问题是,我是否应该将[Serializable]应用于我想要来回传递的所有类,然后创建专门使用我的方法获取、添加或更新、删除等的特殊类 现在,我在所有与数据库来回通信的类中都有Get、AddOrUpdate和Delete方法。我已经了解到我不能将ByRefObject&[Serializable]封送到所有这些类,否则我将遇到问题。所以,这就是为什么我认为我需要创建单独的类来进行“管理”(例如Get、AddOrUpdate、Delete),而不是创建属性定义和方法调用 一个我认为需要做的例子C#.NET远程处理最佳实践?,c#,remoting,serializable,marshalbyrefobject,C#,Remoting,Serializable,Marshalbyrefobject,好的,所以我知道我对.NET远程处理非常陌生,我有一个关于最佳实践的问题。首先,我已经有了一个我已经构建的内部应用程序,还有我引用的dll,它可以为我处理所有的数据。我希望我的应用程序的服务器版本能够利用所有这些类及其方法,并能够来回传递这些自定义对象 我的问题是,我是否应该将[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>();
[可序列化]
公共类用户{
#区域属性。。。
私有int_用户id;
私有字符串_displayName;
私有字符串\u用户名;
私有字符串_firstName;
私有字符串_lastName;
私有字符串_LogOnPassword;
私有列表_Associates=新列表();
私有身份验证级别\u授权级别;
私有字符串_userSettingsXML;
私有字符串_活动;
私有字符串签名;
专用int_电话分机;
私有整数指数;
私有列表_角色=新列表();
然后要真正创建一个列表,我需要一个单独的类,叫做UserManagement
public class UserManagement : MarshalByRefObject {
public List<Users> GetUsers() {
}
}
公共类用户管理:MarshalByRefObject{
公共列表GetUsers(){
}
}
非常感谢您!
远程处理可能是一个很好的方法,但是由于您没有给出很多关于为什么要远程处理的上下文,请允许我提供一个额外的建议。您可能需要考虑创建跨Web层通信的Web服务。是一种成熟的技术,它使通信变得简单。您可能还想了解面向服务的体系结构(SOA),也许可以从开始
使用WCF重用您当前的类应该不会有任何问题。服务只会给您提供更好的结构,而且WCF技能比.NET远程处理技能更常见(对于您之后需要管理此代码的人员)祝你好运!-Bill看到了,如果需要,只要你有足够的特权,你可以将所有对象作为MarshalByRefObject传递。所有其他的都取决于你的设计决定。一般来说,远程处理的最佳做法是放弃它,转到WCF。也许你只限于Fx2左右,但一定要调查一下选项。亨克,谢谢,我想我是肯定是走WCF路线。看起来这将是一种比远程处理简单得多的方法,更优雅,这正是我所寻找的。太棒了,谢谢!是的,我对信息的缺乏表示歉意。我的应用程序基本上采用了新请求的功能。到目前为止,它主要是数据库驱动的,不需要任何服务器内置客户端基础设施。我学习了一点.NET远程处理,但我一直很好奇还有什么。我正在研究WCF。非常感谢你的链接。比尔,我有一个问题。我阅读了你提供的文章,感谢你,这些是我需要阅读的关键材料。我去了我注意到我必须生成代理,然后将该文件合并到我的客户机中。我不喜欢的是我的客户机代码没有遵循我的类设计的优雅。所以我的问题是,我可以保留我的类设计,如MyDatabase吗e、 客户代码中的订单、MyDatabase.Users等,或者这只是需要做出的牺牲?您不需要使用代理,尽管这是一种方便的简化方法。如果您想“自己动手”,请在codereview.stackexchange.com上查看这篇文章,并提供一些示例代码: