2010-06-25 73 views
0

我正在开发一个Remoting类库,以便我可以在服务器上而不是客户端上保持数据库交互和业务对象。C#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(); 

我如何安排我的类/命名空间?我特别想知道我的系统的类参考和可扩展性。

任何形式的批评/建议真的很感激。

+0

为什么你不想使用WCF? – Incognito 2010-06-25 10:32:38

+0

因为我不太清楚。我会试一试。 – Keeper 2010-06-25 13:55:09

回答

0

我并不是要打鼓,但你可能想看看WCF。远程处理非常琐碎,通过.Net维护清洁接口的真正支持是通过WCF和消息传递完成的,而不是通过远程处理完成对象状态管理。

它听起来像你正在做的是开发一个中间层来管理数据库连接。只要确保你不会重新开发接口到SQL服务器。

+0

所以在WCF中,我可以像我上面的例子那样传递我自己的类?你知道在哪里可以找到这样的例子吗?谢谢 – Keeper 2010-06-25 14:03:25

+0

http://msdn.microsoft.com/en-us/library/aa480190.aspx – Spence 2010-06-25 17:53:37

+0

您可以创建数据协定的任何内容都可以通过WCF发送。您甚至可以使用WCF“发送”流,这对于非常大的传输非常有用。 – Spence 2010-06-25 17:54:51

0

我倾向于把所有'共享'(数据传输对象)类放在一个单独的DLL中,服务器和客户端都参考(如果你打算将它们放在与服务器类相同的DLL中无论如何分发它与客户端代码)。

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

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

Herbie