【发布时间】:2009-11-14 10:44:59
【问题描述】:
我打算在 C# 3.5 中开发自己的简单而优雅的 Web 应用程序框架。我有一些想法,但还不是最佳实践应该如何实施。也许你能帮忙?
我的想法:
- 它是一个 C# 库 (DLL)
- 它需要使用 XSLT 作为模板语言,所以 XML 必须是我的 data-/model-layer 的输出
- 需要连接不同的数据库,比如 MySQL en SQL Server 和 ODBC
- 它必须是命令库,比如命令设计模式,所以我可以发布一个命令,其中包含一些分组到该命令的参数并执行'stuff'
- 来自 1 个帖子的所有命令和数据库操作都需要在 1 个事务中,因此所有内容都可以回滚
- 它需要有一个安全/授权模型(什么是好的?)
- 它需要某种 URL 解析,例如 /a/b/c 解析为 /?id=33
- 它必须是可插拔的,所以当我为有特定需求的人创建网络应用时,我不需要更改我的基础引擎库
- 内部需要有缓存和/或压缩技术
- 它需要快速、线程安全和执行
- 它需要有调试日志
- 如果能在数据/模型层中实现某种动态脚本(例如 IronPython),以便将我的输出动态脚本化到 XSLT,那就太好了,这样就可以快速进行调整,而无需进入 Visual Studio 并调整我的DLL。
您想知道开始建立这样一个框架的最佳方式是什么吗?还是在 C# 中已经有这样的框架?
这是一个小想法,当您有“客户”和“地址”表,并且您想发布一个 html 表单以将记录添加到数据库中并邮寄给他时,您需要将这些字段发布在 1后期:
Customer.ACTION = add
Customer.Name = "John Smith"
Customer.Email = "john.smith@emailaddress.com"
Address.ACTION = add
Address.CustomerId = #Customer.ResultId#
Address.Street = "Mainstreet"
Address.Number = "1"
Mail.ACTION = send
Mail.AFTER = Customer
Mail.To = #Customer.Email#
Mail.From = "test@case.com"
Mail.Subject = "Welcome"
Mail.Body = "Welcome new customer!"
引擎接收帖子,并通过反射收集所需命令的类,在本例中为 DatabaseCommand 和 MailCommand 并运行它。你看,我想对排序使用某种排队。在这种情况下,客户命令必须是第一个,然后是邮件(请参阅 Mail.AFTER)和/或地址(请参阅依赖项#Customer.ResultId#)。
那么你对这个项目有什么想法?
问候
【问题讨论】:
-
哇,听起来你正在建造一个大野兽。您是否探索过现有的开源 .NET 框架,您可以使用它而不是从头开始创建并插入 3rd 方组件?
-
还没有。有一些好的替代品吗?这些只是我想分享的一些想法! :)
-
"Elegant" 和 XML 并没有真正结合在一起......
-
你认为他们为什么不在一起?
-
任何与 XSLT 相关的事情听起来都像是一场等待展开的噩梦。但我有偏见,我实际上不得不使用 XSLT。
标签: c# web-applications web-frameworks