【问题标题】:WCF Service ImplementationWCF 服务实现
【发布时间】:2012-11-20 20:29:01
【问题描述】:

我搜索了互联网、几本书,甚至咨询了一些同行。没有什么能真正说明我正在尝试做的事情是否是不好的做法。短;我只是在做客户的一劳永逸。

[ServiceContract]
public interface ICustomerInformation
{

       [OperationContract(IsOneWay = true, IsTerminating = true, IsInitiating = false)]
       ICustomerAccount GetCustomerDetails (string First);

}

[DataContract]
public interface ICustomerAccount
{
      _firstName = firstName;

      [DataMember]
      string FirstName 
      {
            get { return _firstName; }
            set { _firstName = value; }
      }
}

我最初的想法是一个类似的实现来抽象属性;所以服务器和绑定到服务器的应用程序可以利用这些属性。但这真的是明智之举吗?甚至是好的做法?

我的假设是;通过将这一层添加到服务中,它将允许访问服务的用户界面简单地推送它的数据;同时允许功能直接绑定到数据中。因此,如果用户数据发生更改,服务将针对服务器上的功能进行更改。

这是一种不好的查看方式吗?或者尝试这个?我对这种解释有误导吗?

就像我上面说的;目标是一种逻辑抽象,其中多种样式的接口将其数据推送到服务。然后服务接受输入;根据这些变量输入值执行函数。

如果我的措辞不好,请告诉我,以便我进行编辑;或者想一个更好的解释方式。任何帮助都会很棒。


更新:

我正在尝试创建一个通用接口;与此相关的任何应用程序或客户端接口输入数据的地方。一旦数据提交给服务;服务器接受它。无需返回数据;但服务器只是通过使用客户端信息的命令运行。

本质上,我正在尝试通过服务普遍推送数据以供服务器执行任务。客户端不需要知道它正在执行的任何服务器任务。

我的想法是通过服务在逻辑上分离 UI/用户输入;然后服务使用从用户那里收集的信息调用服务器端函数。

示例: Textbox(Name) --> Service --> Server 将 Name 存储为变量以执行一系列任务:将 Name 写入数据库,通过用户名命名 textfile,等等。

【问题讨论】:

  • 您能否更清楚地了解您想从哪里推送数据,以及从哪里接收数据(并可能广播回)?另外,您是否尝试做一些动态的事情,比如传递属性名称或类似的东西?
  • 我认为您的代码不会编译。界面中不能有字段。此外,当 DataContractSerializer 尝试反序列化您的合同并且无法确定类定义时,您可能会收到运行时错误。您不应将接口用作 DataContracts,而应仅使用类。
  • @JoshC.;例如,有一些方法可以处理与接口相关的序列化问题,例如 DataContracts; msdn.microsoft.com/en-us/library/…
  • 我对您想要实现的目标感到困惑 - 使用旨在检索数据 (GetCustomerInfo) 的方法的“即发即弃”听起来不正确...?如果您需要服务回调,则需要查看 Duplex 服务 (msdn.microsoft.com/en-us/library/ms731064.aspx)。如果您想知道是否可以将数据发送到服务器而不担心回复,那也很好,您可能只想考虑成功/错误处理。
  • 我只是简单地推送任何客户端表单数据;多个站点-应用程序-只需将数据推送到服务器。一旦服务器获得代码,它实际上会将数据写入其数据库并根据用户输入运行特定于服务器的某些命令。

标签: c# wcf datacontract datamember operationcontract


【解决方案1】:

如果我理解正确,您似乎想要实现某种消息/命令传递模型,这对我来说似乎完全合法。例如,看看this article,它谈到了将命令用作架构模式。这些命令可以通过从客户端到 (WCF) 服务的线路进行序列化,这允许您创建一个高度可维护的服务层(如explained here)。 所以回到你原来的问题:是的,这似乎是一个合法的模型。虽然我建议阅读这些文章。他们可能会为您提供有关此类模型的更多背景知识。

【讨论】:

    猜你喜欢
    • 2010-12-25
    • 2014-11-09
    • 2012-07-16
    • 2017-09-23
    • 2011-08-04
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多