标签: remoting

在仅Java环境中Web服务和RMI的优缺点是什么?

在开发同一家公司用Java编写的分布式应用程序时,您会选择Web服务还是RMI?在性能,松散耦合,易用性方面,有哪些优点和缺点?有人会选择WS吗?你能用RMI构建面向服务的架构吗?

java remoting web-services rmi

11
推荐指数
2
解决办法
4703
查看次数

从NUnit调用远程对象时抛出RemotingException

我在玩.Net Remoting和Mono时发现了一个奇怪的问题.
当我在NUnit执行的代码中调用远程对象时抛出此异常:

System.Runtime.Remoting.RemotingException : Cannot create channel sink to connect to URL 9cd3eef9_6e1f_4e0e_a4fe_0d43b3b0d157/2d2f9b_6.rem. An appropriate channel has probably not been registered. 
Stack trace:  
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (System.Runtime.Remoting.Proxies.RealProxy rp, IMessage msg, System.Exception& exc, System.Object[]& out_args) [0x001e9] in /tmp/buildd/mono-4.0.1/mcs/class/corlib/System.Runtime.Remoting.Proxies/RealProxy.cs:249
Run Code Online (Sandbox Code Playgroud)

从Console应用程序执行完全相同的代码时,一切正常.

鉴于此接口:

public interface IEchoService {
    string Echo(string message);
}
Run Code Online (Sandbox Code Playgroud)

和托管这样的实现的服务器:

var serverProvider = new BinaryServerFormatterSinkProvider();
serverProvider.TypeFilterLevel = TypeFilterLevel.Full;
var channel = new TcpServerChannel("RemotingTest", 4242, serverProvider);
ChannelServices.RegisterChannel(channel, false);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(HelloEchoService), "RemotingTest.rem", WellKnownObjectMode.Singleton);
Run Code Online (Sandbox Code Playgroud)

这将导致异常:

