1

私は WCF が初めてで、答えが見つからないように見える問題があります。

私は2つのプロジェクトを持っています。1 つは単純なログイン アプリケーションで、もう 1 つはデータベースに接続するホストされた IIS WCF サービス (.svc) です。どちらのプロジェクトも .NET 4 です。

WCF サービスには、「Administrator_Login」と「User_Login」の 2 つのメソッドがあります。

各メソッドが呼び出されるたびに、メソッドに対応するいくつかのコードが実行されます: Administrator.Login.Execute および User.Login.Execute (コードを名前空間に整理しています。Administrator.Login および User.Login はクラス名であり、Execute です)メソッドの名前です)。

どちらの操作も、User.Login クラスまたは Administrator.Login クラス内に存在する個別の「LoginOut」オブジェクトを返します。

私の問題は次のとおりです。各操作は WCF サービスの名前空間に編成されていますが、クライアント アプリケーションからサービスへのサービス参照を追加し、返されたオブジェクトの種類の名前を確認すると、"LoginOut および "LoginOut1" が表示されます。 .

名前空間によって WCF サービスによって返されたクライアント アプリケーションで返されたオブジェクトを参照する方法はありますか?

私は現在これをしなければなりません:

Dim loginOut As Service.LoginOut = Service.Administrator_Login().Execute() 
Dim loginOut As Service.LoginOut1 = Service.User_Login().Execute() 

しかし、私はできるようにしたいと思います:

Dim loginOut As Service.Administrator.Login.LoginOut = Service.Administrator_Login().Execute() 
Dim loginOut As Service.User.Login.LoginOut = Service.User_Login().Execute() 

どんな助けでも大歓迎です。

4

1 に答える 1

0

「LoginOut」の定義をクラス ライブラリに分離し、クライアント プロジェクトからそのクラス ライブラリを参照し、サービス参照を更新すると、探している動作が得られるはずです。configureServiceReference を実行しない場合は、詳細設定をクリックして、「参照されているすべてのアセンブリで型を再利用する」が選択されていることを確認してください。

これは SOA を行うための「純粋な」方法ではないことに注意してください。これにより、クライアントと Web サービスがバインドされ、後で問題が発生する可能性があります。ただし、さまざまな小規模な状況でこれを自分で実行しましたが、問題は発生していません。

このソリューションは、目的の動作によっては、少し重い場合があります。これには、ライブラリ DLL のコピーを各クライアントに配布することが含まれます。これは、データを使用して動作を効果的に分散しているため非常に強力ですが、目の前の問題にはやり過ぎかもしれません。

于 2012-11-19T15:19:01.443 に答える