1

Service Factoryを試してみたところ、長いファイル名に関していくつかの問題が発生しました。Vista/XP の制限を超えています。問題は、モデル サービス ファクトリからコードを生成するときに、指定された名前空間がすべてのプレフィックスになることです。フォルダ構造を巨大にする。たとえば、

c:\work\sftest\MyWebService

データ コントラクトとサービス インターフェイスで適度な長さの名前を使用して各モデルを作成します。名前空間を MyCompany.SFTest.MyWebservice に設定しました

コードを生成した後、私は

c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Business Logic
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Resource アクセス
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service インターフェイス
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.DataContracts
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.FaultContracts
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.MessageContracts
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.ServiceContracts
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.ServiceImplementation
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Tests

各フォルダーの下には、同じプレフィックスを持つプロジェクト ファイルがあります。

c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.ServiceImplementation\MyCompany.SFTest.MyWebService.ServiceImplementation.proj

Windowsは特定の長さを超えるファイル名を受け入れることができないため、これはレシピを爆破します。

各フォルダ名に名前空間を明示的に含める必要がありますか? 明らかに、ある時点でサービスを別の場所に分岐させたいと思うかもしれませんが、上記と同じ理由でできないかもしれません。これに対する回避策はありますか?

4

2 に答える 2

1

Service Factory を知らないので、これが役立つかどうかわかりません。とにかく、MSDNのファイルまたはディレクトリの名前付けという記事が役立つかもしれません。

Windows API にはパスの最大長があります (MAX_PATH = 260)。より長いパス名を使用する場合は、パスの前に「\\?\」を付けて Unicode バージョンの API を使用する必要があります。

"\\?\C:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.ServiceImplementation\MyCompany.SFTest.MyWebService.ServiceImplementation.proj"

それ以外の

"C:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.ServiceImplementation\MyCompany.SFTest.MyWebService.ServiceImplementation.proj"

Service Factory はその表記を許可しますか?

于 2008-09-17T15:20:41.687 に答える
1

私たちはまさにこの問題を抱えていたので、サービス ファクトリを通常のライブラリ (WCF でマークアップされている) の非常に薄いラッパーにすることで回避しました。これにより、通常は深いプロジェクト (ファクトリ) が得られ、次に驚くほど深いラッパー ファクトリ (すべての抽出インターフェイスとロジックなどを除く) が得られました。

まだいくつか問題がありますが、主にクライアント側に問題がありますが、サーバーにはほとんど問題がありません。

于 2008-12-16T04:05:53.310 に答える