远程方法,远程管理中央

时间:2011-01-23 00:48:23

标签: .net remoting projects-and-solutions

首先让我解释一下我想做什么。我想开发一个会监听客户端请求的服务器。我的服务器采用模块化架构。

例如,有一个Offer模块。 Offer模块有4个项目:Action,Message,Entity和Query。 Query项目通常包含包含远程方法的类。

第一个问题:我如何开发我的服务器,以便集中管理所有事务和查询。我的意思是,所有请求都应该从这个中央管理类路由到请求的模块及其远程方法。我需要你的想法。

第二:假设在我的Offer模块中,Query项目的ProductQuery类有10个方法,但其中5个是远程的。 CustomerQuery类有15个方法,其中3个是远程方法。我想获取一个查询项目中的所有远程方法(例如,在OfferModule的Query项目或Accounting模块的Query项目中)到一个程序集进行远程处理。例如,在一个OfferQuery程序集中。

我需要你的帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

我会留下你的第一个问题,因为它目前的形式无法合理解答。


我对您的第二个问题的理解:

首先,让我尝试了解您的服务器架构的基本布局:

  +--------+  1     1..n  +--------+  1    1..n  +---------+
  | Server |<>------------| Module |<>-----------| Project |
  +--------+              +--------+             +---------+

“有一台服务器,它有一个或多个模块或由一个或多个模块组成,每个模块都有几个项目或由几个项目组成。”我直接从你的问题中解决了这个问题我在这里首先要理解的是,我们是在讨论运行时组件,还是关于源代码解决方案的布局?

更具体地说,您似乎拥有模块,项目和类的层次结构:

Server
|
+---- Accounting (module)
|     ¦
|     ? (projects)
|
+---- Offer (module)
¦     |
?     +---- Action (project)
      |
      +---- Message (project)
      |
      +---- Entity (project)
      |
      +---- Query (project)
            |
            +---- ProductQuery (class)
            |
            +---- CustomerQuery (class)
            ¦
            ?

如果我理解正确,你现在想收集所有“远程”查询方法,例如:公共ProductQuery类中的CustomerQueryOfferQuery ......这是正确的吗?


针对您的第二个问题提出解决方案的建议方向:

现在,鉴于您没有提供有关您使用的技术和框架的详细信息,我也会保持一些模糊:

我认为你要做的不是一个好方法。为什么?因为你将完全不相关的东西放在一个单独的类中,基于他们都是“查询”方法的想法。但他们查询的东西非常不同:例如OffersProductsCustomers。这不是一个好的面向对象设计,因为它不是“面向领域”。它是面向查询的。

我认为你最好开发一个干净的对象(域)模型。围绕系统中逻辑实体的设计类(例如已经提到的优惠,产品,帐户,客户等)。保持相应的类完全不受查询方法的影响。

现在,查询在哪里?您可以查看此任务的对象关系模型映射器(OR / M)。 Hibernate(或.NET,NHibernate)或Microsoft的.NET实体框架是不错的选择。他们会将您的域模型映射到关系数据库,并为您在数据库中进行所有创建,查询,更新和删除。