我遇到了问题,但首先我想知道我是否正在研究最佳解决方案。
我正在创建一个应用程序,该应用程序将位于数百台客户端计算机上,并将数据发送到服务器的/ retreive数据。服务器将获取该数据并存储/处理它。
我希望客户端应用程序尽可能轻量级,因此我希望服务器以类的形式传递/接收数据。例如
客户端按用户ID请求用户 服务器使用具有用户名,ID和个人信息的类UserDetails进行响应。
另一个例子是
客户请求项目 服务器响应ProjectDetails类,它具有项目ID,名称,描述,详细信息和活动列表(这是另一个类,因此应该实现为ActivitiesCollection)
我刚刚开始这个,发现很多人说WCF服务是要走的路,但我以前从未写过。这是真的?如果是这样,我如何向/从WCF服务传递复杂的类?
全部谢谢:)
〜戴夫
答案 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服务一样 - 为您创建了'结构',您只需填充它们的属性。
自动生成的服务代理将包含您需要的每个业务对象的类。就这么简单。
你在评论中提到你
通过添加项目解决了这个问题 参考我的服务,所以我可以使用 服务和我的相同课程 表格应用程序(原文如此)。
这是一种合法的方法,但您不需要以这种方式共享对象。如果在客户端上生成服务代理,则将创建这些相同的类。您甚至可以在客户端应用程序中保存一些权重,因为只会创建所需的类。
答案 2 :(得分:0)
为什么不将XML序列化数据?不将其作为“类”本身的功能是,您可以拥有许多不同的客户端,可以针对标准平台无关的API进行编码。这就是最终使用的服务,允许不同的应用程序和语言与单个端点进行通信。