【问题标题】:C# Remoting classes organizationC# Remoting 类组织
【发布时间】:2010-06-25 10:28:22
【问题描述】:

我正在开发一个远程处理类库,以便我可以将数据库交互和业务对象保存在服务器上而不是客户端上。

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

例如(半伪代码):

服务器

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();

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

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

【问题讨论】:

  • 为什么不想使用 WCF?
  • 因为我不太了解。我试试看。

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


【解决方案1】:

我并不是要打鼓,但您可能想研究一下 WCF。远程处理非常健谈,.Net 对维护干净接口的真正支持是通过 WCF 和消息传递来完成的,而不是通过远程处理进行完整的对象状态管理。

听起来您正在开发一个用于管理数据库连接的中间层。只要确保您最终不会重新开发 SQL Server 的接口即可。

【讨论】:

  • 那么使用 WCF 我可以像上面的示例一样传递我自己的类吗?你知道在哪里可以找到这样的例子吗?谢谢
  • 您可以为其创建数据合同的任何内容都可以通过 WCF 发送。您甚至可以使用 WCF“发送”流,这对于非常大的传输非常有用。
【解决方案2】:

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

通过将它们放在单独的组件中,您可以加强 DTO 和用于远程传输它们的底层技术的解耦。 这意味着,如果您最终重写了远程调用技术,您将不必接触 DTO,只需重新使用程序集即可。

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

赫比

【讨论】:

    猜你喜欢
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多