繁体   English   中英

Dynamics CRM 365 Web Api使用哪个C#OData客户端库?

[英]Which C# OData Client library to use for Dynamics CRM 365 Web Api?

我正在通过OData Web Api调用Dynamics 365,我想知道我可以使用哪个客户端库来简化编程。

我的用例是,我主要必须使用一个实体:联系人。 我想检索一些数据,编辑数据并创建新的联系人。 我正在以类似方式使用的另一种实体类型是地址。 一个联系人可以有多个地址。

Currenlty我正在使用简单的HTTP Client类与Dynamics进行通信。

我正在为Linux主机开发.NET Core应用程序,因此,我无法使用Dynamics CRM SDK(SOAP端点)。

我的问题是您的建议是:我应该使用Microsoft.OData.Client还是Simple.OData.Client 还是其他图书馆?

我根据本文尝试使用Microsoft.OData.Client并生成了一个客户端(proxy / wrapper): https : //blogs.msdn.microsoft.com/odatateam/2014/03/11/tutorial-sample-how-to -使用odata-client-code-generator生成客户端代理类/

问题是它会生成一个.cs文件,文件大小为86 MB。 也许以后使用此客户端可能是一种解决方案,但是在我们的项目中拥有如此大的源文件似乎太错误了。 我想避免它,但是我没有找到生成它的选项。如果我不小心打开它,Visual Studio崩溃,Intellisense变慢了,如果打开了ReSharper,VS的速度就大大降低了,等等。

我检查了Simple.OData.Client,似乎有不错的文档和API。 例如: https : //github.com/object/Simple.OData.Client/wiki/Retrieving-data

对于Microsoft.OData.Client,我没有找到如何在不生成整个客户端的情况下以类型化方式使用它的文档。 那可能吗? 我只在使用生成的上下文的地方找到了它: http : //odata.github.io/odata.net/v6/#04-01-basic-crud-operations

我认为使用Simple.OData.Client似乎是更好的选择,但我更喜欢使用Microsoft库。 你有什么建议吗?

我刚刚实现了从在Azure App服务中运行的.Net Core Web App到POC Dynamics 365 Web API的集成。 这包括读取参考数据(连接不同实体)和使用参考数据列修改实体。

我发现完整的OData接口生成是有问题的:

  • 找不到支持OAuth2授权和VS2019的工具
  • 完整的界面定义(包括导航属性/功能/动作)以及具有所有字段的所有实体变得难以导航,而VS导航则很缓慢。
  • 根据要使用的OData客户端,它将通过网络发送比所需更多的信息,并增加了基础REST OData服务的精神。
  • 生成的代码工具违反了C#编码规则(使用保留关键字,例如event,abstract,还生成了与封闭类型同名的成员),因此需要进行手动更正。

经过大量研究,我开始使用Simple.OData.Client,因为这使我

  • VS2019 / .Net核心兼容工具集/运行时
  • 使用OAuth2承载令牌连接到Dynamics 365 OData Web API
  • 在VS中编写类型化的代码
  • 仅创建我需要的实体模型/导航属性等
  • 只能选择您需要返回的实体属性,而不是200(较小的有效负载)

您必须自己创建在类型化的Fluent API中使用的实体类

如果希望CRM / C#代码之间的CRM实体名称不同,请使用DataContract属性。 然后,在进行Http调用时,Simple.OData将使用DataContract属性。

不幸的是,当我开始更深入地研究OAuth2授权和导航属性之类的问题时,并没有找到所有如此有见地的文档,而是在诸如github问题和一些高级教程(例如https://www.odata)之类的辅助资源中找到了所有答案。 org / blog / advanced-odata-tutorial-with-simple-odata-client /

同样,使用Fiddler查看来回的通讯对于理解正在发生的事情非常有用。

Microsoft已经引入了Web API,这是一种RESTful Web服务,您可以使用它来使用各种平台,编程语言和设备与Dynamics 365中的数据进行交互。

https://docs.microsoft.com/zh-cn/dynamics365/customer-engagement/developer/webapi/perform-operations-web-api

这是通过编程方式与Dynamics 365进行通信的新方式。

您可以使用几个库。 从下面的文章中,您可以找到这些内容。

https://community.dynamics.com/crm/b/briteglobalsolutions/archive/2017/10/22/webapi-library-comparison-in-dynamics-365

我个人使用过David Yack的图书馆。

https://github.com/davidyack

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM