随笔分类 - .NET
摘要:前言 本篇文章介绍如何使用HttpClient操作HFS (HTTP File Server),为自己留个纪录也希望能帮助到有需要的开发人员。关于HTTP File Server的介绍、安装、设定,可以参考下列参考资料: 前言 本篇文章介绍如何使用HttpClient操作HFS (HTTP File
阅读全文
摘要:[.NET] 使用Json.NET提供依赖注入功能(Dependence Injection)前言在一些小型项目的开发情景里,系统不需要大型DI Framework所提供的:单一对象生成、生命周期管理...等等延伸功能,只需要,单纯使用反射生成功能,从配置文件取得功能对象来注入到系统。在这样的开发情...
阅读全文
摘要:[.NET] SQL数据总笔数查询程序下载范例下载:点此下载原始码下载:点此下载NuGet封装:点此下载数据查询开发系统时,使用C#执行SQL查询指令,就可以从SQL数据库里查询所需数据。SELECT Id, Name FROM Users数据总笔数查询当数据量过多时,系统会需要采用分页的方式来分批...
阅读全文
摘要:[.NET] SQL数据分页查询程序下载范例下载:点此下载原始码下载:点此下载NuGet封装:点此下载数据查询开发系统时,使用C#执行SQL查询指令,就可以从SQL数据库里查询所需数据。SELECT Id, Name FROM Users数据分页查询当数据量过多时,系统会需要采用分页的方式来分批取得...
阅读全文
摘要:本篇文章介绍如何将系统服务封装成为SQL Function来提供服务。
阅读全文
摘要:本篇文章介绍如何将系统服务封装成为SQL Function来提供数据。
阅读全文
摘要:在设计父对象的时候,会遇到对象方法的参数为类别本身,然后再由子对象去实做这个方法的场合,例如:比较对象是否相等的方法。在这个情景中,通常会设计为下列范例的写法,在子对象中先做转型、再做比较。这是一种可以正常运作的设计,但是子对象的方法参数会是父对象型别,而不是子对象型别。namespace ConsoleApplication1{ class Program { static void Main(string[] args) { ChildAddress addressA = new ChildAddress(); ...
阅读全文
摘要:在多线程程序中使用MessageQueue Class来传送数据,很容易遇到InvalidCastException、NullReferenceException等等错误讯息。 这时只需要在传送数据的程序代码上加入lock机制,强制一次只能有一条线程传送,就可以避免掉这个问题。lock(_messageQueue){ _messageQueue.Send(dataBytes);}
阅读全文
摘要:原始码下载: MutualUdpClientSample.rar 在开发与远程设备通讯的系统时,为了提高数据传输的效率,常常会选择UDP这个通讯协议来作为数据传输的媒介。而 .NET framework中所提供的UdpClient对象,可以帮助开发人员依照系统需求开启UDP套接字点,快速建立UDP联机来提供与远程设备通讯的功能。这个系统架构下当增加一个不同种类的远程设备时,必须要提供一个不同的UDP套接字点,才能用来提供与不同种类远程设备通讯的功能,在远程设备种类越来越多时,系统所需要的UDP套接字点就会依照远程设备种类而增加。在远程设备种类越来越多的情景中,为了网络管理考虑会限制系统与远程设
阅读全文
摘要:在设计对象继承的时候,父对象建构子会需要一些参数,这些参数可以由子对象建构子透过base关键词来提供。namespace Test001{ public class ParentClass { // Constructors public ParentClass(IEnumerable<string> dataCollection) { this.DataCollection = dataCollection; } // Properties public IEnumerabl...
阅读全文
摘要:动机在设计系统架构的时候,在系统里加入Dependency Injection(DI),让系统可以在不改变程序代码的状况下,抽换类别来提高重用性、扩充性。在.NET里可以选择一些的Framework来使用,例如:Spring Framework、Unity Application Block、Managed Extensibility Framework (MEF)。在一些中小型项目,套用上列这些Framework,常常会有种拿大炮打蚊子的感觉。因为这些Framework为了能够符合更多的使用情景,而加入了很多功能。一直加下去的结果,就是系统变的庞大并且较难理解上手。以Spring来说,光是怎
阅读全文
摘要:在WindowForm应用程序中主要的线程,是采用一种称为「Single-Threaded Apartment(STA)」的线程模型。这个STA线程模型,在线程内加入了讯息帮浦等等机制,减少开发人员撰写窗口程序的工作量。相关的信息可以参考:[Object-oriented] 线程。而在开发类别库的时候,如果要使用类似的STA线程模型,可以使用下列的程序代码提供的类别来完成。namespace CLK.Threading{ public class STAThread { // Enum private enum ThreadState { ...
阅读全文
摘要:当我们在使用RDLC开发报表的时候,如果数据源内容如下。private List<UserData> CreateDataSet(){ List<UserData> userDataSet = new List<UserData>(); userDataSet.Add(new UserData() { Name = "Clark", Age = 18 }); userDataSet.Add(new UserData() { Name = "Yaya", Age = 15 }); return userDataSet;}
阅读全文
摘要:最近的项目使用Oracle DB。在.NET里可以使用Oracle Client,来对Oracle DB下SQL指令。写了下面的程序代码,用来取得User数据表里的User数据。using (OracleConnection connection = new OracleConnection(connectionString)){ connection.Open(); using (OracleCommand command = new OracleCommand()) { command.Connection = connection; comm...
阅读全文
摘要:前言在做架构设计的时候,数据对象进出系统边界,可以采用先前的文章介绍的[Architecture Pattern] Repository,来将外部的系统、模块、数据库…等等,隔离在架构之外。而当系统采用关系数据库来做为储存数据库的时候,开发人员必需要在程序内加入ORM(Object Relational Mapping)的功能,才能将数据对象与关系数据库数据做互相的转换。但当开发人员要从数据库查询大量数据的时候,会惊觉上述ORM的运作模式是:将数据库查询到的「所有数据」,转换为数据对象集合放在「内存内」,再交由系统去使用。「所有数据」、「内存内」这两个关键词,决定了在大量数据的处理上,这个运作
阅读全文
摘要:前言在前一个章节[.NET] XAML(1)--对象生成,介绍了「XAML对象生成」这个简单却强大的对象生成模式。透过这个XAML对象生成配合面向对象的对象设计,可以让开发人员依照XAML内容生成近乎无限组合的对象。但是光只有前一个章节介绍的内容,在实际的开发应用上,很快就会遇到不足的地方。假设现在要使用Property-Element的设定,将TextBlock 的Text设定为.NET里的Null,开发人员可能会写出下面范例的XAML。<TextBlock x:Name="ShowTextBlock" FontSize="72"> <
阅读全文
摘要:前言XAML是微软推出的一种宣告式标记语言,采用XML的格式让开发人员设计应用程序编程接口。在微软近期推出的各种开发平台,例如WPF、Silverlight、WP7、甚至Win8的Metro style app开发上都可以看到XAML的身影。XAML可以这么的神奇的跨平台运作,是因为XAML不涉足执行平台的运作、机制...等等,只单纯的依照开发人员的设计,建立对应的对象让执行平台使用。例如:XAML范例<phone:PhoneApplicationPage x:Class="XamlSample.MainPage" xmlns="http://schemas
阅读全文
摘要:撰写多线程对象时,执行速度是一项很重要的设计考虑。通常为了加快执行速度,会将执行运作逻辑的主线程,跟发出事件的事件线程做隔离设计。这样的隔离设计可以不让主线程,因为外部事件处理而停顿。而这样的设计下,为了简化线程管理,可以采用ThreadPool来完成事件线程的工作。简单的程序范例如下:namespace ConsoleApplication1{ class Program { static void Main(string[] args) { var obj = new ClassA(); obj.Notif...
阅读全文
摘要:前言 :Log4net是一个很方便用来做Log的第三方软件。 但在输出讯息的部分,却很吊诡的「部分支持」输出 Tab符号(Tab Character)。 所谓的「部分支持」是说, 在讯息内容的部分有支持,但是讯息Layout的部分不支持。 这让开发人员做讯息排版的时候,受到很大的限制。本篇文章记录, 如何在使用Log4net输出Log讯息的时候,能够让支持 Tab符号(Tab Character)。 希望能帮助有需要的开发人员。实做 :实做的方式,主要是使用 Log4net自定义参数的功能, 加入自定义的 Tab符号(Tab Character),来达成支持讯息输出 Tab符号(Tab Cha
阅读全文
摘要:前言 :看到91跟小朱都分享了,延迟执行的文章。 - 91 : [.NET]延迟执行(Deferred Execution) 简单概念实作 - 小朱 :[.NET] LINQ 的延迟执行 (Deferred Execution) 唤醒了许久之前的记忆,记得也有对LINQ的运作下了一番功夫。 趁记忆还没有消失。简单的做个记录,也希望对有需要的开发人员有帮助。说明 :简单的说,在 Linq的延迟执行运作,主要有三个要点。 1. IEnumerable跟 foreach是 LINQ运作的核心。 2. IEnumerable套用 Decorator模式,对IEnumerable加入功能。 3. 使用.
阅读全文