C#-在客户端和服务器之间发送对象

C#-在客户端和服务器之间发送对象,c#,object,client-server,C#,Object,Client Server,我已经处理了一个学校的项目来完成,目前我被困在一个特定的点。该项目的目标是创建一个OO系统,该系统以一种非常特定的方式处理数据——服务器和客户端都有模型层信息的定义,但服务器必须处理保存到关系数据库中的所有数据 因此,客户机和服务器都有一个完全不同的控制器层。目前,只编写了服务器端,它处理关系到对象的映射,并且通常管理所有对象(R2O是通过实体框架解决的)。但问题是重构对象必须以某种方式传输到客户端 我的问题是:这样做的最佳解决方案是什么?我无法更改布局(因此客户端无法直接连接到数据库服务器,不

我已经处理了一个学校的项目来完成,目前我被困在一个特定的点。该项目的目标是创建一个OO系统,该系统以一种非常特定的方式处理数据——服务器和客户端都有模型层信息的定义,但服务器必须处理保存到关系数据库中的所有数据

因此,客户机和服务器都有一个完全不同的控制器层。目前,只编写了服务器端,它处理关系到对象的映射,并且通常管理所有对象(R2O是通过实体框架解决的)。但问题是重构对象必须以某种方式传输到客户端

我的问题是:这样做的最佳解决方案是什么?我无法更改布局(因此客户端无法直接连接到数据库服务器,不幸的是,需要有一个数据提供服务器,必须解决这一部分的并发管理),但我真的找不到一种简单的方法来通过TCP连接传输具有相互关系的不同类的对象


再说一遍-您建议的解决方案是什么,或者更广泛地说,我的选择是什么?

您需要研究对象的序列化

如果需要将对象从服务器传输到客户端,则需要将其序列化为二进制或其他形式;使用TCP连接进行传输;然后在客户端对其进行反序列化以重新生成对象

可以通过这种方式传输一个或多个对象

MSDN上的这篇文章概述了seralisation-

这个博客条目提供了一个基本的实现-


你必须根据自己的需要进一步调整这一点;但这正是我期望的家庭作业的重点。

在.net中通过TCP/IP传输数据的最简单方法是WCF。关于代码项目有一个很好的教程:


此外,您可能还需要跟踪实体的状态(我的意思是当它们被发送到客户端并返回时)。如果使用EF,请查看自跟踪实体:

查看WCF-您需要将对象转换为可以通过网络发送的其他类型的数据,例如字符串。这称为序列化对象(通过框架或手动),然后在另一端反序列化它们。这是什么类型的服务器?这是WCF服务吗?如果不是的话,我会调查一下。告诉你的老师联系我,我会解释为什么教分布对象是个糟糕的主意。20年来,我们的行业一直试图做到这一点,但收效甚微。同时,我建议研究DTO或(DataTransferObjects)的概念实际上分发对象并不是一个确切的任务,但我能想到的最简单的实现(任务是,制作一个服务器端服务,可以分发已经从关系形式处理过的数据,并且可以直接在代码中使用)以前从未研究过WCF,但似乎这是最好的解决方案。由于将有多个不同的客户端(包括一个用ASP.NET编写的web界面,可能是用MVC3编写的),我将继续实现它。非常感谢你!序列化不是一个选项,我已经考虑过这个想法,但问题是,经常需要首先手动发送数据类型,然后发送实际信息,如果服务器端有轻微的变化,所有客户端都会发疯。因此,不,不幸的是,它不能用在我的情况下,虽然它是非常具体的,首先。