我目前正在试图找出何时使用ViewModels以及何时不使用.我正在使用Automapper执行任务,目前有以下代码:
// AccountController.cs
[AuthWhereRole(Roles = AuthorizeRole.Developer)]
public ActionResult List()
{
MembershipUserCollection users = _memberShipService.GetAllUsers();
IEnumerable<ListUsersViewModel> viewModel =
Mapper.Map<IEnumerable<MembershipUser>, IEnumerable<ListUsersViewModel>>(users.Cast<MembershipUser>().AsEnumerable());
return View("List", viewModel);
}
Run Code Online (Sandbox Code Playgroud)
// ListUsersViewModel.cs
public class ListUsersViewModel
{
public Guid Id { get; set; }
public virtual string UserName { get; set; }
public string LastLogOn { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
// Bootstrapper.cs
public static void ConfigureAutoMapper()
{
Mapper.CreateMap<MembershipUser, ListUsersViewModel>()
.ForMember(x => x.UserName, o => o.MapFrom(s => s.UserName))
.ForMember(x => x.Id, o => o.MapFrom(s => s.ProviderUserKey))
.ForMember(x => x.LastLogOn, …Run Code Online (Sandbox Code Playgroud) 在过去,我使用asp.net的内置资源文件来处理本地化.它工作得很好,我们发现它在我们的业务中易于使用和维护.
但是有一个很大的缺点 - 我们的客户支持团队无法自己更新资源文件.我们即将启动一个大型项目,允许外部支持团队管理本地化的选项是一项主要要求.到目前为止,我们有客户只是联系我们,我们得到翻译的文件,然后将更新的resx文件滚动到实时服务器.
我知道更新resx文件导致应用程序重新编译,我不喜欢允许非技术人员下载和乱用resx文件的想法(更不用说在实时环境中对网站进行编译)所以我想知道如果除了沿着数据库路线走下去之外还有其他选择吗?
如果我们必须在几个数据库表中构建这种类型的本地化功能,那么是否有人有任何好的模板可以启动?
不确定它是否有助于了解,但我们在这里讨论的网站将被本地化为大约15种不同的语言,包括中文和阿拉伯语.翻译将应用于aspx页面和XML,这将使我们的系统留给第三方.
我的背景几乎完全基于业务应用程序 - Web服务,调度程序,桌面和Web前端到CRM系统等......
现在几乎所有上述项目的基本原则都是相同的:
某种数据访问层,业务逻辑层和UI.
显然某些场景需要一些独特的东西,但总的来说它一直是N层.
我想做一些游戏开发作为一种爱好.我没有期待任何令人印象深刻的东西,因为我没有足够的资源来投入它,但是有点挑战我的东西会很好.
我应该从目前的经验中学到什么课程(如果有的话),我还需要学习什么?
我假设根据我的经验,不同类型的游戏将有不同的架构,但它们都是基于相同的核心原则吗?为了争论,让我们说我正在构建一个简单的MUD(也许是一个像旧的Zelda游戏一样的自上而下的UI) - 这似乎是我可以拥有我的3层逻辑的东西 - 一个带有BLL和DAL和客户端用户界面 - 但我不太确定这是否正确 - 当然使用实体框架似乎不合适,因为在Db中访问大量内容会产生大量开销,我认为性能将会成为一个问题 - 例如,我假设我不想经常使用Db存储玩家位置,如果他们改变20次/秒......
是否有针对游戏场景的模式和实践?
在创建UI之前开发后端系统是否可行(例如,插入控制台应用程序以允许我在添加UI之前开发我想要的功能).这是好/坏的做法吗?
简而言之,我不知道从哪里开始,并希望得到一些建议 - 特别是那些有经验的人.
关于唯一一件事就是我想要一个带有中央服务器的多用户游戏.游戏建议欢迎.
我正在尝试配置我的WCF(.NET 4.0)服务,以便可以使用soapUI进行测试.我正在使用带有消息安全性的wsHttpBinding.我的目标是在公共测试端点上公开服务,并尝试使用使用soapUI测试的loadUI对其进行加载测试.为了实现这一点,端点需要是安全的,因为我的生产端点将使用消息安全性,我认为我的测试也应该使用它来实现接近生产负载测试结果.
我似乎无法配置soapUI来成功调用该服务.我尝试了许多使用客户端和服务器证书对输入和输出进行签名和加密的组合.有没有人设法成功实现WCF和soapUI的消息安全配置?
以下是我配置的摘录:
捆绑:
<wsHttpBinding>
<binding name="MessageSecurity">
<security mode="Message">
<message clientCredentialType="Certificate" negotiateServiceCredential="false"/>
</security>
</binding>
</wsHttpBinding>
Run Code Online (Sandbox Code Playgroud)
行为
<behaviors>
<serviceBehaviors>
<behavior name="customBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="True"/>
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="PeerTrust"/>
</clientCertificate>
<serviceCertificate findValue="MyWebServicesCertificate" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="My"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="webHttp">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)
服务:
<service behaviorConfiguration="customBehavior" name="MyService">
<!-- Service Endpoint -->
<endpoint name="Production" address="" binding="wsHttpBinding" bindingConfiguration="MessageSecurity" contract="IMyService">
<identity>
<dns value="web_services_svr"/>
</identity>
</endpoint>
<host>
<baseAddresses>
<add baseAddress="http://web_services_svr/MyService.svc" />
</baseAddresses>
</host>
</service>
Run Code Online (Sandbox Code Playgroud) 我们有一个充满快捷方式(.lnk文件)的网络驱动器,指向文件夹,我需要在C#Winforms应用程序中以编程方式遍历它们.
我有什么实际选择?
我有一个ObservableCollection<T>.我已将它绑定到ListBox控件,并且我已添加SortDescriptions到ListBox上的Items集合中,以使列表按我的方式排序.
当任何属性在子元素上发生更改时,我想在任何时候使用列表.
我所有的子元素都实现了INotifyPropertyChanged.
在我的非编程生活中,我总是尝试使用适当的工具来完成这项工作,我觉得我在编程生活中也是如此,但我发现我几乎所有选择C#和.NET.我发现很难提出.NET和C#无法满足的(实际业务)需求.
显然嵌入式系统可能需要比.NET Micro Framework更少膨胀的东西,但我真的在寻找.NET不是最好的工具的业务类型.
我最初是一个C#和.NET家伙,因为它是我最舒服的,但我知道相当数量的C++,php,VB,PowerShell,批处理文件和Java,以及精通网络技术(JavaScript,HTML和CSS).但我对我的技能有着开放的态度,我正在寻找C#和.NET 不适合这项工作的案例.
我选择.NET和C#因为我对它感到满意,但我正在寻找不适合的情况.
我有一个托管在普通主机上的ASP.NET MVC 3 Web应用程序(即,没有自有或虚拟服务器),我希望能够将数据存储在数据库中并将它们拾取并发送到背景工作的种类.
如果这是我自己的服务器,我会编写一个Windows服务来处理这个问题,但有什么方法可以在Web应用程序进程中实现/模拟计划的任务/后台作业?
我有超时问题,这些是详细信息:
我的绑定配置如下所示:
<netTcpBinding>
<binding name="WindowsServerOverTcp"
maxReceivedMessageSize="10000000"
maxBufferSize="10000000"
maxBufferPoolSize="10000000"
closeTimeout="00:00:03"
openTimeout="00:00:03"
sendTimeout="00:00:03"
receiveTimeout="00:00:03">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
<security mode="None">
</security>
</binding>
</netTcpBinding>
Run Code Online (Sandbox Code Playgroud)
我正在向服务器发送一条消息,我知道该服务器已关闭,因此连接应该在我的app.config中规定的3秒后超时,但由于某种原因它需要20-30秒.
抛出EndPointNotFoundException时,这是我得到的信息:
System.ServiceModel.EndPointNotFoundException:无法连接到net.tcp://10.0.0.82:4466/MegaMatcherWcf.连接尝试持续了00:00:03的时间跨度.TCP错误代码10060:连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机无法响应10.0.0.82:4466
如果我在打开机器时尝试相同的测试,但没有正在运行的监听软件,我会得到预期的行为,3秒后连接超时.如果机器关闭,为什么需要30秒,然后告诉我需要3秒钟?
我是WCF的新手,我尝试向数据成员添加限制.
例如,这种方法:
[DataMember]
public string StringValue
{
get { return stringValue; }
set { stringValue = value; }
}
Run Code Online (Sandbox Code Playgroud)
我想设置最大和最小长度.我知道如何将限制添加到XML代码
<xs:restriction base="xs:string">
<xs:minLength value="2"/>
<xs:maxLength value="10"/>
</xs:restriction>
Run Code Online (Sandbox Code Playgroud)
但有没有办法直接从代码中添加限制?
c# ×7
.net ×3
wcf ×3
architecture ×1
asp.net-mvc ×1
automapper ×1
collections ×1
email ×1
game-engine ×1
localization ×1
resx ×1
soapui ×1
sorting ×1
timeout ×1
wcf-security ×1
web-services ×1
winapi ×1
windows ×1
winforms ×1
wpf ×1
xml ×1