2012-11-20 116 views
2

我搜遍了互联网,几本书,甚至咨询过一些同行。如果我试图做的事情是不好的做法,没有什么真正的说明。短小;我只是从客户那里做了一个让人难忘的事情。WCF服务实施

[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 /用户输入;那么该服务会使用从用户收集的信息来调用服务器端功能。

示例: 文本框(名称) - >服务 - >服务器将名称作为变量执行一系列任务:将名称写入数据库,按用户名命名文本文件等。

+1

您是否可以更清楚地知道您要从哪里推送数据以及在哪里接收(并可能广播回)?另外,你是否试图做一些动态的事情,比如传递属性名称或类似的东西? – casperOne

+0

我不认为你的代码会编译。你不能在界面中有字段。此外,当DataContractSerializer尝试反序列化您的合约并且无法确定类定义时,您可能会遇到运行时错误。你不应该使用接口作为DataContracts,只能使用类。 –

+0

@JoshC。;例如,有一些方法可以将与接口相关的序列化问题作为DataContracts进行处理; http://msdn.microsoft.com/en-us/library/system.servicemodel.serviceknowntypeattribute.aspx –

回答

3

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