【问题标题】:WCF on Windows Service C# Class nullWindows 服务 C# 类上的 WCF 空
【发布时间】:2017-10-24 16:50:18
【问题描述】:

我有一个单独的 WCF 服务项目在与我的 windows 服务相同的解决方案中运行,在 windows 服务中,我将数据库中的数据填充到我的 DataStore 类中(这种情况经常发生)。数据存储在内存中,因此我可以随时随地访问它,问题出在我的 WCF 服务中,它为空但不在 Windows 服务中……我明白为什么……问题是我如何访问我的 WCF 中具有相同数据的同一类?将有多个连接到 Web 服务,因此 DataStore 需要具有最新数据且不能为空。

public string GetData(string obj) 
{ 
    try 
    { 
        return TestCount = DataStore.Instance.Test.Count.ToString(); 
    } 
    catch (Exception ex) 
    { 
        return "Error"; 
    } 
} 

【问题讨论】:

  • 你在代码中使用了 operationcontract 吗?你能在这里用 wcf 写你的代码吗?
  • 是的,我做到了,下面的代码在我的服务类中 public string GetData(string obj) { try { return TestCount = DataStore.Instance.Test.Count.ToString(); } 捕捉(异常前){ 返回“错误”; } }
  • 抱歉还没习惯格式化...
  • 澄清一下,您的问题是:如何从 Windows 服务访问 WCF 服务,或者如何通过 WCF 传输一个充满数据的类?

标签: c# wcf


【解决方案1】:

很难从您的问题中确切地看出您想要实现的目标是什么;但是,如果,正如我怀疑的那样,您试图通过 WCF 传输复杂类型(类),首先,正如@Amir 建议的那样,您将需要 Operation or DataContract 装饰器 - 我注意到您的示例中不存在这些.根据数据传输的复杂程度,您可能还需要 KnownType 装饰器。

假设您正在传递复杂类型,将这些模型分成它们自己的、不同的程序集可能对您有利。

前段时间,我写了一个 short article 来讨论传递一个虚拟接口,有时你可能不知道要传输什么。

还值得考虑在 WCF 服务中拥有数据缓存是否有任何价值。如果您使用的是默认实例化,那么您将不会在一次调用到下一次调用中保留此缓存。

【讨论】:

    猜你喜欢
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    相关资源
    最近更新 更多