问题标签 [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.

0 投票
8 回答
2688 浏览

java - 将业务逻辑、AppLayer 或 DataLayer 放在哪里?

读完这篇文章(业务逻辑数据库或应用层)后,我仍然没有足够的理由去讨论“数据库中的业务逻辑”这个话题。

在我目前的工作中,有很多数据库事务(实际上),所有那些糟糕的代码都很难维护,存储过程中有很多重复,所以如果你想稍微改变一个表中的值,你会需要找到所有这些程序并将它们更改为您想要的。如果您需要稍微更改表格设计,也会发生同样的情况。

当前所有的开发人员都非常了解 SQL,但他们仍然不是任何 DATABASE 作为引擎的专家(8 位开发人员)。

目前我们正计划将整个核心迁移到一个新版本(包括数据库设计)。我需要一些例子

  • 为什么数据库中的业务逻辑有时是邪恶的
  • 数据库中的业务逻辑在何时何地是一个好的实践
  • 为什么应用层中的业务逻辑更适合企业应用。?

应用程序语言:Java
数据库:Oracle11g
该应用程序将具有服务,用作 HTTP 页面和 WebServices。

0 投票
2 回答
5743 浏览

network-protocols - 如何知道TCP中的应用层协议?

我在wireshark中看到没有专门的字段来识别应用层协议,但是wireshark是怎么做到的呢?

0 投票
1 回答
273 浏览

codeigniter - CodeIgniter 中的应用程序级缓存

codeIgniter 中是否有任何调用应用程序级缓存对象的东西?就像在 Spring (Java EE) Web 应用程序中一样?如果我们在 Spring 中进一步使用 ehcache,那么会出现更多选项,例如 FIFO、LIFO 等。

0 投票
2 回答
3504 浏览

domain-driven-design - 规范模式对象应该在哪一层“新建”?

所以,我在这里查看了一些关于规范模式的帖子,但还没有找到答案。

我的问题是,在 n 层架构中,规范究竟应该在哪里“更新”?

  1. 我可以将它们放在我的服务层(又名,有时称为应用程序层......基本上,一个 .aspx 代码隐藏会与之交谈的东西),但我觉得这样做,我让业务规则泄露出去域。如果通过其他方式访问域对象(除了服务层),域对象就不能强制执行它们自己的业务规则。

  2. 我可以通过构造函数注入将规范注入我的模型类。但同样,这感觉是“错误的”。我觉得应该注入模型类的唯一东西是“服务”,如缓存、日志记录、脏标志跟踪等......如果你能避免它,使用 Aspects 而不是乱扔模型的构造函数具有大量服务接口的类。

  3. 我可以通过方法注入(有时称为“双重调度”???)注入规范,并明确地让该方法封装注入的规范以强制执行其业务规则。

  4. 创建一个“域服务”类,它将通过构造函数注入获取规范,然后让服务层使用域服务来协调域对象。这对我来说似乎没问题,因为规范强制执行的规则仍然在“域”中,并且域服务类的命名非常类似于它正在协调的域对象。这里的事情是我觉得我正在编写很多类和代码,只是为了“正确”实现规范模式。

除此之外,有问题的规范需要一个存储库才能确定它是否“满意”。

这可能会导致性能问题,尤其是。如果我使用构造函数注入 b/c 消费代码可以调用一个可能包装规范的属性,而这反过来又调用了数据库。

那么有什么想法/想法/文章链接吗?

新建和使用规范的最佳地点在哪里?

0 投票
1 回答
300 浏览

java - Terracotta 和 Quartz 调度程序节点使用什么协议?

我正在将 Quartz Scheduler 与 TerracottaJobStore 一起使用,并且试图找出调度程序节点和服务器使用哪种协议进行通信。

换一种说法,在 Web 应用程序设置中,浏览器(客户端)通过 TCP/IP 上的 HTTP 或 HTTPS 与 Apache(服务器)通信。石英和兵马俑的等价物是什么?

我知道 Quartz Scheduler 和 Terracotta Server 使用 TCP/IP,但是是否也使用了像 HTTP 这样的应用层协议?

0 投票
1 回答
580 浏览

recording - 仅嗅探/记录应用层

我正在寻找一种工具(最好在 Linux 上),它可以嗅探 UDP 流量并仅将应用程序层记录到文件中。

我不能让tcpdump/wireshark这样做,因为它们也总是写下层的标题。我尝试使用snort (./snort -qd -l ./logs),但即使数据包中没有应用程序层数据,它也会继续将数据存储到文件中。

也许有人知道这样的工具......

哦,UDP流量也是多播的......

我还尝试了multicat(VideoLAN)。他们声称它是多播的netcat。但我不知道,除了我使用 netcat 手动发送的有效载荷外,它还存储了一些其他二进制垃圾(对我而言)......熟悉 multicat 的人吗?

0 投票
1 回答
1914 浏览

c - 选择函数行为 - 多客户端测验

我必须构建一个测验应用程序。

申请详情:
1. 每个客户必须先注册到服务器才能参加测验。服务器将询问每个用户的用户名并为每个用户生成临时 ID。
2. 注册成功的客户端,成功连接到服务器的客户端会从服务器获取问题。
3. 客户将给予答复。
4. 服务器将收到来自不同客户端的带有时间戳的应答,并计算每个客户端的时间差,称为Δt。

  1. 服务器将选择 Δt 最小的客户端,并回复客户端将获得的任何分数,剩下的将不会获得任何分数。
  2. 发送问题后,服务器将等待一个特定的时间段(T)的回答。如果客户端在“T”时间段内没有回复,服务器将跳过该问题并转到下一个问题。

我的服务器代码中主循环的伪代码

问题
当我只连接到一个客户端时,我的代码对于任何数量的问题都可以正常工作。
但是,当我使用相同的客户端代码在多个客户端上测试此代码时:

  • 每个人都可以登录。
  • 将第一个问题发送给每个人都可以正常工作。
  • 然后在等待答案时,我只收到了一位客户的答复。每个客户端都显示已发送答案。对于第二个客户端,第二个select函数不会返回可读数据可用性。

为什么对于多客户端我的代码不起作用。(据我说,错误是在某个地方得到答案)。

我的代码
从变量名可以很容易地理解发送的数据包的结构。

服务器.c

客户端.c

0 投票
1 回答
681 浏览

python - 从数据包 ISO/OSI 层过滤 PCAP 文件

我需要将 PCAP 文件拆分为两个不同的文件:第一个文件应包含所有(且仅)指向 ISO/OSI 模型的应用层的数据包,而第二个文件应包含所有其他文件。

我正在使用 Scapy 应用过滤器:

usingpkt.haslayer(Raw)方法,因为该层应仅包含在定向到应用程序层的数据包中。

有什么问题?我注意到applayerfilename+的总和lowlayersfilename(以文件大小计)与infile.

报告的方法在计算上也很昂贵(我有一个大约 1.5GB 的 PCAP 列表),因为infile它被解析了两次。

我更喜欢应用不同的过滤器,解析一次输入 PCAP。我可以使用PcapReader该类并手动解析 PCAP,但我不知道如何生成 PCAP 以传递给该wrpcap(...)方法。

编辑:我也尝试过这个解决方案:

但它不起作用,因为由于我的输入 PCAP 的大小,它消耗了太多的内存......

是否append_to_pcap(filename, packet)存在类似功能(wrpcap(...)功能不能作为附加功能)?

0 投票
1 回答
134 浏览

dns - DNS 协议、消息

在 DNS 消息格式中,除了头部字段外,还有 4 个部分:

-问题 -答案 -权威 -附加信息。

DNS 服务器,谁或什么填充了这些部分:权限和附加信息?

0 投票
1 回答
2184 浏览

routing - 如何通过互联网模拟两台电脑之间的直接网络连接?

我已经阅读了关于 wiki 文章的主题以太网、OSI 模型、TCP、UDP、路由 (由于新用户限制没有链接)等 wiki 文章的主题,但无法回答我的具体问题。

情况: 4台电脑(AD)

它们使用以太网像这样相互连接: A <-LAN-> B <-Internet-> C <-LAN-> D (由于新用户限制,仅链接而不是图片,再次抱歉)

我试图完成的事情:计算机A应该被愚弄认为它直接连接到计算机D(反之亦然)。完成此任务的软件只能在计算机 B 和 C 上运行。

我的问题是什么:我真的无法详细说明要完成我的目标需要做什么。通过使用在计算机 B 和 C 上的现代操作系统上运行的软件,是否有可能让 A 和 D 认为它们相互连接?

我所理解的是——如果我要真正模拟那个连接——我将不得不在物理层上传输信息。从 B/C 上的操作系统的应用层可以做多少事情来完成同样的事情?有可能吗?

从我的知识来看,我已经可以做些什么: 在 A 上有一个客户端软件,它向 B 发送数据报或字节流(知道 B 将通过互联网将其发送到 C,然后 C 又将发送数据到 D)。D 到 A 的方向也是如此。

我对该解决方案的问题: 该解决方案存在缺陷,因为我需要 2 个软件解决方案(一个用于 A/D,一个用于 B/C),另外,它限制了与 TCP 和 UDP 协议的连接,它也确实如此不是真正模拟连接——它只是将信息从 A 路由到 D 的一种解决方法,而不是模拟对等连接。

这使我想到了标题中的问题:

如何通过互联网模拟两台电脑之间的直接网络连接?

我也愿意接受我可能完全忽略的任何建议,或部分解决方案和建议。