Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

.NET Standard support for Table API #344

Open
SeanFeldman opened this issue Sep 15, 2017 · 75 comments
Open

.NET Standard support for Table API #344

SeanFeldman opened this issue Sep 15, 2017 · 75 comments
Labels

Comments

@SeanFeldman
Copy link

SeanFeldman commented Sep 15, 2017

CosmosDB Table API is promoted as the replacement for Table Storage.
Table Storage has support for .NET Standard. This library doesn't.
Almost a year ago, it was mentioned that work on .NET Standard 1.6 is in progress and should be shortly released.
As of today, the latest version of the CosmosDB .NET client does not support .NET Standard.

This impedes migration plans for those that have to support .NET Standard.
Please provide an update and/or a milestone.

Update: latest client package name has changed to Microsoft.Azure.CosmosDB.Table

@kirankumarkolli
Copy link
Member

@SeanFeldman which API are you consuming (Table API/document API)?

@SeanFeldman
Copy link
Author

Table API @kirankumarkolli

@kirankumarkolli
Copy link
Member

@SeanFeldman table API standard version is tracked for the end of year.

@SeanFeldman SeanFeldman changed the title .NET Standard support .NET Standard support for Table API Sep 15, 2017
@SeanFeldman
Copy link
Author

SeanFeldman commented Sep 15, 2017

Thank you @kirankumarkolli

Not to be a PITA, but could you please either assign some milestone to this issue (I've renamed it to be more accurate) or raise another one? Even a label like table-api would help. Similar to what you've done for the graph API here. Thank you.

@kirankumarkolli
Copy link
Member

Labeled it as Table.

@rnagpal
Copy link
Contributor

rnagpal commented Sep 17, 2017

@SeanFeldman DocumentDB Client SDK has a .NET Standard version which we released last year https://docs.microsoft.com/en-us/azure/cosmos-db/documentdb-sdk-dotnet-core As Kiran mentioned, we would be releasing .NET Standard for Premium Table SDK in the near future.

@SeanFeldman
Copy link
Author

Thank you @rnagpal. I was specifically asking about Tables API 🙂
Will track this issue for progresses.

@SeanFeldman
Copy link
Author

Microsoft.Azure.CosmosDB.Table client has GA-ed. Would be nice to see status/progress update on this issue. Thanks.

@yaronyg
Copy link

yaronyg commented Nov 20, 2017

Microsoft has two different table offerings, Azure Table storage and Azure Cosmos DB Table API. They each target different audiences but use the same SDK. You can get a clear idea of how to choose which service by looking at https://docs.microsoft.com/en-us/azure/cosmos-db/table-introduction. I'm also tracking down the .net standard issue now with @kirankumarkolli

@SeanFeldman
Copy link
Author

Thank you. @yaronyg
Just to be clear - this issue is about .NET Standard support for Azure Cosmos DB Table API.
Any mentioning of the Azure Storage tables is irrelevant 🙂

@yaronyg
Copy link

yaronyg commented Nov 22, 2017

@SeanFeldman we don't currently support .net standard for Tables API but we do intend to eventually fix it.

@SeanFeldman
Copy link
Author

@yaronyg any idea on the bulk part when to expect it?

@yaronyg
Copy link

yaronyg commented Dec 18, 2017

@SeanFeldman not sure what you mean by bulk part?

@SeanFeldman
Copy link
Author

@yaronyg ETA w/o overcommitting

@yaronyg
Copy link

yaronyg commented Dec 19, 2017

@SeanFeldman Sorry for the slippage, but currently this is planned for the first 1/2 of 2018.

@johlrich
Copy link

johlrich commented Feb 5, 2018

It looks like a new version of the package hit nuget last week without netstandard support. Any updates to when we can expect to see that?

@yaronyg
Copy link

yaronyg commented Feb 5, 2018

We are still on the same schedule as I previously specified, first 1/2 of 2018.

@paulinventome
Copy link

Is there any way to use TableAPI in Cosmo from a dot net core application at the moment, going through the older Windows.Storage libraries? I'm working on a large ish project and if i can't get table support then it will be AWS or similar instead.

@aboo
Copy link

aboo commented Apr 30, 2018

Can I get a rain check on this please?

@kirankumarkolli
Copy link
Member

Azure Cosmos table API is REST protocol compliant with Azure table storage. .NET standard Widnows storage SDK can be leveraged as an alternative.

@SeanFeldman
Copy link
Author

@kirankumarkolli while it's true that the API is a REST protocol at heart, when working with .NET stack, you want to use a .NET SDK client rather than REST API.

You can prepare pizza dough, all the ingredients, and bake the pizza at home. Or can go to the restaurant. Relating to the metaphore, I guess we're paying by waiting @aboo 🙂

@aboo
Copy link

aboo commented May 2, 2018

Cannot agree more with @SeanFeldman
We've a backlog which makes a lot of sense to do with CosmosDB Tables Api and we've waited so long trying to avoid doing something in parallel with what MS is doing. Just yesterday we've decided to use CosmosDB SQL. Still would be great to have this SDK out ASAP. Thanks.

@TechInceptions
Copy link

First 1/2 of 2018 is almost upon us - should we look for alternative approaches?

@MisinformedDNA
Copy link

@yaronyg Are we still on track? Is there anything we can do to speed this along? 16 days left...

@yaronyg
Copy link

yaronyg commented May 15, 2018

@MisinformedDNA @kirankumarkolli is a better person to ask than me. :)

