C# Web 服务 将类转换为自身

本文关键字:转换 Web 服务 | 更新日期: 2023-09-27 18:33:30

我在网络服务方面遇到了问题。我通常的开发方法是创建如下所示的类。

namespace Project.Entities
{
    public class Entity
    {
        //Some Members        
    }
}
namespace Project.Service
{
    public class EntityService
    {
        public Project.Entities.Entity Get(int EntityID); 
        // More Methods to retrive Entities
    }
}

当允许应用程序/网站直接访问数据库时,这对我来说效果很好。我现在需要通过网络服务公开Project.Service方法,例如

namespace Project.API
{
    public class EntitiyWebService
    {
        [WebMethod()]
        public Project.Entities.Entity Get(int EntityID)
        {
            return new Project.Service.EntityService(EntityID);
        }
    }
}

我的问题是,如果我从另一个应用程序(使用 Project.Entities(调用我的 Web 服务,我无法将Project.Entities.Entity转换为Project.API.EntityWebService.Entity。我想我理解为什么这不能编译,因为就编译器而言,这两个类除了它们的名字之外没有任何共同点。

真正需要知道的是,我是否因为不良做法而遇到了这个问题,如果我需要尽快开始重新设计,或者我是否不应该担心它,只是在我的应用程序中将我的引用从Entities.Entity更改为API.EntityWebService.Entity(当然这不是最好的解决方案(,或者我将如何创建转换方法,因为我的应用程序和我的 Web 服务都使用相同的 DLL, 它只是引入了需要转换的 Web 服务。或者如果我错误地实施了正确的想法,或者错过了一些东西。或者以上都不是...

我已经考虑过让我的 Web 服务只返回 XML 并在我的应用程序中序列化结果,但这似乎是一种冗长的方法,必须有更好的解决方案。任何建议将不胜感激。

C# Web 服务 将类转换为自身

在处理 Web 服务时,我们采取了不尝试让 .net 执行自定义对象的常规序列化/反序列化的方法。

相反,我们使用 JSON 传递所有内容。 有一些标准工具可以使序列化/反序列化过程非常顺利。 如 http://json2csharp.com/和 http://json.codeplex.com/

有几个原因。 首先是通过使用诸如JSON之类的标准,那么几乎所有的东西都可以使用它。 其次,XML是混乱的...非常凌乱。 做对也很难,做错也很容易。 第三,我们更容易控制确切的输出。

最后,关于传递 JSON 对象的一个有趣说明是,您可以在提供程序中向其添加新字段,并在以后更改使用者。 这是非常宽容的。

您应该开始使用 WCF。

在 WCF 中,可以使用数据协定公开所需的数据。

所有序列化和

反序列化都是自动发生的,您可以在客户端和服务器上获得相同的类型,而无需额外的工作。