私は、アプリケーションの 1 つを将来的により柔軟でスケーラブルにするためにリファクタリングすることを期待して、Ninject を介した依存性注入に関する多くの読書とチュートリアルを行ってきました。私の Web アプリは、バックエンド インフラストラクチャへのアクセスを可能にする API の上に構築されています。
私が解決しようとしている技術的負債の一部は、私が行わなければならない API 呼び出しごとに繰り返されるコードです。API には、さまざまなエンティティを取得および管理するための約 45 ~ 50 のメソッドがあります。
次の (非常に簡略化された) コード例は、コードのいたるところに見られる繰り返しパターンを示しています。Ninject/DI は作業を簡単にするのに役立ちますか?
namespace MyApp
{
public class example
{
public static WebAccount Fetch_Account(Guid accountID)
{
//Create instance of API, request and response objects
WebAPI api = new WebAPI();
Fetch_Account_Request accountRequest = new Fetch_Account_Request();
Fetch_Account_Response accountResponse = new Fetch_Account_Response();
//Api call security signature
ApiSecuritySignature signature = new ApiSecuritySignature(/*My API ID */, /*My API Key */);
accountRequest.API_ID = /* My API ID */;
accountRequest.Token = signature.Token;
accountRequest.TimeStamp = signature.Date;
//Id of the account to be fetched
accountRequest.Account_ID = accountID;
//Fetch the account
accountResponse = api.Fetch_Account(accountRequest);
return accountResponse.Account;
}
public static void Manage_Account(WebAccount account)
{
//Create instance of API, request and response objects
WebAPI api = new WebAPI();
Manage_Account_Request manageAccountRequest = new Manage_Account_Request();
Manage_Account_Response manageAccountResponse = new Manage_Account_Response();
//Api call security signature
ApiSecuritySignature signature = new ApiSecuritySignature(/*My API ID */, /*My API Key */);
manageAccountRequest.API_ID = /* My API ID */;
manageAccountRequest.Token = signature.Token;
manageAccountRequest.TimeStamp = signature.Date;
//account to modify
manageAccountRequest.Account_ID = account.Account_ID;
//set Account properties
manageAccountRequest.Email = account.Email;
manageAccountRequest.Address_1 = account.Address_1;
manageAccountRequest.City = account.Postal_Zip;
manageAccountRequest.Postal_Zip = account.Postal_Zip;
manageAccountRequest.Country = account.Country;
manageAccountRequest.State = account.State;
//Make the call
manageAccountResponse = api.Manage_Account(manageAccountRequest);
}
}
}
すべてのリクエスト オブジェクトとレスポンス オブジェクトのコードにアクセスできるわけではないことに注意してください。これらは、私が参照する共有ライブラリの一部です。