@manigandham
Copy link

manigandham commented May 28, 2018

Side note:

All data in CosmosDB is stored the same underneath using its proprietary architecture and just exposed with different interfaces, so you can use any of the other APIs to get the same performance and scale. The Cassandra data model is a similar wide-column style to Azure Tables and it supports pretty much all of the same operations. The existing Storage Tables API also isn't going anywhere, and the pricing model is different too.

@pcoppney
Copy link

pcoppney commented Oct 7, 2018

Ok, it is October. Any updates on this?

@wmengmsft
Copy link

We are almost there. We expect to push out the preview version of the .NET Standard SDK during the week of 10/15. Really appreciate your patience with us so far waiting for this release.

@pnda489
Copy link

pnda489 commented Oct 10, 2018

Will this preview .NET Standard SDK be released through NuGet?

@pnda489
Copy link

pnda489 commented Oct 15, 2018

We are almost there. We expect to push out the preview version of the .NET Standard SDK during the week of 10/15. Really appreciate your patience with us so far waiting for this release.

We really want to go on and use Cosmos DB. :( Any updates?

@aboo
Copy link

aboo commented Oct 15, 2018

Well, not sure what the issue is but personally I'm not very optimistic that this package will be released any time soon. How hard is it to write a client for an API? and CosmosDb is already there and Tables is just a simple dialect of CosmosDB.

I've delayed a part of our project for over 6 months now waiting for this client to be released. We are using CSV files at the moment. I wish we had implemented our own client at the time.

If the team could push whatever they have, the community will finish it.

@wmengmsft
Copy link

Hi all, thank you for your patience all this time. We just released a preview of the .NET Standard SDK for Cosmos DB Table API. You can download it here. We aim to pick up the pace of development in the future. Please send us feedback and we will address them as quickly as we can. Thanks!

@aboo
Copy link

aboo commented Oct 20, 2018

Just confirming that this work :)

Apparently it only supports Cosmos DB Tables at the moment and if you try it with Storage tables you will get an error saying it's not supported.

Here is a link to the release note page.

I followed the .Net Framework samples and was able to create a table, add an item and query the table successfully.

Would be great if someone from the dev team can share the road map for this package.

Thanks so much.

A bit late but hey late is always better than never ;)

@SeanFeldman
Copy link
Author

SeanFeldman commented Oct 20, 2018 via email

@ggirard07
Copy link

Can anyone confirm whether the SDK will be updated to support Azure Storage Table endpoints?

Trying to figure out whether we will have to migrate to CosmosDB instead of Azure Storage at some point to have access to latest SDK updates. I hope no as the CosmosDB pricing is way too different from Azure Storage and does not match our requirements...

@geekcubed
Copy link

Please send us feedback and we will address them as quickly as we can. Thanks!

