问题标签 [application-layer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Linq To Sql - Making a dynamic search for the Application layer without exposing DAL layer as DLL
Linq to SQL, C#.
I have 3 layers: DAL,BL,Application. I want to build functions of search in the BL for each table so those functions get as a parameter 'where' expresstion from the Application layer. The advantage in this approach is one function for each table so the client can search in a free and dynamic way insted of givving him 5 (for example) ways; restrict his search.
For that I need to give my Application layer a DLL of my DAL layer. Doing that is not a good approach to solve the problem (givving the user to build his search dynamicly insted of restrict him with a builded up search functions). If the Application layer have a DLL to my DAL layer, the Aplication layer can declare a ContextObject and do bad things for my Data-Base.
What can I do for solving this problem?
Thanks alot, Stav Alfi.
Update 1:
As you know, the Linq to Sql build a class to each table. I dont want to expose the DAL DLL to the Application layer so I can not use Linq to Sql's classes in the Application layer. The solution I found is to build classes that look the same to the Linq to Sql's classes, so the Application layer can use them. The BL layer is resposnibol for convring those classes. From the fact that the Application layer does not use Linq to Sql's classes, I can't give to the Application layer a IQueryable (Any result of Any function of the BL layer is converted to the Application layer's classes).
Update 2:
The Linq to Sql have LinqClientDB.designer.cs and it Build up those classes
If I expose the DAL layer to the Application layer, the Application layer can have access to the LinqClientDBDataContext class. this is not a good approach. So in the BL layer I convert the DAL.Client class to a BL.Client class but then I cant have a dynamic search on the Client's table. What can I do?
c# - How the Application layer will be able to dynamicly query the DB in the DAL layer?
C#, LINQ to SQL
Some advice me to open new topic insteed that topic becouse there is no solution for my problem. Now I will need your help to re-design my layers. Linq To Sql - Making a dynamic search for the Application layer without exposing DAL layer as DLL
My project consist of 3 layers: DAL, BL, Application. The Linq2Sql is exsist in the DAL layer and he auto-generate a class to each table in the data base, and a ContextObject to manage the data base. I cant change anything in this classes becouse any change in the DB will couse re-auto-generation of those classes.
those classes are exposed to the BL layer. The Application layer does not need to be exposed to the LinqClientDBDataContext (ContextObject) so I can't expose the Application layer to any auto-generated code of the Linq2Sql (In this case The Client class). Thats why I made a "Duplicate" class of Client that is generated in the BL layer by the DAL.Client Object :
The problem comes when I try give the Application layer a IQueryable so the Application layer can dynamicly creat queries and filter the results as he want:
Exception: Method 'BusinessLogic.Client Convert(ClientDataAccessLayer.Client)' has no supported translation to SQL.
This code gives this exception and I know why but I cant Find Any better solution for this problem.
Feel free to help me re-design my project so the application can dynamicly query the DB.
Thanks alot, Stav Alfi.
c# - 上下文域驱动模型验证
在我们的应用程序中,我们需要根据业务规则和当前用户的上下文来验证属性更新。我正在尝试确定进行验证的最佳方法,因为我认为域模型不应该知道当前用户。我们的正常授权与域是分开的,与这种情况不同。
这种验证应该在哪里进行,是否有更好的方法来处理它?域模型应该了解用户吗?任何帮助或输入表示赞赏。
简单示例:我们有一个数量已批准的订单。只有特定的用户类型才能更新特定方向的数量。这是在域聚合中验证的正确方法吗?
c# - 基于 C# 的轻量级应用层协议 - HTTP 的替代方案
我是 C# 的新手,我正在开发具有客户端/服务器架构的 C#(WPF) 应用程序,我需要在两台机器之间进行通信(只有很短的 JSON,但它们很多),而且 HTTP 也是“沉重的“所有它的标题等。在应用层上是否存在任何替代HTTP的方法?
tcp - ping 如何解析 IP 地址?
该ping
实用程序在网络层之上运行,而 DNS 在应用层中运行。
如果我们尝试ping www.google.com
,由于 DNS 在这些层之上,它如何解析 GOOGLE 的 IP 地址?
sql-server-2008 - 主服务器和热备服务器架构
我现在开始研究为Intranet网络构建适当的体系结构,其中包含一个主服务器和一个我想作为热备用运行的辅助服务器。我对此的了解非常少,我正在寻找可以帮助我入门的指南和文章。
需要复制的服务器将运行以下内容:
- Windows Server 2008 R2 OS
- MS SQL 2008 R2 Std
- IIS 7.0 将运行在 asp.net 中构建的 Web 应用程序
- 多个后台服务,其中一些将数据写入数据库。这是在内部编写但没有复制方法的 .net 应用程序。
我的目标是让主服务器数据不断复制到辅助服务器,以便在发生故障时辅助服务器可以尽快开始充当主服务器。
我的问题是:
1. 在这种情况下推荐的硬件拓扑是什么?除了两台服务器机器之外,我是否需要任何额外的硬件来充当DNS服务器来解析到正确服务器的路由?
如果没有,如何使用软件来完成?
2. 数据库复制——我知道我需要使用某种日志传送来在数据库之间进行同步。有什么限制和指导方针?我需要知道是否存在良好性能与数据库的最新复制之间的权衡。一篇好文章会有所帮助。
3.考虑到重写服务应用程序以支持以某种“被动”模式运行并在服务器之间传输状态数据可能是不可能的,那么在辅助机器上应该如何处理这些服务?
networking - 程序如何选择传输层协议以及如何获取该协议的源代码
我需要分析通过网络发送数据时选择传输层协议的过程的源代码。我试图找到,但我仍然没有找到它。有人可以建议我如何得到这个吗?
*至少如果我能得到也会非常有帮助的算法/伪代码。
谢谢
c++ - 退出时清理与否
我知道清理是一件好事。我也了解操作系统内部,所以如果我知道我的进程正在终止,那么它的内存将被释放。但我喜欢提出不同的观点。我在线上,在退出时释放内存是相当糟糕的主意。
例如,我可能分配了当前已换出的大内存,如果我在退出时将其释放,则需要将其带到 RAM 中,然后释放它。如果我不这样做,退出时它只会在一张表中被标记为空闲。
总体而言,操作系统发生了很大变化(基本保持不变),我理解这个问题可以被认为是 A_VERY_PLATFORM_DEPENDENT,但从今天的应用程序开发人员的角度来看,他要么被困(?)在某些框架中,要么是胆大妄为的 coder,谁正在研究作为 COM 的原始技术,非常依赖,我会调用 VERY_CONTROLLED_ENVIRONMENT。
对于TL;DR
:在现代操作系统上,我认为我不应该在退出时执行清理。如果你认为我错了,为什么?
PS:我不是在谈论 RTOS,我的意思是受控环境是指 Windows、Linux,我从来没有指设备驱动程序开发或操作系统开发。
model-view-controller - 分层架构mvc
我正在使用 MVC 框架创建一个 Web 应用程序。我想在控制器和域模型之间添加一个层,我认为它在 DDD 中称为应用层,以避免将特定于特定用例的逻辑放入域模型中。控制器将仅与该层交互,该层将使用域模型编排操作。该层将保持尽可能薄,推动所有不是特定于域模型的用例的逻辑。我将调用属于这一层的类DomainCtrl。
登录场景示例: 模型:LoginForm DomainCtrl:AuthCtrl UI:ui 控制器
1.ui 控制器接收请求 2.creates AuthCtrl 的实例 3.AuthCtrl 创建 LoginForm 的实例并用传递给 authCtrl 的请求数据填充它 4.LoginForm 执行登录 5.authCtrl 执行特定于这种特定登录方式的其他事情-> 向 ui 控制器返回错误
这是组织应用程序的好方法吗?
sql-server - 包含过多业务逻辑的 (T)Sql 视图
我有一个 TSQL 视图。除了几列之外,它非常基本,因为它只是进行了一些连接,然后将所有内容粘合在一起以呈现应有的漂亮视图。然而,不那么简单的少数列使得视图代码很难扩展,现在新的需求已经出现,使得复杂列的业务逻辑无效。
无需过多介绍,我的数据库中有一个表:
这由“就业”行组成。每次一行中的任何列,对于给定的就业变化(假设是employmentTitle
变化),然后当前行被推入另一个 table tblEmploymentHistory
,并且行中的行tblEmployment
被更改,因此它包含最新的employmentTitle
。
从本质上讲,视图的作用是尝试将tblEmployment
ontblEmploymentHistory
与 unique 结合起来EmploymentIdentifier
,这是有道理的。
视图中更复杂的列将尝试elapsedTime
通过从它连接在一起的行(即 from )进行各种计算来计算一个数字(对于每一行tblEmployment and tblEmploymentHistory
)。为了获得经过的时间,它根据规定的业务逻辑执行计算,例如,只有历史表中的特定日期时间列才应计入总的经过时间,并且只有在该行中的其他列设置为特定值等时才应该这样做。
现在有了新的需求,业务逻辑比以前复杂多了。我发现很难扩展视图以包含它,因为它变得非常混乱,而且我觉得这可以在其余业务逻辑也驻留的应用程序层中更加结构化!
废弃视图并将其移动到我的应用程序的应用程序层是否“正确”?显然,拥有视图的好处是速度很快,并且在代码中对大约 100.000 行进行计算需要一些时间。但是,可以通过过滤掉行来优化它,使数字在 10.000 左右。
解决这个问题的“标准”和最干净的方法是什么?