问题标签 [proxy-classes]

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 投票
2 回答
1313 浏览

java - 以编程方式实现一个接口,该接口以各种指定方式组合同一接口的某些实例

实现以各种指定方式组合同一接口的某些实例的接口的最佳方法是什么?我需要为多个接口执行此操作,并且我希望最大限度地减少样板代码并仍然实现良好的效率,因为我需要它用于关键生产系统。

这是问题的草图。

抽象地说,我有一个通用组合器类,它接受实例并指定各种组合器:

现在,假设我想在许多其他接口中实现以下接口:

我想结束这样的代码:

现在,如果接口有很多方法,这很快就会变得冗长而曲折。我知道我可以使用 Java 反射 API 中的动态代理来实现这样的接口,但是通过反射访问方法要慢一百倍。那么在这种情况下,样板和反射的替代方案是什么?

0 投票
2 回答
806 浏览

.net - .NET Web 服务代理类可以安全地用作单例吗?

我正在使用 Visual Studio 生成的代理类与 SOAP Web 服务进行通信。生成的类派生自 System.Web.Services.Protocols.SoapHttpClientProtocol。我发现实例化该类的成本很高,因此我正在考虑修改我的工厂方法以返回该类的 Singleton 实例。根据文档,该类对于多线程是安全的。

有没有人有重用这些类的实例的经验?这样做是否有任何负面影响(即连接保持打开状态等)?

.NET 框架版本:2.0

0 投票
2 回答
1666 浏览

code-generation - 向生成的 WCF 客户端代理代码添加方法

我想在我的 WCF 客户端代理代码中为每个服务操作添加一个额外的方法(即从ClientBase. 我已经编写了一个具有IOperationContractGenerationExtension实现的 Visual Studio 扩展,但是这个接口似乎只公开了修改服务接口的能力,而不是 -ClientBase派生类。

有没有办法在代理客户端类中生成新方法?

0 投票
3 回答
2335 浏览

python - Python + Twisted 中的消息队列代理

我想实现一个轻量级的消息队列代理。它的工作是从 Web 应用程序 (PHP) 接收消息并将它们异步发送到 Message Queue 服务器。使用此代理的原因是 MQ 并不总是可用,有时会滞后甚至关闭,但我想确保消息已传递,并且 Web 应用程序立即返回。

因此,PHP 会将消息发送到在同一主机上运行的 MQ 代理。如果发生崩溃,该代理会将消息保存到 SQLite 以保持持久性。同时,当连接可用时,它会从 SQLite 将消息批量发送到 MQ,并从 SQLite 中删除它们。

现在,据我了解,此服务中有以下组件:

  1. 消息监听器(监听来自 PHP 的消息并将它们写入传入队列)
  2. DB flusher(从传入队列读取消息并将它们保存到数据库;由于 SQLite 单线程)
  3. MQ 连接处理程序(通过重新连接保持与 MQ 服务器的连接在线)
  4. 消息发送者(从 SQlite db 收集消息并将它们发送到 MQ 服务器,然后从 db 中删除它们)

我正在考虑将 Twisted 用于#1(TCPServer),但我在将它与其他非事件驱动的点集成时遇到了问题。直觉告诉我,这些点中的每一个都应该在一个单独的线程中运行,因为它们都是 IO 绑定的并且彼此独立,但我可以轻松地将它们放在一个线程中。尽管如此,除了 Twisted 的主循环之外,我找不到任何关于如何实现此工作线程的好且清晰的(对我而言)示例。

我开始的例子是chatserver.py,它使用 service.Application 和 internet.TCPServer 对象。如果我在创建 TCPServer 服务之前启动自己的线程,它会运行几次,但它会停止并且不再运行。我不确定为什么会发生这种情况,但这可能是因为我没有正确使用 Twisted 线程。

关于如何实现单独的工作线程并保持 Twisted 的任何建议?您有任何替代架构吗?

0 投票
1 回答
224 浏览

android - Android 代理光标

我有一个数据库,我希望通过 ContentProvider 公开数据。但是,重要的是不要暴露所有列,并且应该重命名它们。有什么好的方法可以做到这一点吗?我在想可能是某种代理游标,它接受一个游标并将其列转换为所需的列,并且对 close 等的调用只会重播到原始游标。这样的东西是否存在,或者很难制造?

0 投票
6 回答
117 浏览

java - 如何将类似的功能添加到 java 中的许多方法中?

我有很多用于记录的方法,例如logSomeActionlogAnotherAction

现在我希望所有这些方法在打印消息(Thread.sleep)后稍作停顿。

如果我手动做,我会做这样的事情:

我记得 Java 有代理类和其他一些神奇的工具。有没有办法避免将 N 个睡眠块复制到 N 个日志记录方法?

0 投票
3 回答
544 浏览

c# - 直接通过 DLL 使用 webservice 类型

我有一个带有返回类型(foo)的函数的网络服务。如果我通过 2.0 生成的代理在 .NET 中使用此 Web 服务,它会在生成的代理中创建一个名为 foo 的类。如果我有包含该类 (foo) 的 DLL,该类是 web 服务正在使用的 DLL,有没有办法让它使用该类而不是创建自定义代理类?我正在寻找类似于远程处理的东西......但不是远程处理。

0 投票
4 回答
623 浏览

nhibernate - NHibernate:从存储库返回完全加载实例的模式

作为我无尽的受 NHibernate 启发的 DAL 重构炼狱的一部分,我已经开始使用存储库模式来使 NHibernate 远离我的 UI 层。这是来自存储库的 Load 方法的示例。

我喜欢我的网站不知道什么是 ISession 的事实。

自然,我开始遇到延迟初始化异常,因为上面的方法没有加载 StoredWill,它只是返回一个代理。当您访问代理的属性时,您会收到异常,因为您不再处于 ISession 的范围内。当我意识到发生了什么事时,我放声大笑。

我已经解决了这个问题:

但这一切似乎有点。有没有人使用稍微优雅一点的模式?

爱你们。

大卫

0 投票
2 回答
2233 浏览

nhibernate - 强制为实例加载所有休眠代理

我想拍摄实体实例的快照,因此我想强制为此实例加载所有代理。

在大多数情况下,我不想禁用延迟加载,我只是想知道是否有可以调用的 API 来强制加载所有代理。

0 投票
1 回答
1359 浏览

nhibernate - 在调用 NHibernate.Initialize(proxyObject) 我得到错误的 objectType

我有对象层次结构 Parent->Child (延迟加载默认设置为 true) 现在我正在从数据库中加载所有 Parent 对象。所有子对象都将具有 ChildProxyGUID 类型。

然后我写

如何将 parent.Child 转换为 Real 类型“Child”。由于系统检查,我需要真实类型(儿童)。这个例子在现实生活中很简单,我有一个非常复杂的映射和关系。

有什么想法吗?