English 中文(简体)
WCF - 客户报到对“客户名单”的投票
原标题:WCF - Client callback vs. polling for "keep list of subscribers"
  • 时间:2009-12-07 22:18:33
  •  标签:
  • c#
  • .net
  • wcf

我想在妇女论坛中树立一个简单的客户服务榜样。 我做了一些回击测试,迄今为止,它做了一些罚款。 我在以下接口中发挥了几乎微不足道的作用:

[ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(IStringCallback))]
public interface ISubscribeableService
{
    [OperationContract]
    void ExecuteStringCallBack(string value);

    [OperationContract]
    ServerInformation Subscribe(ClientInformation c);

    [OperationContract]
    ServerInformation Unsubscribe(ClientInformation c);
}

它是一个简单的例子。 a 略作调整。 您可以要求服务器“减轻震荡”,在这种情况下,服务器推翻了扼杀,并打电话给所有用户。

现在,这里的问题是: 如果我想实施一个系统,让所有客户“注册”到服务器,服务器能够“检查”客户,如果他们仍然活着的话,那么你就会用警钟来实施这一系统(而不是这种“回顾”一种TellTheClientThatIAmStillreCallback)。 如果当事人死亡,我也可以“知道”。 与此类似:

Subscribers.ForEach(delegate(IStringCallback callback)
                    {
                        if (((ICommunicationObject)callback).State == CommunicationState.Opened)
                        {
                            callback.StringCallbackFunction(new string(retVal));
                        }
                        else
                        {
                            Subscribers.Remove(callback);
                        }
                    });

我的问题以另一种方式提出:

  • The server might have 3 clients
  • Client A dies (I pull the plug of the laptop)
  • The server dies and comes back online
  • A new client comes up

因此,基本上,你会利用呼吁来核实客户的“生活状况”,或者说,你会利用投票和跟踪“我会长时间听到客户的声音”。

问题回答

可以通过<条码>封闭式、<条码>、<条码>、<条码>、<条码>、<条码>、<条码>、<条码>条码/条码>等活动发现连接状态的大多数变化。 目标。 你们可以同时看到他们,你会打上了警钟。 这肯定比投票好。

IIRC, the Faulted activity will only fire after, You actualtries to use the callsback (unsuccessful). 因此,如果客户刚刚消失,例如,一个硬的 re子或断电,那么你就会获得通知。 但你们需要吗? 如果是,为什么?

妇联的召回可能随时失败,你始终需要把此事 back在你的脑后。 即使客户和服务器都属于罚款,但由于例外情况或网络外出,你可能最终会有一个错失的渠道。 或者说,在您上次投票和您目前的工作之间,当事人可能有些时候就离开了。 问题在于,只要你以防守的方式(这是良好做法),那么上述事件通常就足够了大多数设计。 如果由于任何原因出现错误,包括当事人未能作出答复,<代码>无损<>/代码>的活动将打入和操作你的清理代码。

这就是我所称的被动/冷静做法,需要比投票或固定办法少编码和网络聊天。

如果你能够举行可靠的会议,世界路德会联合会内部维持一种持续的控制机制。 如果另一端仍然存在,则通过隐蔽的基础设施测试信息定期检查。 这些检查的间隔时间可以通过可靠的分析来影响。 无 财产停产。 如果你将财产定在20秒钟后,那么ICommunicationObject。 在另一边发生服务故障后,将发生约20至30次(最大)的过失事件。

如果你想要确保客户的申请始终保持“与客户的联系”,即使在临时服务中断之后,你可能希望使用(从校对池)工人的透镜,反复试图在客户方面建立一个新的代理机构,并在发生无动于衷的事件之后,要求开展一场由会议启动的行动。

第二种做法是,由于你正在实行工人阅读机制,你也可能无视无动于衷的事件,让工人在客户申请的整个一生中read。 如果国家有过错,你会一再检查代理国,并试图进行修理工作。

采用第一种或第二种办法,你可以实施服务公共汽车结构(中介模式),保证所有客户申请随时都能在服务运行时收到“自动”服务信息。

当然,只有在可靠的会议“如此”进行适当配置后才能开始(使用具有会议能力的约束力,并适用服务合同。 SessionMode, ServiceBehaviorAttribute. InstanceContextMode,OperationContractAttribute. 有意义地终止财产。

我的情况类似,利用世界合作框架和呼吁。 我不想使用投票,但我正在使用“可再生”程序,这样,如果客户死亡,那么,它将在服务器停机和坠毁之前hang。

我不知道这是否是最正确或最棘手的解决办法,但我确实在为代表客户代理人而在服务中设立了一个阶层。 这一类别的每一例都提到客户代理人,如果服务器确定该类别“遗产”财产,则将履行背书功能。 通过这样做,当客户互不联系时,个人总结会获得时间选择,从服务器的听众名单上删除,但服务机构不必等待。 这实际上没有回答你关于确定客户是否活着的问题,而是为增加这一问题提供服务的另一个方式。 如果你需要知道客户何时死亡,那么当客户总结从听众名单上删除时,你就能够接手。

我没有试图利用电线上的电离层扰动,而是将其用于处理间通信。 我正在遇到一个问题,即发出呼吁的电话站在同一个路面上,当有电话依靠同一路面时,停下来。

这或许适用于你目前在此必须做的事情来解决这个问题。

将这一名词贴在WCF服务器的服务器和客户中

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)]
public class WCFServerClass

客户在停机之前死亡时,应使用锁定服务器帮助你。

我还确信,在客户方面利用“透镜”库,确保客户方面不存在任何新出现的问题。





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签