7

Background:

  • I have Sitecore (9.0.2) and xConnect running on my machine
  • I have another application which is a .net core application

Aim:

I have a form in the .net core application. When user fills the form I want to send the data to xConnect

Problem:

When I try to add a nuget reference from the .net core project to Sitecore libraries, I see the error:

Package Sitecore.XConnect.Client.NoReferences 9.0.180604 is not compatible with netcoreapp2.0 (.NETCoreApp,Version=v2.0). Package Sitecore.XConnect.Client.NoReferences 9.0.180604 supports: net462 (.NETFramework,Version=v4.6.2)

So I created another Class Library (.net 4.6.2) project in the solution, added references there and referenced the project from the .net core project. Everything compiles, but when I execute the code, I'm getting error:

FileNotFoundException: Could not load file or assembly 'Sitecore.XConnect.Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.

If I reference that class library from a simple mvc website and execute the code, it works.

Does it mean that it's not possible to send data to xConnect from a .net core application without some middleman?

6
  • 1
    Have you tried opening a request to the endpoint to send your request directly, rather than working with the .NET DLLs? I think this was the approach suggested for connecting via PHP. Aug 2, 2018 at 14:59
  • Do you mean calling the xconnect/odata directly without using XConnect.Client?
    – Marek Musielak
    Aug 2, 2018 at 16:39
  • Exactly, opening a connection to the webservice and forming the request. It sounds ugly, but I'm wondering if that would work to bypass the compilation issues Aug 3, 2018 at 13:45
  • Yeah, possibly that could do the trick. Do you know any documentation/blog post/tutorial? E.g. creating new contact or setting a facet via odata?
    – Marek Musielak
    Aug 3, 2018 at 14:42
  • Honestly, if I did I would have posted the content as an answer :) Unfortunately I have not had time to Google for this yet. Aug 3, 2018 at 22:34

1 Answer 1

2

To overcome these issues, best solution would be to wait for Sitecore 9.1 and use it's new Universal Tracker which perfectly fits your requirements.

The Universal Tracker is an open Web API which is open for direct communication.

enter image description here

However, Sitecore encourages to use the Universal Tracker Client SDK as an abstraction layer between your code and the Universal Tracker Web API.

The Universal tracker allows you to collect events from interactions and stores them in the experience database.

The Universal tracker is built with .Net Core and is built to perform and to scale to support large amounts of interactions and traffic. It has a pluggable architecture, open for you to extend and customize to your customer needs.

The Universal Tracker uses different stages. Each individual process can be scaled making it possible to support high volumes of requests.

Sitecore Universal tracker architecture

enter image description here

When an interaction occurs all events during that interaction are streamed in to the Universal Tracker Web API endpoint. This is stage is called Collection.

During Collection all the events are directly stored in temporary storage. After the interaction is finished, and the visit is timed-out, the stored events are sent to Processing.

During Processing we have the option to enrich the data before sending it to the xDB. For example, a JavaScript App registers an interaction without GEO IP data. During the processing of the interaction you can enrich the interaction by doing a GeoIP look-up using the IP provided logged with the event.

The architecture is pluggable so you can add functionality that support the data enrichment you need for your customers.

After the processing is finalized the data is sent to the xConnect service to be stored in the XDB.

Information taken from Pieter Brinkman's blog post: http://www.pieterbrinkman.com/2018/11/12/whats-new-in-sitecore-9-1-experience-platform/

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.