C#Remoting班级组织

时间:2010-06-25 10:28:23

标签: c# remoting class-library code-organization

我正在开发一个Remoting类库,这样我就可以在服务器上保留数据库交互和业务对象,而不是客户端。

我希望能够将自己的对象返回给客户端,以便他们可以通过服务器本身与它们进行交互。

例如(半伪代码):

服务器

class Database { ... }
class Utility
{
  public User getUser(username)
  {
     return new User(username);
  }
}
class User
{
  public string[] getPerms()
  {
    return Database.query("select * from permission where user = " + this.username);
  }
}

客户端

Utility utility = (Utility)getRemotingClass("Utility");
User user = Utility.getUser("admin");
string[] perms = user.getPerms();

如何组织我的类/命名空间?我特别想知道我的系统的类引用和可伸缩性。

非常感谢任何批评/建议。

2 个答案:

答案 0 :(得分:0)

我不是故意打鼓,但你可能想看看WCF。 Remoting非常繁琐,并且通过WCF和消息传递完成了对.Net维护干净接口的真正支持,而不是通过远程处理进行完整的对象状态管理。

您正在做的是开发用于管理数据库连接的中间层。只需确保不要将接口重新开发到SQL服务器。

答案 1 :(得分:0)

我倾向于将所有“共享”(数据传输对象)类放在服务器和客户端引用的单独DLL中(如果要分发,可以将它们放在与服务器类相同的DLL中)无论如何,它与客户端代码。)

通过将它们放在单独的组件中,可以加强DTO的分离以及用于远程传输它们的基础技术。 这意味着如果您最终重写远程呼叫技术,则无需触摸DTO即可重新使用组件。

不要忘记将DTO标记为[Serailizable]属性,以便它们可以在客户端和服务器之间传输。

赫比