私は、データベースの作成、操作、および独自の形式での拡張を含むソフトウェアを開発しています。これは、部分的に SQL からインスピレーションを得ていますが、より広範なものです。私のソフトウェアの一部は Python でコーディングされており、ほとんどは Java でコーディングされており、Visual Basic でフロントエンドが少しだけコーディングされています。Python と Java で記述されたバックエンド コードを VB (2012) と統合し、単一のソリューションでそれらの間で関数を呼び出すにはどうすればよいですか?
1 に答える
データベースのバックエンドとして 3 つの言語のいずれかを選択し、HTTP またはその他のプロトコルを使用してそれらの間で対話するための API を開発することでアプローチします。
たとえば、Python Djangoの優れた ORM を使用してデータベース モデルを開発し、Django Tastypieライブラリを使用してhttp://localhost/api/v2/foo/
、(foo オブジェクトのリスト) やhttp://localhost/api/v2/foo/24/
(詳細な foo オブジェクトとfoo.id = 24
)。
localhostRESTfulApi
次に、 django-tastypie API を使用するVB.NET App_Code フォルダーにクラスを記述します。これは、必要に応じて単純にすることも複雑にすることもできます。
単純なケースには、 のようなものを使用して API 呼び出しを詳細に呼び出すことが含まれますlocalhostRESTfulApi.POST([endpoint URL], [new object data])
。POST/GET/PATCH リクエストがすべての状況でどのように機能するかについて知識が必要であり、OOP とはあまり関係がありません。
複雑な解決策は、django データベース バックエンドのオブジェクトのラッパーを VB (および Java) のクラスとして書き直すことです。これにはnull
、新しいオブジェクトまたはid
オブジェクトを取得するコンストラクターがあります。インスタンス化時に API を介して (たとえば、localhostRESTfulApi.GET
メソッドを消費することによって)。この方法では、API GET/POST ロジックをアプリケーション全体に散らばるのではなく、オブジェクト クラスのプライベート メソッドに記述するだけで済み、不格好さを抑えることができます。
またsave()
、舞台裏で適切な API PATCH/PUT リクエストを実行してデータベースのバックエンドと同期するメソッドを作成するか、クラスのget
/set
属性メソッドをオーバーライドして、オンザフライで変更を取得して保存することもできます (非同期save()
メソッドの呼び出し)。
他の SO ユーザーがどのような解決策を考え出すのか、興味があります。これは、以前に複数の言語/プラットフォームのアプリケーションで行った 1 つの方法にすぎません (そのためには外部 RESTful API も必要でした)。