首先让我解释一下我想做什么。我想开发一个会监听客户端请求的服务器。我的服务器采用模块化架构。
例如,有一个Offer模块。 Offer模块有4个项目:Action,Message,Entity和Query。 Query项目通常包含包含远程方法的类。
第一个问题:我如何开发我的服务器,以便集中管理所有事务和查询。我的意思是,所有请求都应该从这个中央管理类路由到请求的模块及其远程方法。我需要你的想法。
第二:假设在我的Offer模块中,Query项目的ProductQuery类有10个方法,但其中5个是远程的。 CustomerQuery类有15个方法,其中3个是远程方法。我想获取一个查询项目中的所有远程方法(例如,在OfferModule的Query项目或Accounting模块的Query项目中)到一个程序集进行远程处理。例如,在一个OfferQuery程序集中。
我需要你的帮助。谢谢!
答案 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
类中的CustomerQuery
和OfferQuery
......这是正确的吗?
针对您的第二个问题提出解决方案的建议方向:
现在,鉴于您没有提供有关您使用的技术和框架的详细信息,我也会保持一些模糊:
我认为你要做的不是一个好方法。为什么?因为你将完全不相关的东西放在一个单独的类中,基于他们都是“查询”方法的想法。但他们查询的东西非常不同:例如Offers
,Products
,Customers
。这不是一个好的面向对象设计,因为它不是“面向领域”。它是面向查询的。
我认为你最好开发一个干净的对象(域)模型。围绕系统中逻辑实体的设计类(例如已经提到的优惠,产品,帐户,客户等)。保持相应的类完全不受查询方法的影响。
现在,查询在哪里?您可以查看此任务的对象关系模型映射器(OR / M)。 Hibernate(或.NET,NHibernate)或Microsoft的.NET实体框架是不错的选择。他们会将您的域模型映射到关系数据库,并为您在数据库中进行所有创建,查询,更新和删除。