[Test]
public void SendEchoRequest()
{
    var chan = new TcpClientChannel();
    ChannelServices.RegisterChannel(chan, …
Run Code Online (Sandbox Code Playgroud)

c# mono remoting nunit xamarin

11
推荐指数
0
解决办法
1199
查看次数

频道'tcp'已经注册

我希望给定的应用程序(Windows服务)充当远程服务器以及远程客户端.在生产中,我将运行我的应用程序的两个实例,通过.NET Remoting相互监视,并相应地报告失败.

我已经编写了一个基本的部分,并且"已经注册了"通道'tcp'"例外..我想以编程方式设置通道配置.

c# remoting

10
推荐指数
2
解决办法
1万
查看次数

[RemoteClass]如何在Flex Actionscript中工作,我可以将它用于自定义数据绑定吗?

Actionscript支持在BlazeDS中使用的[RemoteClass]元数据标记,以提供数据绑定提示,以便将AMF二进制对象从Java编组到BlazeDS.

例如:

Java: 包样本;

public class UserInfo
{
    private String userName;

    public String getUserName()
    {
        return userName;
    }

    public void setUserName(String value)
    {
        userName = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

动作:

[Bindable]
[RemoteClass(alias="sample.UserInfo")]
public class UserInfo
{
    public var userName:String=”";
}
Run Code Online (Sandbox Code Playgroud)

在BlazeDS框架中如何实现[RemoteClass],你是否可以覆盖该行为并提供可以绑定到Actionscript [Bindable],[RemoteClass]类的自定义数据绑定远程处理框架(例如,JSON消息传递系统) ?

apache-flex data-binding remoting actionscript blazeds

10
推荐指数
1
解决办法
2万
查看次数

远程病例中的Lazy/Eager加载策略(JPA)

我遇到了像大多数尝试使用ORM进行远程处理的人一样的LazyLoading异常.在大多数情况下,切换到急切的提取解决了问题(延迟加载/非原子查询/线程安全/ n + 1问题......).但是,如果你正在处理一个非常大的对象图,那么急切的提取也会有缺点.

在大多数用例中不需要加载整个对象图.加载需要的更多数据(或从数据库加载数据并提取所需的子集)感觉很糟糕.

那么有什么替代方法可以解决这类问题(在运行时)?
我见过:

  • 将数据访问依赖项注入域对象,并让对象决定加载延迟或急切:感觉不好!域层应独立于任何服务.域注入也是一项昂贵的操作.域应该是数据访问无知的,应该使用或不使用数据访问.
  • 除了需要更多数据的用例之外,获取所有延迟:看起来更好的性能但这种方式会强制许多客户端=>服务器/数据库往返.懒惰字段的初始化也会遭受痛苦(尝试使用JPA).这种方式不具有通用性,并且受到上述相同的惰性限制.
  • 在Lazy类中封装持久性:更复杂,没有与ORM互操作的最佳实践.膨胀的服务层(这么多"手写"代码感觉很糟糕).
  • 对每个用例使用完整的预测:我们将最终使用SQL并放弃ORM的好处.
  • DTO /虚拟代理层强制执行更多复杂性并使代码更难维护(Wormhole antipattern >> Bloat).

我想了很多其他的方式.也许通用投影white./black listning是一个解决方案.

Idea(黑名单):使用提取操作的边界定义类名列表.如果属性匹配并且它是惰性的,则删除惰性(CGLIB)代理并使用null填充该值.否则,简单地防止获取(并将值保留为null).因此,我们可以在DAO中设置明确的界限.

示例:ProductDao.findByName("Soap",Boundaries.BLACKLIST,"Category, Discount") 最后两个参数也可以绑定到Boundaries对象中.

Idea(白名单):与黑名单一样,但您必须声明属性应加载到白名单中.

您如何看待这样的解决方案?(可能的问题,限制,优点......)我应该如何在java中编写这个?也许通过AOP来匹配DAO方法(因为我能够在那里修改cglib代理行为)?

java orm remoting jpa lazy-loading

10
推荐指数
1
解决办法
6079
查看次数

从Flash中请求从Flash挂起的php文件

过去两天我们一直在讨论这个问题好几个小时才弄清楚发生了什么,我们找不到任何线索.这是正在发生的事情; 我们有一个允许人们下订单的Flash应用程序.用户可以配置产品,并且Flash会动态生成该产品的图像并呈现给用户.满意后,他们可以向服务器发送订单.将图像的字节数组和一些其他变量发送到处理订单的服务器,并生成包含订单摘要和产品图像的PDF.然后,订单脚本将所有内容发送回浏览器.

除了OSX 10.4上的Safari之外,这一切都很顺利.有时订单会通过,但Safari大部分时间都会挂起.在Safari中查看Activity窗口时,它表示它正在等待订单脚本并且它是"0字节的?".我们认为服务器出了问题,所以我们尝试了其他几台服务器,但问题仍然存在.最初我们使用一个简单的帖子来处理订单,但是为了解决这个问题,我们采用了一些更复杂的方法作为通过AMFPHP进行Flash远程处理.这也没有解决问题.

我们使用Charles来监控http流量,以确定请求是否完全离开浏览器,但奇怪的是,当Charles运行时,我们无法重现问题.

我希望有人知道发生了什么,因为我们无法弄明白.

php flash safari remoting

10
推荐指数
1
解决办法
419
查看次数

.NET Remoting速度和VPN

我正在开发一个项目,它使用.NET Remoting在客户端应用程序和对象服务器之间进行通信.对于开发,客户端,服务器和MSSQL数据库都在我的本地开发机器上运行.

当我在办公室工作时,响应能力很好.

但是,当我在家工作时速度明显变慢.如果我从VPN断开连接,它会加速(我相信,但也许这只是一厢情愿的想法).如果我完全关闭无线连接,它会立即加速到全油门.

我的假设是远程通信正在通过某些点进行路由,这会减慢一切,尽管我的家用路由器和/或VPN.

有没有人有任何关于如何强制远程流量保持完全本地化的想法?

.net performance vpn remoting wireless

9
推荐指数
1
解决办法
1363
查看次数

异步远程调用

我们有一个远程单独服务器在一个单独的Windows服务中运行(让我们称她的RemotingService).RemotingService的客户端是ASP.NET实例(很多).

目前,客户端远程调用RemotingService并在RemotingService调用被服务时阻塞.但是,远程服务变得越来越复杂(具有更多RPC调用和复杂算法),asp.net工作线程被阻塞了相当长的时间(4-5秒).

根据这篇msdn文章,这样做不会很好地扩展,因为每个远程RPC都阻止了asp.net工作线程.它建议切换到异步处理程序以释放asp.net工作线程.

异步处理程序的目的是释放ASP.NET线程池线程,以便在处理程序处理原始请求时为其他请求提供服务.

这看起来很好,除了远程调用仍然从线程池中占用一个线程.这是与asp.net工作线程相同的线程池吗?

我应该如何将我的远程单例服务器转换为异步系统,以便释放我的asp.net工作线程?

我可能错过了一些重要信息,如果您还有其他任何需要知道的问题,请告诉我.

c# remoting rpc .net-3.5 .net-2.0

9
推荐指数
1
解决办法
2328
查看次数

在.NET远程处理调用期间标识客户端

鉴于此MarshalByRef类:

public class MyRemotedClass : MarshalByRef
{
  public void DoThis()
  {
     ...
  }
  public void DoThat()
  {
     ...
  }
}
Run Code Online (Sandbox Code Playgroud)

客户端代码:

MyRemotedClass m = GetSomehowMyRemotedClass();
m.DoThis();
m.DoThat();
Run Code Online (Sandbox Code Playgroud)

我可以让几个客户同时做同样的事情.我想区分客户.如何在远程访问的方法中识别执行远程调用的人员? 例如,我可以记录谁做了什么.(实际上,我不需要追溯真正的客户信息,我只是希望能够对客户进行分组调用.)

[已编辑添加更多背景信息]

我有大量的代码需要覆盖,包括属性.因此,不能选择扩展输入参数列表.

.net remoting multithreading

9
推荐指数
1
解决办法
7147
查看次数

如何在远程运行命令时更改Powershell CLR版本?

我在尝试在远程服务器上运行我们的一些脚本时遇到了问题.

我们需要所有Powershell会话来加载CLR的v4,因为我们正在使用我们的脚本加载我们自己的自定义二进制文件.

我们已经这样做了一段时间(我们使用类似于这里的修改过的powershell.exe.config这样做:如何使用.NET 4运行时运行PowerShell?),当你进入'Server1'的RDP时一切都很好并开启Powershell会议.变量$ PSVersionTable告诉我们CLR v4已加载.

既然我们正试图通过远程运行这些命令来简化操作,那么我们遇到了问题:当你在同一台服务器上输入一个远程Powershell会话时,$ PSVersionTable只显示v2 ......

所以问题是,如果你在Server1上打开一个本地Powershell会话,它会加载v4,但如果你从Server2远程到Server1它只加载v2.

有谁知道如何告诉Powershell使用CLR v4进行远程会话?任何帮助将非常感激!

clr powershell remoting

9
推荐指数
1
解决办法
6401
查看次数