Well @wmengmsft - you asked, so here it is. What a cluster **** this is. We have been using DocumentDb CosmoDB in production for over 3 years - I'd like to think we have a handle on how to do this Azure stuff by now. I'm in the midst of porting some architecture from Net 4.7 to Net Standard. I thought the hard part was going to be migrating from EF6 to EFCore - turns out I was wrong. Here's a reality check for you:

  • Support for Azure Tables is available in the WindowsAzure.Storage package v <= 9.3.2 😐
  • <= v.9.3.2 of the storage library is not semantically versioned between platforms - re-targeting from framework to standard breaks a bunch of their SDK calls 🤦‍♂️
  • Luckily v9.4 is semver between platforms 😃
  • But as of v9.4, support for Azure Tables is not supported & the advice is the use the CosmosDB SDK 😬
  • Microsoft.Azure.CosmosDB.Table is not compatible with .net Standard 😭

Azure has grown immeasurably since we first adopted the platform - and quite frankly it looks like it's about to blow apart at the seams. The various platform teams need to sit down in a big room and sort this stuff out.

Right now I'm totally stuck - rewrite a bunch of code to support an older version of the Storage Library, or just park a giant investment in the future of out platform until the technology we depend on gets itself together

@dlouwers
Copy link

dlouwers commented Nov 8, 2018

We are at the point of selecting a cloud provider and services. Azure Table Storage, as well as CosmosDB Tables, are a good fit for one of our core needs but it has to be .NET Standard compliant. When can we expect the .NET Standard support for CosmosDB Tables to be complete and ready for production and is there a definitive period for which it will be maintained?

@wmengmsft
Copy link

@dlouwers, the .NET Standard SDK will be maintained for extended period of time (all foreseeable future). The goal is to make it the defacto .NET library for Table API. Currently we are looking to get to GA by early next year (around Jan).

@TechInceptions
Copy link

Just start re-implementing my library using the .Net Standards package.

Noticed that the StorageCredentials class was reimplemented, but lacks the constructor that takes a Sas-powered Url to the Azure storage table:

Example:
(New) .Net Standard:
var storageAccount = new CloudStorageAccount(new StorageCredentials(accountName, accountKey), true);

(Old) .Net Framework:
var storageAccount = new CloudStorageAccount(new StorageCredentials(storageTableSasUrl), true);

The StorageCredentials class in "new" exists in the Microsoft.Azure.Cosmos.Table namespace, while the class in "old" exists in the Microsoft.Azure.Storage.Auth namespace.

Are we going to get a constructor that takes a Sas key-powered Uri?

Using a Sas key-powered Uri is a more secure way to access an Azure storage table - it means we don't have to expose the storage account key.

Thoughts?

@vascofernandes
Copy link

vascofernandes commented Dec 2, 2018

@geekcubed is very right. This is a complete mess. Also there is a severe lack of proper communication with the community about this.

To add to all the problems, this package https://www.nuget.org/packages/Microsoft.Azure.Cosmos.Table does not support BufferManager, which was available previously.

Microsoft_WindowsAzure_Storage_Table_CloudTableClient_BufferManager

Microsoft_Azure_CosmosDB_Table_CloudTableClient_BufferManager

Moreover, TableRequestOptions does not have the property EncryptionPolicy.

@Fredborg
Copy link

Fredborg commented Dec 4, 2018

Hi,

Been trying out the Microsoft.Azure.Cosmos.Table -Version 0.9.1-preview.

If i new up a .net core console app project, and call methods in my .net standard library that uses the .net standard version of Microsoft.Azure.Cosmos.Table, everything seems to work just fine.

However, calling the exact same methods from my Azure Function fires Storage Exceptions:

Exception while executing function: NewFunction.
Microsoft.Azure.Cosmos.Table: Method not found: 'Void Microsoft.Azure.Documents.Client.DocumentClient..ctor(System.Uri, System.String, Newtonsoft.Json.JsonSerializerSettings, Microsoft.Azure.Documents.Client.ConnectionPolicy, System.Nullable`1<Microsoft.Azure.Documents.ConsistencyLevel>)'.

It seems to me, that this must be a versioning issue, with using a constructor method that has changed?

