我应该使用命名管道或.NET Remoting与我的机器上正在运行的进程通信吗?
我想知道WCF中是否有事件处理方式.我遇到了WCF中的Callbacks,但我想在WCF中进行事件处理.
我的要求就像我想向特定客户端发送事件而不是使用WCF中的事件处理向所有客户端发送事件,我也想维护会话.
我在WCF中看到了处理回调的发布者/订阅者模型,但是这个模型发布给所有订阅但我想只发布到选定客户端的客户.
我认为可以使用WCF中的事件来完成.
客户端 :
public class Callbacks : IServiceCallback
{
public void CallToMyClient(string name)
{
this.CallToMyClient(name);
}
}
protected void Page_Load(object sender, EventArgs e)
{
Callbacks callback = new Callbacks();
ServiceClient client = new ServiceClient(new InstanceContext(callback));
client.SubscribeClient();
client.DoSomeWork();
}
Run Code Online (Sandbox Code Playgroud) 我被告知的一切都说WCF应该至少和远程处理一样快.我有一个特定的场景,然而,它甚至没有接近,我想知道是否有人可以发现一些明显的我做错了.我正在研究用wcf替换远程处理以进行进程内appdomain通信繁重的可能性.这是代码:
[ServiceContract]
interface IWorkerObject
{
[OperationContract] Outcome DoWork(Input t);
}
[DataContract]
[Serializable]
class Input
{
[DataMember] public int TaskId { get; set; }
[DataMember] public int ParentTaskId { get; set; }
[DataMember] public DateTime DateCreated { get; set; }
[DataMember] public string TextData { get; set; }
[DataMember] public byte[] BinaryData { get; set; }
}
[DataContract]
[Serializable]
class Outcome
{
[DataMember] public string Result { get; set; }
[DataMember] public string TextData { get; set; }
[DataMember] public byte[] …Run Code Online (Sandbox Code Playgroud) 我可以理解WCF通常比Remoting更好,但两者看起来与我完全不同.MS制作这张漂亮的照片,以显示WCF有多棒(或者其他技术人员每次仅检查一个盒子的差距): alt text http://i.msdn.microsoft.com/dynimg/IC371617.jpg
但是,WCF以SOA为中心,我认为假设每个联网应用程序都希望公开服务是不正确的.
在我的情况下,我正在寻找在不同PC上的两个服务器应用程序实例之间复制对象的方法.WCF似乎只是提供了一个现代版本的COM ...获取一个对象并调用方法,它神奇地调用另一台PC上的版本.但Remoting似乎做了一些完全不同的事情,我不清楚为什么它被弃用而不被类似的技术取代.
那么,MS甚至声称Remoting已经死了吗?或者他们仍然支持它,承认它与 WCF 并列吗?
可能重复:将
DLL加载到单独的AppDomain中
将.NET程序集加载到单独的AppDomain中的正确方法是什么,这样您就可以访问其类型/类,但仍然可以卸载它(并重新加载它).
这是前面讨论的切线: C# - 正确加载程序集,查找类和调用Run()方法
多年来,我一直在使用.NET开发n层应用程序.但我仍然不知道如何将层/层(dll)分发给其他服务器.
假设我有一个包含4个项目的MVC Web应用程序,即MVC(UI),业务,服务和数据.如果所有类库dll都在一个服务器中,一切正常.
如果我想通过将服务层(dll)和数据层(dll)分发到其他2台服务器来扩展应用程序,我应该将类库转换为WCF服务库项目(使用TCP或管道作为通信协议以获得更好的性能) ?或者我应该使用其他技术,如.NET远程处理或Web API?
这会是很多工作吗?
这是创建多层应用程序的目的之一吗?
谢谢.
更新:
您是否有任何链接(来自Microsoft)详细解释如何通过分发DLL将n层架构应用程序扩展到多个服务器?
我需要在我的应用程序中引入IPC,我还需要继续在GNU/Linux和Windows上分发(目前我在GNU/Linux上使用mono,在Windows上使用.NET,并且两者都支持GTK +).通讯限制在同一个盒子上.
哪个是在两个系统上进行IPC的最佳方式?
我读到DBUS也可以在Windows上使用主流源代码.任何人都可以使用它,在Windows上我的意思是?
在此先感谢大家.
c# ×5
.net ×4
wcf ×4
ipc ×2
assemblies ×1
distributed ×1
dynamic ×1
linux ×1
mono ×1
performance ×1
process ×1
reflection ×1
remoting ×1
windows ×1