SQL Server 2008是否可以用作电子商务网站的图像存储?它将用于存储各种尺寸和角度的产品图像.Web服务器将输出这些图像,通过聚簇ID读取表.总图像大小约为10 GB,但需要扩展.我发现使用文件系统有很多好处,但我担心没有O(1)查找的SQL服务器不是最好的解决方案,因为该网站有很多流量.这甚至会成为一个瓶颈?有什么想法,或者其他选择?
我正在寻找一些用于企业应用程序开发的架构设计模式.我知道所有GoF模式和MVC等等,但我正在寻找在更大范围内出现的模式.特别是我有一个更大的企业桌面和网站应用程序,它们共享某些功能,有些是独一无二的,我正在寻找有关如何构建整个解决方案,如何通过工厂向其他人公开业务逻辑域的最佳实践,或者这样,通常是这种性质的东西,它涉及整个应用程序.
当使用CHECKSUM列类型人为地创建哈希索引时,查找实际上是O(1)还是它仍然是O(lg n),就像它是聚簇索引一样?我有一个表,我将根据其ID列进行选择,我需要尽可能快地查找,因此聚簇索引是最快的选项吗?我正在寻找能提供O(1)性能的东西.
我在IIS 7.5 Windows 2008 R2上托管了WCF REST服务.除非客户端尝试发送大于~25 MB的消息,否则该服务将按预期工作.具体来说,当发送大小约为25 MB的消息时,服务会正确接收并处理消息,当发送大小约为31 MB的消息时,它会失败.
在VS 2010本地托管时,将收到消息而不会出现错误.在IIS 7.5上远程托管时,服务立即响应:"System.ServiceModel.EndpointNotFoundException:没有端点侦听...",内部异常是:"远程服务器返回错误:(404)Not Found" .
这与最大邮件大小设置不足时引发的异常不同.鉴于在本地托管时,我没有收到错误,我的猜测是它与IIS或某些防火墙设置有关.
这是配置:
<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpRuntime requestPathInvalidCharacters="" maxRequestLength="512000"/>
</system.web>
<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true"/>
<bindings>
<webHttpBinding>
<binding maxReceivedMessageSize="524288000" maxBufferSize="524288000">
<readerQuotas maxStringContentLength="524288000" maxArrayLength="524288000"/>
</binding>
</webHttpBinding>
</bindings>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud) 我根据本文部署了一些Windows 2008 R2 AppFabric始终运行的自动启动服务.服务类型不同,有些是计划的Quartz.NET作业主机,有些是NServiceBus端点,有些是WCF Web服务.我遇到了部署问题,在发布服务后继续使用旧的DLL.一旦我停止相应的应用程序池并清除"C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files",就会使用新部署的DLL.如果我不清除该目录并仅重新启动应用程序池,则有时我在事件日志中收到以下错误:
在处理配置路径的托管应用程序服务自动启动期间出错:'MACHINE/WEBROOT/APPHOST/services/products/imports.retrieval'.返回的错误消息是:'尝试预加载应用程序时发生初始化错误.
例外:System.InvalidOperationException
消息:此应用程序域中已存在类型为"System.Web.Hosting.PreloadHost"的已知对象.
StackTrace:位于System.Web.HostingEnvironment.HretingWell的一个System.Web.Hosting.HostingEnvironment.CreateWellKnownObjectInstance(String assemblyQualifiedName,Boolean failIfExists)的System.Web.Hosting.ApplicationManager.CreateObjectInternal(String appId,在System.Web.Hosting.ProcessHost上的System.Web.Hosting.ProcessHost.PreloadApplicationIfRequired(String appId,IApplicationHost appHostParameter,HostingEnvironmentParameters hostingParameters,LockableAppDomainContext ac)中输入类型,IApplicationHost appHost,Boolean failIfExists,HostingEnvironmentParameters hostingParameters.<> c_ DisplayClasse.b _c(对象o)'.工作进程将被标记为不健康并将被关闭.数据字段包含错误代码.
错误代码指向本文,但似乎不适用.
我应该将应用程序池重新启动作为Web发布管道的一部分吗?
可能有用的是准确了解在使用Web部署时临时数据和应用程序池会发生什么.
我正在使用RavenDB build 371,我有以下型号:
class Product {
public string Id { get; set; }
public ProductSpec[] Specs { get; set; }
}
class ProductSpec {
public string Name { get; set; }
public string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我希望能够查询具有一组规格的产品.查询单个规范时:
session.Query<Product>()
.Where(product => product.Specs.Any(spec => spec.Name == "Color" && spec.Value == "Red"))
.ToList();
Run Code Online (Sandbox Code Playgroud)
返回预期结果,但是当添加其他规范谓词时:
session.Query<Product>()
.Where(product => product.Specs.Any(spec => spec.Name == "Color" && spec.Value == "Red"))
.Where(product => product.Specs.Any(spec => spec.Name == "Country" && spec.Value == "US"))
.ToList();
Run Code Online (Sandbox Code Playgroud)
即使第一个查询返回的结果包含规格名称为"Country"且规格值为"US"的产品,也不会返回任何结果.使用LuceneQuery方法时会观察到相同的结果.这似乎与此讨论 …
这是该问题中概述的项目的延续.
我有以下型号:
class Product {
public string Id { get; set; }
public string[] Specs { get; set; }
public int CategoryId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
"Specs"数组存储由特殊字符连接的产品规范名称值对.例如,如果产品的颜色为蓝色,则spec字符串将为"Color~Blue".以这种方式表示规范允许查询具有由查询指定的多个规范值的产品.我想支持两个主要查询:
这适用于RavenDB.但是,除了满足给定查询的产品之外,我还想返回一个结果集,其中包含查询指定的产品集的所有规范名称 - 值对.规范名称 - 值对应按规范的名称和值进行分组,并包含具有给定规范名称 - 值对的产品计数.对于查询#1,我创建了以下map reduce index:
class CategorySpecGroups {
public int CategoryId { get; set; }
public string Spec { get; set; }
public int Count { get; set; }
}
public class SpecGroups_ByCategoryId : AbstractIndexCreationTask<Product, CategorySpecGroups>
{
public SpecGroups_ByCategoryId()
{
this.Map = products => …Run Code Online (Sandbox Code Playgroud) 如何在c#中以编程方式执行网络登录,访问共享驱动程序?尝试通过资源管理器或net use shell命令打开共享可以实现同样的目的.
我希望能够在发布之前看到网页在不同浏览器上的外观.我的机器上有几个,但我无法检查不同版本的IE和其他浏览器,我无法检查其他操作系统.我知道http://browsershots.org/,但有时需要大约30分钟,因此故障排除可能会有问题.
我正在使用:SQL Server Express 2008上的NHibernate,NHibernate.Linq和Fluent NHibernate.我选择了一个在引用属性上使用谓词的实体(多个映射).我有fetch = join,unique = true,lazy-load = false.我启用了log4net日志,当执行任何此类查询时,它会记录两个相同的SQL查询.运行查询返回一行,当我尝试使用IQueryable.Single扩展方法时,它会抛出异常,表明返回了多行.我也尝试使用标准的IQuery.UniqueResult方法运行查询,结果相同,它最终记录并实际运行查询两次,然后抛出一个异常,说明有多行,但是在管理工作室中运行实际查询只返回一个结果.当我禁用日志记录时,我收到相同的错误.
实体和映射声明如下(隐含了适当的访问修饰符和成员类型方差)
class User
{
int ID;
string UserName;
}
class Client
{
int ID;
User User;
Person Person;
Address Address;
}
class UserMap : ClassMap<User>
{
public UserMap()
{
Id(x => x.ID);
Map(x => x.UserName);
}
}
class ClientMap : ClassMap<Client>
{
public ClientMap()
{
Id(x => x.ID);
References(x => x.User).Unique();
...
}
}
Run Code Online (Sandbox Code Playgroud)
然后我调用如下查询:
ISession s = GetNHibernateSession();
...
var client = s.Linq<Client>().SingleOrDefault(x => x.User.ID = 17);
or …Run Code Online (Sandbox Code Playgroud) 我正在研究一个产品数据导入系统,该系统从外部源下载产品数据,将其转换为正确的模式,并存储结果 - 实际上是一个ETL系统.系统处理的核心消息类型是"ImportProductCommand",它指定要导入的产品和源.但是,导入命令很少单独发送.典型的业务需求是从给定的源导入一整套产品.目前,这表示为"ImportProductsCommand"消息,可以指定要导入的多个产品.命令处理程序使用此消息,将其转换为单独的"ImportProductCommand"消息,并将它们发送到队列进行处理.单个导入请求的使用者发布"ProductImportedEvent"或"ProductImportFailedEvent".收到"ImportProductsCommand"消息后,服务会为消息分配GUID标记,将消息放入队列,然后返回标记.然后将令牌用作相关ID,以便可以将单个导入请求与批量导入请求相关联.给定此基础结构,可以确定与给定令牌关联的事件数,从而确定导入的产品数或导入失败的数量.缺少的是一个显式事件,表明批量导入已完成.单个导入请求的处理程序未明确意识到它是批量导入请求的一部分.当然,这可以通过了解要导入的产品数量以及通过计算与特定相关ID关联的导入事件的数量来推断.当前实现利用消息队列系统来处理进程重新启动和失败,但对批量导入请求不太明确.总的来说,系统需要回答的查询是:
有哪些最佳实践或建议的方法来支持这些查询,并仍然利用消息排队系统来实现弹性?目前,将它们联系在一起的是上面提到的令牌,但是没有明确的记录来表示批量导入请求实体,如果有,那么单个导入请求处理器需要知道这样的实体来更新地位相应.
所有这些都是使用C#,NServiceBus实现的,并作为IIS WCF应用程序托管.
我有一个 .NET 4 WCF 服务作为 IIS 网站以 ASP.NET 兼容模式运行。一旦服务方法接受字符串参数,并且当存在包含“&”的值时,ASP.NET 管道将引发验证异常。我已指定以下配置设置:
<system.web>
<httpRuntime requestValidationMode="2.0"/>
<pages validateRequest="false"/>
</system.web>
Run Code Online (Sandbox Code Playgroud)
并且错误仍然存在。无论输入是否经过编码,都会发生错误。我在这里找到了一个潜在的解决方案,建议提供 System.Web.Util.RequestValidator 的自定义实现,但是我想知道是否有其他方法可以仅通过配置设置来完成。
编辑: 我也发现了这个,但是建议的解决方案并不能解决问题。
我有一个ac#应用程序,它只通过存储过程与数据库连接.我已经尝试了各种调用存储过程的技术.根目录是SqlCommand类,但是我希望实现以下几点:
我探索了各种途径.在一个,我有一个项目,其命名空间结构镜像存储过程的名称结构,这样我可以从类的名称生成存储过程的名称,我可以判断给定的存储过程是否正在使用通过在命名空间树中对其进行修改.还有什么其他经历?
c# ×3
wcf ×3
.net ×2
nosql ×2
ravendb ×2
sql-server ×2
appfabric ×1
architecture ×1
asp.net ×1
browser ×1
css ×1
hash ×1
html ×1
iis ×1
iis-7.5 ×1
image ×1
indexing ×1
networking ×1
nhibernate ×1
nservicebus ×1
sql ×1
store ×1