C#webservice将类转换为自身

Gar*_*thD 4 .net c# web-services

我遇到了webservices的问题.我通常的开发方法是创建如下所示的类.

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
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

我的问题是,如果我从另一个应用程序(使用Project.Entities)调用我的web服务,我无法转换Project.Entities.EntityProject.API.EntityWebService.Entity.我想我明白为什么这不能编译,因为就编译器而言,这两个类没有任何共同之处,只有它们的名字.

我真正需要知道的是,如果我打了这个问题,因为坏的做法,如果我需要尽快开始重新设计,或者如果我不应该担心它,只是改变我引用来自Entities.EntityAPI.EntityWebService.Entity我的应用程序(这肯定能"因为我的应用程序和我的webservice都使用相同的DLL,它只是引入了需要转换的web服务,所以我将如何创建转换方法.或者如果我错误地实施了正确的想法,或者错过了某些东西.或者以上都不是......

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

Not*_*tMe 5

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

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

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

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