【问题标题】:Recording data with WCF Service使用 WCF 服务记录数据
【发布时间】:2014-05-21 11:12:05
【问题描述】:

这是一个设计问题。我已经阅读了许多关于两个 C# 应用程序之间 IPC 的不同内容,但我觉得我的用例还没有达到令人满意的答案。

在我的第一个应用程序中,我有一个已经存在的对象,它每隔几毫秒就会频繁更改。我正在尝试将此附加到使用 Unity3d(-> 第二个应用程序)编程的游戏中。根据 stackoverflow 上的一个较早的问题,似乎序列化是不合适的,因为我基本上每隔几毫秒就无缘无故地序列化/反序列化对象。这让我想到了 WCF 服务:第一个应用程序充当主机,第二个应用程序(Unity 程序)充当客户端。到目前为止,这有意义吗?

接下来,我想记录我从第一个应用程序发送到第二个应用程序的所有数据。这里的初始目标是应该能够为第二个应用程序提供在早期会话中记录的数据。这样做的目的主要是为了解决开发问题,因为第一个应用程序的新数据可能不可用。

我可以使用 WCF 记录和回放在两个应用程序之间交换的数据(即整个数据流)吗?

【问题讨论】:

    标签: c# wcf unity3d ipc


    【解决方案1】:

    要记录 WCF 的每个输出,您可以实现一个自定义 Logger(例如 nlog 或 log4net),将信息保存到任何自定义数据存储(SqlServer、Mongo、Raven DB 取决于您的需要)

    伪代码

    //[OperationContractAttribute]
        public int[] GetUnitPosition(string guid)
        {
            int x = 0, y = 0;
            //calculate something..
    
            //then Log this information 
            Logger.Info("position", guid, x, y); //save this into any DB
    
            return new[] {x, y};
        }
    

    然后检索保存的数据。只需实现另一个从日志存储中查询历史数据的 WCF 服务。

    【讨论】:

    • 谢谢!那么,您认为在我的情况下使用 WCF 是否正确?你能指点我一本好书/教程,让我对这个话题有进一步的了解吗?我认为一本关于 .NET 或 WCF 的一般书籍可能不会涵盖这个......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 2012-10-05
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    相关资源
    最近更新 更多