0

チーム A が WebServiceA を作成します。タイプ Person を使用します。個人が WebServiceA で呼び出しによって登録されている場合は、他のシステムにも通知する必要があります (チーム B によって作成された WebServiceB への呼び出しによって、登録された人が渡されます)。

次に、人物がシステム B で編集されたら、変更をシステム A に移行する必要があります (変更された人物を渡す WebServiceA への呼び出しによって)。

問題は、両方の WebServices で同じ型を使用する方法です。xml を文字列として送信し、それを各 WebService 側のオブジェクトにシリアル化/逆シリアル化して、xml を操作する必要がないようにすることもできますが、それがより簡単な方法であるかどうか知りたいです。

私はこれをしたいと思います:

WebServiceA
Webmethod - RegisterPerson(Person person)
    calls WebServiceB.PersonRegistered(person)
WebMethod - PersonModified(Person person)

WebSericeB
WebMethod - PersonRegistered(Person person)
WebMethod - ModifyPerson(Person person)
    calls WebServiceA.PersonModified(person)

これの代わりに

WebServiceA
Webmethod - RegisterPerson(Person person)
    calls WebServiceB.PersonRegistered(person.SerializeToXml())
WebMethod - PersonModified(string person) - deserialize to WebServiceA.Person

WebSericeB
WebMethod - PersonRegistered(string person) - deserialize to WebServiceB.Person
WebMethod - ModifyPerson(Person person)
    calls WebServiceA.PersonModified(person.SerializeToXml())

チーム A では ASP.NET WebService を使用し、チーム B では Java を使用しています。両方のチームが .NET を使用していたら、何か変わるでしょうか?

4

1 に答える 1

1

両方のチームが.NETを使用している場合は、1つのクラスライブラリプロジェクトでデータオブジェクトを定義でき、両方のチームが同じライブラリ(DLL)を共有します。これは、.NETプロジェクトでサービスへの参照を作成するときにWindowsCommunicationFoundationが舞台裏で行うこととほぼ同じです。したがって、最初の例のように、オブジェクトをパラメータとして渡すのが簡単になります。

あなたは2つの言語を持っているので、あなたは間違いなく共通の基盤を必要とします、そしてそれはjsonまたはxmlが適所に来るところです(これはあなたの2番目の例です)。文字列をキャプチャし、オブジェクトを返し、それをパラメータとしてメソッドに渡す、ある種のコンバータクラスを追加できます。実装は、使用しているフレームワークによって異なります(Springはこれを簡単にします)

于 2013-01-02T19:25:14.597 に答える