moving data from one place to the other is the fastest if there's the least amount of serialization. If this is a one-time thing, you could export data from sqlserver and import it again using SMSS.
If you're running on .net fx, you can try binary serialization, it's very fast in our framework. It's often scoffed at but it can help a lot. Running on .net core, you're likely needing to go the json route. also if it's a service which is publicly accessible, it might be a good idea to implement a webapi indeed.
a soap service is old hat, you can either do a WCF service or webapi, the latter is also available on .net core. Project your data to DTOs (e.g. using a derived model created in the designer using the generated code, return the data from the webapi (so you can protect it with e.g. oauth) and write it back to the database on the other side with the generated persistence code for the dto derived models.