将类传递给WCF服务

时间:2009-10-30 02:42:25

标签: wcf

我遇到了问题,但首先我想知道我是否正在研究最佳解决方案。

我正在创建一个应用程序,该应用程序将位于数百台客户端计算机上,并将数据发送到服务器的/ retreive数据。服务器将获取该数据并存储/处理它。

我希望客户端应用程序尽可能轻量级,因此我希望服务器以类的形式传递/接收数据。例如

客户端按用户ID请求用户 服务器使用具有用户名,ID和个人信息的类UserDetails进行响应。

另一个例子是

客户请求项目 服务器响应ProjectDetails类,它具有项目ID,名称,描述,详细信息和活动列表(这是另一个类,因此应该实现为ActivitiesCollection)

我刚刚开始这个,发现很多人说WCF服务是要走的路,但我以前从未写过。这是真的?如果是这样,我如何向/从WCF服务传递复杂的类?

全部谢谢:)

〜戴夫

3 个答案:

答案 0 :(得分:11)

WCF服务由合同组成 - 服务合同定义了服务的行为(例如,您可以调用的服务方法),然后是数据合同,它定义了传递的数据

这些只是.NET类的属性,它们将它们暴露给WCF运行时。

在你的情况下,你可能会有类似的东西:

[ServiceContract]
interface MyUserService
{
   [OperationContract]
   UserDetails GetUserDetails(int userId);
}

然后是数据:

[DataContract]
class UserDetails
{
   [DataMember]
   int userId { get; set; }

   [DataMember]
   string userName { get; set; }
}

WCF非常灵活,可以让您对发送方式和内容进行大量控制,并且可以自动处理所有序列化和其他问题。不需要自己乱用尖括号汤!

查看WCF Developer Center了解大量优质内容,操作方法视频,文章等内容,以帮助您快速入门!

马克

答案 1 :(得分:2)

WCF为您做到这一点。这就像在WCF之前的.NET中使用Web服务一样 - 为您创建了'结构',您只需填充它们的属性。

  1. 在服务中创建业务对象
  2. 编写将这些对象发布为方法参数的服务
  3. 生成您将使用该服务的服务代理。
  4. 自动生成的服务代理将包含您需要的每个业务对象的类。就这么简单。

    你在评论中提到你

      

    通过添加项目解决了这个问题   参考我的服务,所以我可以使用   服务和我的相同课程   表格应用程序(原文如此)。

    这是一种合法的方法,但您不需要以这种方式共享对象。如果在客户端上生成服务代理,则将创建这些相同的类。您甚至可以在客户端应用程序中保存一些权重,因为只会创建所需的类。

答案 2 :(得分:0)

为什么不将XML序列化数据?不将其作为“类”本身的功能是,您可以拥有许多不同的客户端,可以针对标准平台无关的API进行编码。这就是最终使用的服务,允许不同的应用程序和语言与单个端点进行通信。