服务工厂:极长的路径/文件名问题

时间:2008-09-17 15:01:16

标签: service-factory

我一直在试用Service Factory并且遇到了一些有关长文件名的问题 - 超过了Vista / XP的限制。问题是,当从模型服务工厂生成代码时,前缀为指定名称空间的所有内容。使文件夹结构庞大。例如从

开始

C:\工作\ 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 Access
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface
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无法接受超过特定长度的文件名。

是否有必要在每个foldernames中明确包含命名空间? 显然,在某些时候我可能想将服务分支到另一个位置,但出于与上述相同的原因可能无法做到。 有解决方法吗?

2 个答案:

答案 0 :(得分:1)

我不知道服务工厂所以我不确定这是否有帮助。无论如何:也许来自MSDN的文章Naming a File or Directory可以提供帮助。

Windows API具有路径的最大长度(MAX_PATH = 260)。如果要使用更长的路径名,则必须在路径前加上“\\?\”,i,使用API​​的Unicode版本。即使用

"\\?\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是否允许使用该表示法?

答案 1 :(得分:1)

我们遇到了这个问题,我们通过使我们的服务工厂围绕普通库(已经标记了WCF的东西)非常薄的包装来解决它。这给了我们一个通常很深的项目(工厂),然后是一个非常深的包装工厂(没有所有提取界面和逻辑,什么不是)。

我们仍有一些问题 - 但主要是在客户端 - 我们的服务器大部分都没有问题。