2017-06-09 6 views
1

活字するコントローラ:ASP。ネットコアDTOのと私の考えは、2つの主要な要素で構成されたクラス&インタフェース

  1. はC#DTOの(データ-tranfer-オブジェクト)を取り、クライアント側を確実にするためにtypescriptですインタフェースに変換しますモデルはサーバー側と同期しています。
  2. ASPの.Netコアコントローラエンドポイントを使用して、httpサービスなどを使用するtypescriptクラスに変換します。再び、クライアント側の要求がサーバーと同期していることを確認します。

コントローラーまたはdtoに変更が加えられるたびに、typescriptで生成されたアイテムを更新して、開発中に同期させておく必要があります。

私はいくつかの研究を行って、次のスタックオーバーフローのスレッドや他のソースを発見した:偉大なようだTypeLiteライブラリを、使用することをお勧め

  • DTO to TypeScript generatorが、ドキュメントによると、これは[いずれかを必要TsClass]起動時の属性またはクラスへの参照。しかし、私が使用しているプロジェクト構造は、すべてのdtoが* .Dtos名前空間に配置されるように設定されているので、TypeScript.Definitions()。ForNameSpace()が欠けています。また、これは最初のアイデア/問題を解決するだけです。

  • Swashbuckly.AspNetCoreコントローラとdtoの両方から派手な文書を生成できるようにするには、多少の文書を解釈して、それからtypescriptクラスとインターフェイスを作成することです。私が読むことができる限り、サーバーを起動する必要があります。可能であれば、ファイル変更時に更新するのが難しくなるので、避けたいと思います。

FYI、これは私が始まろうと思い、新しいプロジェクトなので、更新するレガシーコードはありません、また、ASP .NETのコアすべてのエンドポイントは)OK(の復帰を可能にするためにIActionResultを返します。 、BadRequest()などがあります。ですから、復帰モデルを得ることは、もしあれば、それを得るための簡単な方法がないので、私の心の中では難しいでしょう。

だから、私は両方の問題を解決し、以下の解決策を考えています

  1. Swashbuckly LIBを使用し、全体のサーバーを起動することなく、モデルとコントローラを生成し、別のパッケージ/アプリケーションを作成します。

  2. [Produces(SomeDto)]の行に沿ってすべてのエンドポイントでアノテーションを作成します。ここで、リフレクションを使用して小さな情報を取得し、そのタイプスクリプトを生成する小さなコンソールアプリケーションを作成します。これは、開発者にこの情報を同期させておく必要があるため、私の考えでは情報が重複しています。

しかし、これらのソリューションは両方とも、C#ソースファイルの保存時に自動更新されません。

ディスカッション/ご提案をお待ちしております。

+0

私は類似したものを評価しています。 TypeLiteパスを使用すると、現在.NET Coreはサポートされていないことを警告します。しかし、.NETでTypeLiteが最適なソリューションであることがわかりました。ネームスペースの読み込みパターンは提供されませんが、再帰的な識別を使用して、参照されているすべての属性モデルが決定されます。したがって、1つまたは2つのトップレベルモデルがある場合は、これらのモデルとすべての子属性タイプを参照するだけで、最も低いレベルのモデルにもロードされます。 –

答えて

1

あなたがまだ見ている場合は...私はタイプライターhttp://frhagn.github.io/Typewriter/はあなたの解決策だと思います。どのように変換するかを指定するテンプレートを生成することができます。

複雑なフォルダ構造を動的に生成するツールが必要なので、私のニーズをすべて満たすことはできませんが、それはv2のロードマップに入っています。

それ以外にも、大量の持ち上げがあり、設定が非常に簡単です。

関連する問題