远程方法,远程中央管理
首先让我解释我想要做什么。我想开发一个服务器来监听客户端请求。我的服务器有一个模块化架构。远程方法,远程中央管理
例如,有一个Offer模块。 Offer模块有4个项目:Action,Message,Entity和Query。 Query项目通常包含包含远程方法的类。
第一个问题:如何开发我的服务器,以便集中管理所有事务查询。我的意思是,所有请求都应该从这个中央管理类路由到所请求的模块及其远程方法。我需要你的想法。
第二:假设在我的Offer模块中,Query项目的ProductQuery类有10个方法,但其中5个是远程的。 CustomerQuery类有15个方法,其中3个是远程方法。我想在一个查询项目中获取所有远程方法(例如,在OfferModule的查询项目或Accounting模块的查询项目中)到远程处理的一个程序集。例如在一个OfferQuery程序集中。
我需要你的帮助。谢谢!
我不会回答您的第一个问题,因为无法以当前的形式合理地回答您的问题。
我的第二个问题的理解:
首先,让我试着去了解你的服务器体系结构的基本布局:
+--------+ 1 1..n +--------+ 1 1..n +---------+
| Server |<>------------| Module |<>-----------| Project |
+--------+ +--------+ +---------+
“有一台服务器,其中有或由1个或多个模块,每个模块都有几个项目或由几个项目组成。“我直接从你的问题中解决了这个问题我在这里不理解的第一件事是,我们是在讨论运行时组件,还是关于源代码解决方案的布局?
更具体地说,你似乎有模块,项目和类层次结构:
Server
|
+---- Accounting (module)
| ¦
| ? (projects)
|
+---- Offer (module)
¦ |
? +---- Action (project)
|
+---- Message (project)
|
+---- Entity (project)
|
+---- Query (project)
|
+---- ProductQuery (class)
|
+---- CustomerQuery (class)
¦
?
如果我理解正确的话,你现在要收集来自例如,全“远程”的查询方法ProductQuery
和CustomerQuery
内部共同OfferQuery
类...这是正确的吗?
对第二个问题的解决方案建议中的指示:
。现在,因为你没有提供有关您所使用的技术和框架的细节,我还就呆在有些模糊:
我认为你想要做的不是一个好方法。为什么?因为你打算把完全不相关的东西放到一个类中,这是基于他们都是“查询”方法的想法。但他们查询的是非常不同的东西: Offers
,Products
,Customers
。这不是一个好的面向对象的设计,因为它不是“面向领域”的。它是面向查询的。
我认为你会很好地开发一个干净的对象(域)模型。围绕系统中的逻辑实体设计类(例如,已经提及的优惠,产品,帐户,客户等)。保持相应的类完全不含查询方法。
现在,查询的位置在哪里?您可以查看此任务的对象关系模型映射器(OR/M)。 Hibernate(或.NET,NHibernate)或Microsoft的.NET实体框架都是很好的选择。他们会将您的域模型映射到关系数据库,并为您完成所有在数据库中的创建,查询,更新和删除。
您简要描述了我的项目架构。但我实际上定义了干净的对象模型。所有关于报价的查询都将在较新的模块操作类中进行。您有时会使用报价模块中的客户查询,但所有常见查询都在一个存储库类中在我的有限英语的内容我不能详细解释。我在一个模块中的操作类获取指定的消息,执行它到数据库,反之亦然。我明白你给我提供的。我研究了实体framwork.Bu为此项目我一定要使用这种架构。谢谢你的关心 – Trusik 2011-01-23 10:58:42
关于你的第一个问题,你太过于无法得到合理的答案。我们需要知道你的服务器组件使用什么框架,以及典型的具体查询是什么样的。请提供更多细节。 – stakx 2011-01-23 10:46:44