簡體   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