如何将数据传递给n层应用程序中的图层?我已经绘制出3种不同的方法.
A) 通用.net对象通用数据表,Hashtables,通用数据集,字符串,整数等...然后使用数据集来填充发送到UI层的业务对象.
alt text http://img11.imageshack.us/img11/460/generic.png
http://dabbleboard.com/draw?b=eiu165&i=26&c=54eef6f1ac01f03c85919518f4a24e798e57e133
Pro-无需额外的图层 Con-必须使用业务层中的通用数据集和表
B) 使用其他层将引用的实体层.该图层将包含强类型数据集或普通旧C对象.对象主要是容器数据和非常少的逻辑.这些将是发送到UI层的相同对象.
alt text http://img8.imageshack.us/img8/6454/entities.png
http://dabbleboard.com/draw?b=eiu165&i=6&c=d0c2b346894a96b12bd3867f630e474a2af098fa
亲与在所有层中相同的类工作 CON-添加参考entities.dll到所有层
C) 使用DataAccess Layer中定义的数据传输对象(仅限于conatiner对象).然后使用这些对象来填充发送到UI层的业务对象.
alt text http://img43.imageshack.us/img43/1236/transferp.png
http://dabbleboard.com/draw?b=eiu165&i=27&c=f886efa3f9d5eb4b45ddb02361c79cdcdaec0a9b
亲业务层不会有泛型类的工作 CON组有两种类型的对象的工作,你就必须水合物的传输对象的业务对象
我们在工作中进行了讨论,并希望了解社区的想法.我还添加了一个指向dabbleboard的链接.请复制和创建而不是编辑.
谢谢
architecture domain-driven-design layered n-tier-architecture
我们使用以下代码来创建安全cookie.在Staging环境中一切正常,但在生产环境中,以下代码无法在Safari,Chrome或IE中创建cookie,但它确实在Firefox中成功创建了cookie.你们认为我遗失或错在这里的任何事情?
public static void SetAuthenticationCookie(CustomIdentity identity)
{
ConfigSettings configSettings = ConfigHelper.GetConfigSettings();
string cookieName = configSettings.CookieName;
if (cookieName == null || cookieName.Trim() == String.Empty)
{
throw new Exception("CookieName entry not found in Web.config");
}
string cookieExpr = configSettings.CookieExpiration.ToString();
string encryptedUserDetails = Encrypt(identity);
HttpCookie userCookie = new HttpCookie(cookieName.ToUpper());
if (cookieExpr != null && cookieExpr.Trim() != String.Empty)
{
userCookie.Expires = DateTime.Now.AddMinutes(int.Parse(cookieExpr));
}
userCookie.Values["UserDetails"] = encryptedUserDetails;
userCookie.Values["Culture"] = configSettings.Customer.Culture;
MyContext.Current.Response.Cookies.Add(userCookie);
}
Run Code Online (Sandbox Code Playgroud) 所以我正在编写一个Java应用程序,我有一个ESRI Shapefile,其中包含所有美国州的边界.我需要的是能够确定任何给定的纬度/经度点是否在距离任何状态边界线的指定距离内 - 即,我不会指定特定的边界线,只需要查看该点是否接近任何一个他们
解决方案根本不必非常精确; 例如,我不需要处理垂直于边界的测量,或者其他什么.只是检查是否向北,向南,向东或向西X米将导致越过边界将是绰绰有余.解决方案必须具有计算效率,因为我将执行大量的这些计算.
我打算使用Shapefile插件来使用GeoTools库(尽管有一个更简单的选项,我都是为了它).我真正理解的是:一旦我将shapefile加载到内存中,我该如何检查我是否接近边界?
谢谢!-担
在Delphi 2009中,sqrt仍然很慢吗?
旧技巧(查找表,近似函数)是否仍然有用?
我之前有一个问题得到了Perl专家,Perl作者和Perl培训师brian d foy 的以下回复:
[If]你在每个文件名的末尾寻找一个固定的字符序列.您想知道该固定序列是否在您感兴趣的序列列表中.将所有扩展存储在哈希中并查看该哈希:
my( $extension ) = $filename =~ m/\.([^.]+)$/;
if( exists $hash{$extension} ) { ... }
您不需要构建正则表达式,也不需要经历几个可能的正则表达式替换来检查您必须检查的每个扩展.
感谢brian的建议.
我现在想知道的是在上述案例中最佳做法是什么.应该只定义键,这是我需要实现上述内容,还是应该总是定义一个值?
处理一个小的Ruby脚本,该脚本可以访问Web并抓取各种服务.我有一个包含几个类的模块:
module Crawler
class Runner
class Options
class Engine
end
Run Code Online (Sandbox Code Playgroud)
我想在所有这些类中共享一个记录器.通常我只是将它放在模块中的常量中并像这样引用它:
Crawler::LOGGER.info("Hello, world")
Run Code Online (Sandbox Code Playgroud)
问题是,在我知道输出的位置之前,我无法创建我的记录器实例.您可以通过命令行启动爬网程序,此时您可以告诉它您要在开发中运行(日志输出转到STDOUT)或生产(日志输出转到文件,crawler.log):
crawler --environment=production
Run Code Online (Sandbox Code Playgroud)
我有一个类Options解析通过命令行传入的选项.只有在那时我才知道如何使用正确的输出位置实例化记录器.
所以,我的问题是:我如何/在哪里放置我的记录器对象,以便我的所有类都可以访问它?
我可以将我的记录器实例传递给new()我创建的每个类实例的每个调用,但我知道必须有一个更好的Rubyish方法来实现它.我正在想象与模块共享的一些奇怪的类变量class << self或其他魔法.:)
更多细节:Runner通过将命令行选项传递给Options类来启动所有内容,并获取具有几个实例变量的对象:
module Crawler
class Runner
def initialize(argv)
@options = Options.new(argv)
# feels like logger initialization should go here
# @options.log_output => STDOUT or string (log file name)
# @options.log_level => Logger::DEBUG or Logger::INFO
@engine = Engine.new()
end
def run
@engine.go
end
end
end
runner = Runner.new(ARGV)
runner.run
Run Code Online (Sandbox Code Playgroud)
我需要代码Engine …
我有一部分像这样的代码
Assembly myAssembly = Assembly.GetExecutingAssembly();
string[] names = myAssembly.GetManifestResourceNames();
foreach (string file in names)
{
if (file.EndsWith(".dtd"))
{
// attach to stream to the resource in the manifest
dtdStream = myAssembly.GetManifestResourceStream(file);
MessageBox.Show(dtdStream.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
我有我的Resources文件夹下的所有dtd文件.它有构建类型嵌入式资源.
现在,当我调试代码时,我收到一个显示System.IO.UnmanagedMemoryStream的消息框
但我想要一个Managed MemoryStream?
我的代码有什么问题?
谢谢...
是否有直接使用JAVA 1.5 LIBRARIES解码base64字符串的方法?
由于Windows和Mac OS X之间的跨平台兼容性问题,我必须使用Java 1.5(只有Mac 10.5支持Java 1.6,低于10.5的所有内容都默认使用Java 1.5).
对象"sun.misc.Base64Decoder"存在于Java 6中,但不存在于Java 5中.
c# ×4
.net ×2
java ×2
architecture ×1
assemblies ×1
base64 ×1
class-design ×1
cookies ×1
decode ×1
delphi ×1
delphi-2009 ×1
geography ×1
geospatial ×1
geotools ×1
hash ×1
layered ×1
logging ×1
maps ×1
optimization ×1
performance ×1
perl ×1
resources ×1
ruby ×1
stream ×1