0

私の既存のシナリオは以下のとおりです。

本社のオフィスにSQLサーバーがあります。同社には、60マイル離れた別の支店があります。

メインオフィスのコンピューターと、レコードの印刷などのためにメインオフィスのSQLサーバーに接続するブランチにWPFアプリケーションをインストールしています。

app.configファイルで接続パラメーターを次のように指定しています。

<add name="CompanyEntities" connectionString="metadata=res://*/LabModel.csdl|res://*/LabModel.ssdl|res://*/LabModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=publicIPaddress of remote SQL here;Initial Catalog=databasename;Persist Security Info=True;User ID=sa;Password=password;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

私の問題は、ブランチ内のアプリケーションが特定の時間に永遠にハングすることです。だから私の質問は、リモートSQLサーバーへの接続にWCFを使用するのがベストプラクティスかどうかです。

それについて行くための最良の方法はどれですか?これを最もよく説明しているリンクはありますか?

4

2 に答える 2

2

現在のシナリオでは、WCF は役に立ちません。データベース接続を管理するサーバー側アプリケーションを作成する場合、WCF を使用してクライアントにデータを送信できます。ただし、それにはクライアント側のソフトウェアも WCF の使用に適合させる必要がありますが、その場合、クライアントはデータベースにアクセスしません (2 層アーキテクチャから 3 層アーキテクチャに変更します)。それはあなたの問題を解決するかもしれませんし、他の問題を引き起こすかもしれません。

あなたが説明するハングアップの問題は、多くのことが原因である可能性があります。たとえば、データベース接続が不足したり、デッドロックに陥ったり (ただし、そのトランザクションは通常サーバーによって終了されます)、編集中のデータを単にロックしたり、それを使用している従業員が休憩を取ったりする可能性があります。

問題がデータベース接続にあるのではなく、クライアント側のコードにある可能性もあります。詳細がわからないので、具体的なことは言えません。

于 2012-09-23T13:21:08.700 に答える
1

あなたが選んだ言い回しを選ぶと、 WCFを使用して「リモートSQLサーバーに接続する」ことはないと思います。ただし、WCF を使用して、クライアント (WPF アプリ) にデータへの安全なアクセスを提供するサービスをホストすることはできますが、これは間接的に行われます。このアプローチは、WPF アプリから直接サーバーにアクセスするという現在のアプローチとはまったく異なります。

私自身は使用していませんが、1 つのアプローチはWCF Data Servicesである可能性があると思います。印刷のためにサービスでいくつかの操作 (GetRecord など) のみが必要な場合は、クライアント アプリに "レコード" を提供するだけの独自の WCF サービスをロールすることもできます。WCF に関する入門書やチュートリアルは、おそらくあなたを道案内してくれるでしょう。


上記は、あなたが尋ねているように見える質問に答えます。ただし、WCF は接続の問題を解決しません。「アプリケーション [...] が特定の時間に永久にハングする」と言う場合は、何があってもそれを調査する必要があります。しかし、それは別の質問です。

于 2012-09-23T12:57:16.497 に答える