2014年05月19日
川俣晶の縁側ソフトウェア技術雑記 total 4803 count

Azure SDKを2.3にアップグレードしてクライアントとサービスの間で型の不一致が発生する問題

Written By: 川俣 晶連絡先

「良く分からないが経験のメモだ」

「なんだい?」

「Azure SDK 2.2から2.3にしたら問題が出まくりで対処を迫られた」

「非互換性が多いわけだね?」

「DLLのバージョン競合問題とかその辺は横におく」

「うん」

「問題は、AzureのStorage Libraryが2.xから3.xになったこと」

「それで?」

「どうも、1.x時代のAPIと2.xのAPIが混在したアプリは3.xで問題を起こすようだ」

「具体的には?」

「2.xのAPIでテーブルに書いて1.xのAPIであるTableServiceContext経由でクエリをしようとするとこうなるようだ」

クライアントとサービスの間で型の不一致が発生しました。型 'CloudCommonLib.ApplicationUser' はエンティティ型ではありませんが、応答ペイロード内の型はエンティティ型を表します。クライアントで定義された型がサービスのデータ モデルと一致するようにするか、クライアントでサービスの参照を更新してください。

「それでどうすればいいわけ?」

「更新すべきサービスの参照なんて無いし、何をどうすればいいのか全く分からなかったのだが、AzureのStorage Libraryを4.0に上げてやっと分かった。TableServiceContextはObsolete扱いになって警告がバシバシ出るので、これを使わないように書き換えた。つまり2.x以降のAPIに統一した。これでとりあえずローカルで動いた」

「へー。もう4.0なんてあるんだ。でもそれを使うのは大変じゃないか?」

「nugetでアップグレードするだけだから簡単だよ」

「ひぇ~」

感想 §

「結局、昔Azureをものにしようと思って学んだことは、今はほとんど使えなくなっている」

「泣ける話だね」

「あの努力は何の意味があったんだ! CloudCommonLibにあるTableServiceContextを作成するサービスメソッドの存在意義は何なんだ!」

「もう無いってことだね」