Or it can be a binding redirect issue, that Azure Functions suffers from, especially with versions of Json.

But if I can get it to work fine calling it from a .Net Core app, I really should be able to get it working using Azure functions.

Any help - or ideas?

@SeanFeldman
Copy link
Author

Is Table API client going to GA at some point soon? I'm not asking for a specific date, but to have an idea where this is heading. Some customers do not want to touch a nuget that is in it's first preview state. Thank you.

@wmengmsft
Copy link

@SeanFeldman , there are a couple items we are actively working through for the new Table API SDK before going GA:

  • Adding a few missing APIs and support for Azure Storage endpoints. This will also address the needs of a few folks who are in the process of migrating the application.
  • Moving to Microsoft.Azure.Cosmos as a dependency (instead of Microsoft.Azure.DocumentDB). This will bring additional performance improvements and align with our overall .NET clients roadmap.
  • Make the code-base ready to be open-sourced.

We are targeting a GA release sometime towards the latter part of this quarter.

@MisinformedDNA
Copy link

@wmengmsft Interesting that you have to make your code "ready" to be open-sourced, instead of just developing in the open.

@raghukrishnamoorthy
Copy link

@geekcubed I can feel your pain from across the planet.

I need help folks. I have a Azure Bot Service application built on .NET Core that needs to use Azure Table Storage and the Table storage APIs are not supported for .NET Core. What do I do now? I need a solution within a week. What do I tell the stakeholders?

@geekcubed
Copy link

@raghukrishnamoorthy - I've just used v9.3.2 of WindowsAzure.Storage : we went with that and have been running it in our dev stack for 3 months with no issues, and will take it production shortly. We'll continue to use it for Table Storage support until CosmosDB get their library sorted (which we already use to connect to CosmosDB itself)

@raghukrishnamoorthy
Copy link

@geekcubed Are there any samples using that version of the WindowsAzure.Storage library? I need basic persistence and retrieval. That's all.

@geekcubed
Copy link

@raghukrishnamoorthy http://lmgtfy.com/?q=azure+table+storage+WindowsAzure.Storage+tutorial

@raghukrishnamoorthy
Copy link

@geekcubed I googled and tried the examples and had some problems running the samples on the docs site. Nonetheless, thanks for the snarky response. I'll poke around some more.

Have a good one :)

@ilya-git
Copy link

ilya-git commented Feb 5, 2019

I am a bit confused on the Azure Table Storage support for this new library. It seems to work in my tests, but the name of the library clearly says it is for CosmosDB.

Will this library officially support both Azure Table Storage and Cosmos DB Table API?

@wmengmsft
Copy link

@geekcubed, have you looked at our new .NET Standard Table SDK? It now supports Azure Storage Table endpoints as well.

@raghukrishnamoorthy, I hope the above SDK can solve your needs. Here is a sample available here. Please let us know if you encounter any issues using it.

@ilya-git, yes, this SDK officially supports both Azure Table and Cosmos DB Table API endpoints.

@ilya-git
Copy link

ilya-git commented Feb 5, 2019

Thank you for the answer, is it already possible to use that one in production or is it premature for that?

I have tried using Microsoft.Azure.Cosmos.Table and Microsoft.WindowsAzure.Storage in .net core and it seems that the first one is sometimes unstable against Cosmos Table API but works against storage just fine. It just hangs on read/insert operations without throwing any exception. The second library just works all the time

@TechInceptions
Copy link

It now supports Azure Storage Table endpoints as well.

That is a big deal - I have been waiting for Azure Storage Table support for since May 2018.
Thanks :-)

@manigandham
Copy link

manigandham commented Feb 5, 2019

Is there a reason why the new SDK is a brand new package at Microsoft.Azure.Cosmos.Table instead of updating Microsoft.Azure.CosmosDB.Table?

https://www.nuget.org/packages?q=microsoft.azure.cosmos

This will end up causing more confusion in an already confusing list of SDKs. I highly recommend consolidating these library names while they are still new.

@SeanFeldman
Copy link
Author

@manigandham I can only assume that multi-targetting is not possible with Microsoft.Azure.CosmosDB.Table. Hence a new package. Agreed, it's sub-optimal.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests