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.Entity
为Project.API.EntityWebService.Entity
.我想我明白为什么这不能编译,因为就编译器而言,这两个类没有任何共同之处,只有它们的名字.
我真正需要知道的是,如果我打了这个问题,因为坏的做法,如果我需要尽快开始重新设计,或者如果我不应该担心它,只是改变我引用来自Entities.Entity
于API.EntityWebService.Entity
我的应用程序(这肯定能"因为我的应用程序和我的webservice都使用相同的DLL,它只是引入了需要转换的web服务,所以我将如何创建转换方法.或者如果我错误地实施了正确的想法,或者错过了某些东西.或者以上都不是......
我已经考虑过让我的web服务返回XML并在我的应用程序中序列化结果,但这似乎是一个长期的方法,必须有一个更好的解决方案.任何建议将不胜感激.
在处理Web服务时,我们采取的方法是不让.net对自定义对象进行常规序列化/反序列化.
相反,我们使用JSON传递所有内容.有一些标准工具可以使序列化/反序列化过程非常顺利.例如http://json2csharp.com/和http://json.codeplex.com/
有几个原因.第一个是通过使用诸如JSON之类的标准,那么几乎所有东西都可以使用它.其次,XML很乱......非常混乱.这样做也很难,而且很容易做错.第三,我们可以更轻松地控制确切的输出.
最后,关于传递JSON对象的一个有趣的注意事项是,您可以在提供程序中向其添加新字段,并在以后更改您的使用者.这是非常宽容的.
归档时间: |
|
查看次数: |
992 次 |
最近记录: |