0

複数の接続の処理について質問があります。これらの接続は、DB接続、SOA接続、EMS接続などのいずれかになります。

データをプルするデータベース接続が1つあり、データが異なり独立しているEMS接続が2つあるとします。データはEMSに送信され、データが正常に送信されたかどうかのステータスを更新します。

1)データベース接続がダウンしている場合、またはデータベースにアクセスできないときにその他の問題が発生した場合2)1つのEMS接続がダウンしている場合、アプリケーションは他のEMS接続の処理を続行する必要があります。3)EMSにデータを送信できるが、データベースの問題のDBステータスbcosを更新できない場合はどうなりますか。メモリ内にあり、EMSに送信する必要があるすべてのメッセージをどうする必要がありますか。4)1つのEMSへの接続を確立できませんが、他のEMSは確立できたため、アプリケーションはそのEMSメッセージを処理する必要があります。

これらは私が処理しなければならない-veテストケースのいくつかです。他に対処しなければならない問題がありましたら、お気軽にお知らせください。

4

1 に答える 1

1

異なるソースへの複数の接続は、System.Transactionsの優れたソリューションのように聞こえます(EMSがこれをサポートしている場合)。

このようなことを試してください。このようにして、3つの操作すべてが作業単位として成功または失敗します。

        try
        {
            using (TransactionScope tran = new TransactionScope())
            {
                Method1Save(); //DB
                Method2Save(); //EMS1
                Method3Save(); //EMS2
                tran.Complete();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Problem " + ex.ToString());
        }

EMSがTransactionScopeをサポートしていない場合は、おそらくトランザクションを接続自体に配置し、操作が成功したらすべてのトランザクションをコミットすることによって、手動で処理する必要があります。つまり、各データソースの接続をより長く開いたままにする必要があります。

于 2011-04-12T15:35:48.443 に答える