我一直在试用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中明确包含命名空间? 显然,在某些时候我可能想将服务分支到另一个位置,但出于与上述相同的原因可能无法做到。 有解决方法吗?
答案 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的东西)非常薄的包装来解决它。这给了我们一个通常很深的项目(工厂),然后是一个非常深的包装工厂(没有所有提取界面和逻辑,什么不是)。
我们仍有一些问题 - 但主要是在客户端 - 我们的服务器大部分都没有问题。