用于Dynamics CRM 365 Web API的哪个C# OData客户端库?

8

我通过Dynamics 365的OData Web Api调用程序,并想知道我可以使用哪个客户端库来使编程更容易。

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

目前,我正在使用纯HTTP客户端类与Dynamics进行通信。

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

我的问题是您的建议是什么:我应该使用 Microsoft.OData.Client 还是 Simple.OData.Client?还是其他任何库?

我尝试使用Microsoft.OData.Client并根据这篇文章生成了一个客户端(代理/包装器):https://blogs.msdn.microsoft.com/odatateam/2014/03/11/tutorial-sample-how-to-use-odata-client-code-generator-to-generate-client-side-proxy-class/

问题在于它生成了一个大小为86 MB的.cs文件。也许这个客户端后来可以成为解决方案,但在我们的项目中拥有如此大的源文件似乎是不正确的。我想避免这种情况,但我没有找到生成这个的选项。如果我不小心打开它,Visual Studio会崩溃,智能感知有时会变得很慢,如果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库。 你有任何建议吗?

"Dynamics CRM SDK(SOAP端点)" -- 你能否提供文档链接或其他证明为什么Dynamics CRM/Dataverse SDK使用SOAP?我从未见过关于CRM .NET SDK的这个细节被记录在案。 - Don Cheadle
2个回答

5
我刚刚实现了一个从在Azure App服务上运行的.Net Core Web应用程序到Dynamics 365 Web API的集成作为POC。这包括读取参考数据(连接不同的实体)和修改具有参考数据列的实体。
我发现完整的OData接口生成存在问题:
- 找不到支持OAuth2授权和VS2019的工具。 - 完整的接口定义包括导航属性/函数/操作和所有实体及其所有字段,变得难以操作,而且VS导航很缓慢。 - 根据您要使用的OData客户端,它将发送比所需更多的信息,并增加了不符合底层REST OData服务精神的复杂性。 - 生成的代码工具违反了C#编码规则(使用保留关键字如event、abstract,还生成与封闭类型相同名称的成员),需要手动更正。
经过大量研究后,我开始使用Simple.OData.Client,因为它允许我:
  • VS2019 / .Net Core 兼容工具集/运行时
  • 使用 OAuth2 令牌连接到 Dynamics 365 OData Web API
  • 在 VS 中编写类型化代码
  • 只创建所需的实体模型/导航属性等
  • 可以选择要返回的实体属性,而不是全部(更小的负载)

您必须自己创建用于类型化流畅 API 的实体类

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

不幸的是,当我开始深入研究 OAuth2 授权和导航属性等问题时,我并没有发现文档非常有见地,但我在第二手来源中找到了所有答案,例如 github 问题和一些高级教程,例如 https://www.odata.org/blog/advanced-odata-tutorial-with-simple-odata-client/

此外,使用 Fiddler 查看来回通信非常有用,可以理解正在发生的事情。


非常感谢您的回答!我一直在努力将Web API集成到我的项目中! - user1429210
有没有其他针对 .NET 5 的项目可以用来调用 Dynamics 365 Web API? - Rémi Benoit
刚刚发现 Microsoft.AspNetCore.OData 8.x 的目标是 .net5。 - Rémi Benoit

-3
微软推出了Web API,这是一个RESTful Web服务,您可以使用各种平台、编程语言和设备与Dynamics 365中的数据进行交互。

https://learn.microsoft.com/en-us/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

希望这能有所帮助。

1
我知道Web API,我已经在使用它了。我正在使用C#,而不是像你发送的链接中的javascript。我想使用一个.net core或.net standard C#库来使API的使用更加方便。 - Tamas Molnar
你也可以使用C#来调用这个API。 - Vaibhav Ghorpade

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接