その後、フロントポスト、迅速要求フォーマットをパッケージに固定インターフェース、コードを変更する必要はありませんが、自動的にインターフェース呼び出し、実際にプロキシクラスのインタフェースを生成を行うことができます。
それはインタフェースの実装クラスWEBAPIコントローラとして展開する必要がどのようにライン?ちょうどインタフェースリクエストブローカー、ないサーバーです。
ABPは、原則は、公式ドキュメントを参照してくださいする必要があり、この時間をデビューさせるであろう。ABPは、迅速な展開の生成を達成することです。
私は公式文書がどの検査することができ、ABPの事を言うことはありません。
そのためABPオープンソースコンポーネント、統合された全体のものとしてあまりにも、私たちの小さな企業、使用の複雑、困難、ように私はこの事をスキップする予定。
私に必要なのは、ビジネス・インタフェースを実装するクラスはWEBAPI、ない他の機能を展開することができます。
戻るa've見つけプロジェクト動的Web APを研究します。プロジェクト住所:https://github.com/dotnetauth/Panda.DynamicWebApi.git
著者ボーエン住所:https://www.cnblogs.com/stulzq/p/11007770.html。
最近で過ごした時間は、実際には、AOPインタフェースはASPを使用して、見て、私は、通常は使用しませんでした、WEBAPIで開い買います。
物事の研究著者は、私は小さなプロジェクトを使用することができます感じて、ダイナミックWEBAPIと呼ばれる著者が、実際には、それは単にwebRPCです。
私は違いがあるのいくつかの場所があり、ダウンnetcore3と一緒に過ごしました。基本的な原理は適切です。
2ポイントがあります。
1.合意によると、クラスを設定するコントローラであり、
それはASPNETコアWEBAPIとして想定するようにASPNETコア制約、前記コンテンツを、記載コントローラクラス決意。
ここで私は、コードの原作者を話さない、見ることができます興味を持って、私は私の話を、私たちのほとんど。
この方法は、インタフェースコントローラクラスがある見つけました:
方法IsControllerを有するMVCコントローラクラスを検証するControllerFeatureProviderクラスを継承し、現在のタイプのコントローラであることを示すためにtrueを返します。
私のコードは、原判決が失敗した場合、コントローラかどうかを確認する方法をカスタマイズすることで、デリゲートを呼び出して、コンフィギュレーション、楽しいデリゲート型を渡しを提供します。
注意:クラスの古いバージョンを使用することができない、唯一のインタフェースを実装するクラス、コピーされたソースを継承することができます。新バージョンでは、仮想メソッドIsController方法が変更になることができます。
CONSTRAINT-更新:
IApplicationModelConventionは、インターフェイスを実装し、徐々にすべてのレベルで制約を変更します。実際には、記載ASPNETコアを使用します。
情報が処理されます。
最後に、URLルーティングが作成:API /ドメイン名/コントローラ名/メソッド名。
コントローラは、名前の内部構成方法を提供することができます。現在の侵入コードを考慮していません。
だから私のコードでは、URLの名前を設定するには、一定のコントローラ、コンフィギュレーションの名前に基づいて、静的プロパティやフィールド、アクセス制御値を見つけるために、それぞれ、コンフィギュレーションを提供します。
同様に、バージョン情報、あなたのドメインが、このようなものです。
簡単な紹介はそれをすべて失います。
オファーのアドバイス:
あなたはこのソリューションをフォローしたい場合は、迅速な展開のためのインタフェースを実装するビジネスクラスは、その後、少し助言を与えます。
各インタフェースコントローラ名が一致するようにコントローラ上の名前、一つの方法は、例えば、トラフィッククラス名=実装するインターフェース名+「ビリルビンを」遠位容易にコールを変更するフォーマットを硬化させます。フロントエンドが要求されたパスを達成するためにフォーマットします。静的変数は、設定するために、インタフェース定数で添加することができるように現実に沿ってバックエンド。
あなたはクラスのURLインターフェースの価値を実現するために、フロントエンド反射形式の設定を取得することができます。最後に、ビジネスに直接現在のインターフェイスを使用していますが、すべてのビジネス・インタフェースに転用APIインターフェイスを継承し、上記のこの特別なインタフェースの機能を追加しないでください、定数、静的変数。これは、侵入するためのコードなしに達成することができます。仕事のこの部分は私のコードでは、自分自身の使用を定義するには、ユーザーが必要とされていません。ABPと原作者がコードであるが、それは特性やクラスを持っている必要があり、定義されているが、私はしませんでした。彼らは機能を追加する必要があるか、継承がコントローラクラスや名前、ドメインを決定するためにあるのはこのためです。
それについて、あなたの時間を取ります。
これは、説明の少し付属しています:
netcore3いくつかの変更、削除、いくつかのコンポーネントが行う第三者が存在し、そこにあるので、対応する変更があります。これは、Microsoftが独自の定義を使用して、JSON形式を必要とします。System.Text.Json。代わりに、元のサードパーティ製のコンポーネントの。
だから、闊歩は、最新プレビュー版、低いバージョンのエラーを使用する必要があります。
私はNSwagの例を使用します。NSwag.AspNetCoreパッケージを使用してください。
最後に、私は、ライブラリパッケージの使用について話します:
スタートアップ、
services.AddWebApiAssembly(NULL); //アセンブリを追加
services.AddWebApiDirectory(NULL); //アセンブリのディレクトリを追加
アセンブリを追加し、コントローラは一般的に、包装の内側に、やり方を剥離すると述べました。
services.AddDynamicWebApi(新しいDynamicWebApiOptions(){ControllerFeature =(P)=> {
IF(P.GetInterface(typeof演算(ICall).NAME)== NULL)
{
falseを返す;
}
trueを返します;
}})。
全体のプロセスをカプセル化する動的な処理コンポーネントライブラリを追加し、それミドルウェアこと。ControllerFeature内部には、コントローラのデリゲートを決定することです。