Kiến trúc module

Kiến trúc module – xu hướng mới trong lập trình

Kiến trúc module là gì? Tại sao nó lại là một xu hướng mới trong lập trình?

Có thể hiểu một cách đơn giản thì module cho phép chia nhỏ các yêu cầu của phần mềm thành các phần hầu như không trùng lắp và do đó nó hỗ trợ khả năng làm việc song song trên các modue, giúp cho việc bảo trì trở nên dễ dàng hơn. Nhờ vào kiến trúc module mà việc tái khả sử dụng các thành phần của hệ thống cũng như việc mở rộng hệ thống một cách dễ dàng hơn. 

Kiến trúc module
Kiến trúc module

Các ngôn ngữ lập trình như Flex, Ruby hỗ trợ lập trình theo cơ chế của module, nó cho phép biên dịch các module một cách độc lập và có thể gắn kết vào hệ thống lúc thưc thi. Bên cạnh đó cũng có một số ngôn ngữ khác có khả năng hỗ trợ cơ chế thư viện liên kết (DLL) để biên dịch các module thành những thư viện độc lập và có thể gắn kết vào hệ thống cộng đồng. 

Có thể lấy các môi trường lập trình như Eclipse, Visual Studio là một hình mẫu của kiến trúc module. Chúng được tạo ra như những nền tảng cơ bản trong đó, các module hỗ trợ ngôn ngữ lập trình Java, C#,… nó được thiết kế dưới dạng các plugin và có thể gắn dễ dàng vào nền tảng. Chúng ta cũng có thể thấy công cụ Visual Studio đi kèm bộ SQL Professional để hỗ trợ các project của SQL server dưới tên khác là SQL.

Điểm hay của kiến trúc module chính là khả năng mở rộng để áp dụng ở mức hệ thống và các module có thể là các ứng dụng hoặc dịch vụ được tổ chức chạy song song với nhau, đồng thời tương tác qua một kiểu giao tiếp chẳng hạn như Messaging, RPC, Socket,.. Có thể xem module chính là nền tảng cơ bản của nhiều kiến trúc tiên tiến khác như MVC Multi-tier, SOA,… Ngoài ra kiến trúc module có thể tái áp dụng vào những module của chính hay các thành phần con của kiến trúc bên trong hệ thống SOA.

Kiến trúc module có thể mở rộng để áp dụng ở mức hệ thống và các module có thể là các ứng dụng hay dịch vụ chạy song song và tương tác với nhau thông qua một kiểu giao tiếp nào đó như Messaging, RPC, Socket…

Mô hình O/R Mapping

Định nghĩa mô hình O/R Mapping

Mô hình O/R Mapping là chữ viết tắ t của cụm từ mô hình object relational mapping là môt phương pháp lập trình giúp người dùng chuyển đổi từ mô hình database sang mô hình hướng đối tượng. Các lậ p trình viên hay sử dụng mô hình object relational mapping vì nó giúp họ thuận lợi hơn so với những phương pháp truy cập dữ liệu (data access) khác: 

Đó là vì object relational mapping tự động hóa chuyển đổi từ object sang table và ngược lại từ table sang object rất nhanh chóng giúp giảm thời gian cũng như chi phí phát triển. Object relational mapping cũng cần ít code hơn sotre procedures. Object relational mapping có khả năng thay thế số lượng lớn store procedudres cần phát triển. Bên cạnh đó, ORM cũng giúp tăng tốc thực thi của hệ thống.

Những ưu điểm của object relational mapping

Những ưu điểm của object relational mapping
Những ưu điểm của object relational mapping

Ưu điểm đầu tiên của object relational mapping chính là độc lập hệ quản trị cơ sở dữ liệu, hầu hết các framwork của object relational mapping đều luôn được thiết kế để độc lập với các hệ quản trị cơ sở dữ liệu, chỉ cần thay đổi driver là bạn có thể giao tiếp với một database khác mà không phải bỏ công thay đổi bất kỳ dòng code nào. 

Ưu điểm thứ hai chính là khả năng cung cấp các API một cách đơn giản, dễ sử dụng. Lập trình viên không cần phải nhớ mình nên select, update bao nhiêu field cho lọai đối tượng nào, chỉ cần sử dụng thành thạo các hàm Save, Load, Query, Update + một ngôn ngữ query ORM (nếu như framework ORM hỗ trợ – ví dụ ngôn ngữ HQL của Hibernate).

Object relational mapping giúp cho bản thiết kế trở nên gần gũi hơn với mọi lập trình viên, lập trình viên chỉ cần nắm được sơ đồ thiết kế lớp là có thể implement dễ dàng rồi, đồng thời bản thiết kế của object relational mapping sẽ linh động, giúp giảm bớt chi phí khi sửa code thay đổi model …

Tổng quan về APS .Net

Tổng quan về APS .Net

Khái niệm APS.Net

Trong APS.Net thì ASP.Net MVC là một framwork hoàn hảo tối ưu rất tốt cho pattern MVC, sau đây chúng ta cùng đi vào tìm hiểu mô hình MVC, thì MVC là cụm từ viế tắt của Model View Controller, nó có nhiệm vụ phân chia các pattern của ứng dụng thành 3 phần gồm có model, controller và view. Trong đó, các thành phần lần lượt đóng các vai trò khác nhau như:

– Thành phần model giúp cho việc lưu trữ dữ liệu của ứng dụng và trạng thái của nó, có thể xem là một cơ sở dữ liệu hoặc một tập tin XML.

– Thành phần controller đóng vai xử lý các tương tác của người dùng với trang web, nó được sử dụng để xác định loại view nào cần phải được hiển thị, controller ở đây cũng được sử dụng cho mục đích giao tiếp với model.

– Còn thành phần view được coi là một giao diện người dùng sử dụng bởi khách truy cập trang web của bạn để nhìn thấy các dữ liệu. Những trang ASPX được sử dụng để hiện thị view trong các ứng dụng ASP.Net MVC

ASP.Net MVC là một framework tuyệt vời hỗ trợ pattern MVC cho ASP.Net. Nếu bạn muốn hiểu ASP.Net MVC làm việc như thế nào, bạn cần phải có một sự hiểu biết rõ ràng về mô hình MVC. MVC là cụm từ viết tắt của Model-View-Controller, nó phân chia pattern của ứng dụng thành 3 phần – model, controller và view.

Tổng quan về APS .Net
Tổng quan về APS .Net

Một số ưu điểm của ASP.Net

– Với ASP.Net cho pháp bạn được chọn lựa những ngôn ngữ lập trình mà bạn yêu thích chẳng hạn như Visual Basic.Net, J# hay ngôn ngữ lập trình C#…

– Trang ASP.Net được biên dịch trước đó, do đó thay vì phải đọc và thông dịch mỗi khi trang web được yêu cầu, ASP.Net đã biên dịch những trang web động thành những tập tin DLL mà Server có thể thi hành nhanh chóng và hiệu quả. Yếu tố này là một bước nhảy vọt đáng kế.

– ASP.Net hỗ trợ mạnh mẽ bộ thư viện phong phú và đa dạng của Net Framework, làm việc với XML, Web Service, đồng thời truy cập cơ sở dữ liệu qua ADO.Net,… ASP.Net sử dụng phong cách lập trình mới như code behide, trong đó nó tự tách code riêng, giao diện riêng giúp cho quản trị dễ đọc, quản lý cũng như là bảo trì.

– Kiến trúc lập trình của ASP.Net giống như ứng dụng trên windows, nó đồng thờ hỗ trợ quản lý trạng thái của các control, hỗ trợ nhiều cơ chế cache, không cần clock, không cần đăng ký DLL…

Khái niệm mô hình Inveersion Of Control (IoC)

Tìm hiểu mô hình IoC

Để có thể nắm rõ nguyên lý hoạt động của một trong những ứng dụng về web, lập trình web được biết bởi một ngôn ngữ lập trình khá nổi tiếng đó là ngôn ngữ lập trình Spring Framework, bạn cần đi vào tìm hiểu khái niệm của những mô hình cơ bản đó là mô hình Inversion Of Control hay còn gọi tắt là mô hình IoC, và mô hình Dependency Injection hay còn gọi tắt là mô hình DI

Khái niệm mô hình Inveersion Of Control (IoC)

Khái niệm mô hình Inveersion Of Control (IoC)
Khái niệm mô hình Inveersion Of Control (IoC)

Nguyên lý Inversion of Control hay còn gọi là nguyên lý đảo ngược điều khiển, nó được dùng để xây dựng nên chính IoC Container. IoC Container được xem là thành phần chủ chốt quan trọng, là nền tảng tạo nên sức mạnh của Spring. Vậy sức mạnh đó là gì? Đó chính là khả năng của Spring containe trong việc quản lý các thành phần khác nhau, ở đâu Spring container sẽ cung cấp tài nguyên cho các thành phần khi chúng đòi hỏi tài nguyên dựa vao thông tin từ các file trong cấu hình. Nhờ đó việc quản ý sẽ dễ dàng hơn, tập trung hơn và đơn giản, hiệu quả hơn rất nhiều so với việc phải phân tán tàn nguyên cho từng thành phần tự xử lý.

Khái niệm mô hình Denpendency Injection (DI)

Mô hình Denpendency Injection (DI) ở đây chính là khả năng liên kết giữa các thành phần lại với nhau trong Spring, diễn giải ra một chút thì có thể hiểu là việc các thuộc tính trong một đối tượng được tiêm chích để tham chiếu một cách lần lượt đến các đối tượng khác được quản lý bởi Spring container.

Ngôn ngữ lập trình C#

So sánh Csharp và Java

So sánh điểm khác nhau giữa ngôn ngữ lập trình C# và ngôn ngữ lập trình Java

Ngôn ngữ lập trình Csharp hay còn gọi là C# và ngôn ngữ lập trình Java là hai ngôn ngữ lập trình rất nổi tiếng và được nhiều người biết đến. Thế nhưng không phải ai cũng có thể hiểu được giữa hai ngôn ngữ lập trình này có cái gì khác nhau. 

Ngôn ngữ lập trình Java và C# khác nhau về các kiểu dữ liệu

Ngôn ngữ lập trình C#
Ngôn ngữ lập trình C#

Trong ngôn ngữ lập trình Java thì các Primitive Datatype vi phạm nghiêm trọng việc thuần hướng đối tượng. Do nó không kế thừa từ lớp Object như trong tất cả các đối tượng khác nên việc xử lý sẽ phức tạp.Trong khi đó thì ngôn ngữ lập trình C# với các kiểu int là bí danh của Int32 nên không xảy ra trường hợp trên.

C# và Java khác nhau về mặt khai báo

Ngôn ngữ lập trình Java
Ngôn ngữ lập trình Java

Nhìn chung thì về mặt khai báo cả hai ngôn ngữ lập trình C# và Java khá tương đồng nhau, tuy vậy cũng có chút khác biệt, trong Java statcic = const, còn trong C# là read only. Các hằng số trước khi gọi sẽ được biên dịch cho nên sẽ xuất ra nhanh chóng hơn.

Ngôn ngữ lập trình Java và C# khác nhau về các trúc điều khiển

Về cấu trúc điều khiển thì cả hai ngôn ngữ lập trình đều sử dụng đầy đủ các lệnh if/then/else và switch. Dẫu vậy cũng có một sự khác biệt nhỏ đó là trong Java thì mỗi câu lệnh thực hiện trong các case khác nhau không cần break, trong khi đó đối với ngôn ngữ lập trình C# thì đó là điều bắt buột hoàn toàn.

Điểm khác biệt tiếp theo chính là các vòng lặp

(còn tiếp…)

Giới thiệu về ESB

Giới thiệu về ESB

Giới thiệu về ESB

ESB chính là một sự phát triển của mô hình điện toán phân tán, trong đó hệ thống phân tán chính là hệ thống phần mềm, các thành phần cấu tạo nên thống phần mềm đó sẽ nằm ở những máy tính khác nhau, và giữa chúng sẽ được kết nối lại với nhau tạo thành một mạng lưới. Khi có một yêu cầu nào đó, thì các máy tính này sẽ phối hợp với nhau để giải quyết vấn đề thông qua việc trao đổi thông điệp. Sự có mặt của ESB trong kiến trúc hướng dịch vụ SOA giúp cho các bên tham gia xử lý vấn đề không cần tương tác trực tiếp với nhau, bởi tất cả được điều phối bởi ESB.

Những ưu điểm chính của ESB

Giới thiệu về ESB
Giới thiệu về ESB

Ưu điểm chính của ESB chính là khả năng gọi dịch vụ đồng bộ va không đồng bộ. Thực tế giữa các dịch vụ khác nhau luôn được triển khai bởi các công nghệ khác nhau như Enterprise Edition, Enterprise JavaBeans, Java, IBM DB2 Queries, Java Messega Servies, Microsoft .Net… Khi đó bên yêu cầu dịch vụ sẽ gửi đi các yêu cầu tới bên cung cấp dịch vụ mà mình mong muốn, không cần quan tâm đến vấn đề triển khai dịch vụ, vì đã có SEB ở giữa đứng ra làm cầu nối giữa bên cung cấp và bên yêu cầu. Giúp cho hai bên hoàn toàn ăn khớp với nhau dù triển khai bởi các công nghệ khác nhau.

Khả năng thứ hai của ESB chính là khả năng xử lý và chuyển đổi thông tin. ESB có khả năng bổ sung, điều chỉnh các thông tin sau khi đã được các dịch vụ xử lý. Tại đây ESB có thể thêm bớt các thành phần điều phối hòa giải có trong ESB hoặc từ việc truy vấn cơ sở dữ liệu.

Ưu điểm định tuyến tĩnh hoặc động, phân phối các thông điệp:  Các bên tham gia khai báo các yêu cầu của mình, trong đó có thể bao gồm hiệu năng và độ tin cậy, mã hóa, giải mã các nội dung thông báo,…. ESB sẽ gửi đến các nhà cung cấp dịch vụ các yêu cầu cần thiết về chức năng và chất lượng dịch vụ. Các bên cung cấp nhận được yêu cầu và sẽ đáp ứng yêu cầu đó mà không cần biết nguồn gốc của thông báo, việc phân phối các yêu cầu và các trả lời yêu cầu được thực hiện bởi ESB.

ESB có khả năng theo dõi, kiểm soát các thông điện khi chúng chuyển đi, ESB có thể ghi nhật ký lại các thông điệp, phục vụ kiểm định hoặc khai phá dữ liệu sau này.
Theo dõi, kiểm soát thông điệp: Theo dõi các thông điệp khi chúng đi. Thông qua đó, người quản trị có thể áp dụng các chính sách đối với các giao dịch, đồng nghĩa rằng có thể ghi nhật ký các thông điệp, phục vụ kiểm định hoặc khai phá dữ liệu sau này.

Dynamic Programming và Dynamic Language Runtime

Tìm hiểu về Dynamic Programming và Dynamic Language Runtime (DLR)

Khái niệm Dynamic Programming và Dynamic Language Runtime

Ngôn ngữ lập trình C# cho ra phiên bản 4.0 đã cung cấp kỹ thuật lập trình mới đó là sử dụng Dynamic programming, và thêm từ khóa mới “dynamic”. Dynamic programming là nội dụng quan trọng mà ngôn ngữ lập trình C# giới thiệu tại phiên bản 4.0, đi kèm với môi rường thực thi .Net và môi trường Dynamic Language Runtime hay gọi tắt là DLR. Dynamic Language Runtime có tác dụng cung cấp những dịch vụ vào Common Language Runrim (CLR) để hỗ trợ tính năng Dynamic programming cho các ngôn ngữ lập trình.

Những lợi ích mang lại từ Dynamic Language Runtime (DLR)

Dynamic Programming và Dynamic Language Runtime

Dynamic Programming và Dynamic Language Runtime

– Thứ nhất, DLR giúp  hạn chế những công đoạn để tạo ra một ngôn ngữ lập trình như công đoạn kiểm tra, phân tích cú pháp, ngữ nghĩa. 

– Lợi ích thứ hai chính là nó hỗ trợ cho những ngôn ngữ lập trình dữ liệu tĩnh như Java, C++,..

– Thứ ba chính là các thư viện và đối tượng của DLR có thể được chia sẻ và sử dụng trong các ngôn ngữ lập trình khác nhau, giữa những ngôn ngữ stactically type và dynamic typed.

– Cuối cùng, DLR có thể giúp lập trình viên rút ngắn mã lệnh và truy xuất nhanh những thuộc tính, thành phần của đối tượng.

Từ khóa Dymanic là gì?

Để khai báo trong phiên bản 4.0 của ngôn ngữ lập trình C#, người ta sử dụng từ khóa “dynamic”, các đối tượng được khai báo với từ khóa “dynamic” sẽ không xác định được kiểu cho đến khi chương trình chạy. Nghĩa là khi biên dịch thì công đoạn complier sẽ bỏ qua phần kiểm tra, đồng thời tính năng Intellisense trong lúc soạn thảo cũng sẽ không còn hỗ trợ khi bạn sử dụng các đối tượng có kiểu dynamic. Tóm lại khi sử dụng từ khóa “dynamic” bạn không cần thực hiện kiểm tra, chuyển đổi để truy xuất đến một thành phần của đối tượng. 

Ưu nhược điểm của Web Forms

Ưu nhược điểm của Web Forms

Định nghĩa về Web Forms

Để giải quyết rất nhiều vấn đề bằng cách tạo ra mức độ trừu tượng cao hơn trên web và mô hình mô phỏng lại trạng thái cho các nhà phát triển web thì microsoft đã đưa ra asp.net Web Forms. Điều tuyệt vời nhất của Web Forms là không yêu cầu bạn phải viết ngay những dòng mã lệnh đầu tiên. Với Web Forms microsoft đã cố gắng mang lại những mô hình Visual Basic vào Web.

Ưu điểm của Web Forms
Ưu nhược điểm của Web Forms
Ưu nhược điểm của Web Forms
– Web Forms có thể hỗ trợ nhiều trình điều khiển máy chủ, trong khi làm việc với HTML bạn có thể thấy mọi thứ không phải luôn luôn cùng một lúc tất cả các nơi. Một giao diện người dùng sẽ rất tốt trong IE có thể làm phân tâm trong Firefox hoặc ngược lại. ASP.NET server control phát hiện trình duyệt và tạo ra html thích hợp và nếu cần thì đòi hỏi JavaScript.
– Web Forms có thể hỗ trợ ViewState, bạn có thể đã nghe nói vài lần về http là một giao thức phi trạng thái. Thông thường điều khiển sẽ không giữ lại giá trị của chúng giữa các request. Nhưng Web Forms là đạt được bằng cách lưu trữ cuối cùng trangjt hái được biết đến mỗi điều khiển trong trang client riêng của mình trong các form của trường ẩn được gọi là ViewState.
– Web Forms có thể lập trình điều khiển sự kiện với sự giúp đỡ của Code Behind, Self postback mechanism (posting back form to the same page), ViewState 
– Ưu điểm của Web Forms có thể phát triển ứng dụng một cách nhanh chóng với Rich server controls, tổ chức mô hình điều khiển Event và ViewState làm tăng tốc độ phát triển ở mức độ lớn, nhà phát triển sẽ được trừu tượng hóa từ rất nhiều về sự phức tạp nền.
Nhược điểm của Web Forms
– Không có kiến trúc project cố định được xác định trước để tạo ra các ứng dụng web cho khách hàng. Lập trình viên cần phải vận dụng một cách linh hoạt, để tạo nên các ứng dụng, điều này đòi hỏi một khả năng sáng tạo cao hơn bình thường.
– Không thể tự động thực hiện kiểm tra Unit Testing, vì khi kết thúc Code Behind Web Foms xử lý rất nhiều sự kiện.
– Web Forms ít có khả năng kiểm soát html
– Web Forms cũng không thật sự thân thiện với việc seo website.
– Ngoài ra Web Forms ít có khả năng hỗ trợ cho sự phát triển song song giữa ASPX và các tập tin code behind
lập trình hướng khía cạnh AOP

Lập trình hướng khía cạnh AOP

Thế nào là lập trình hướng khía cạnh (Aspect Oriented Programming)

Lập trình hướng khía cạnh Aspect Oriented Programming viết tắt là AOP, là một xu hướng lập trình mới. Lập trình hướng khía cạnh Aspect Oriented Programming ra đời nhằm sử dụng hiệu quả của Object-oreted programming (OOP) và tăng cường tối đa khả năng tái sử dụng của mã nguồn. AOP không thay thế cho OOP mà AOP phát triển dựa trên OOP. OOP là mô hình phát triển được lựa chọn cho hầu hết các dự án phần mềm. Nếu như OOP hữu hiệu trong việc lập mô hình hành vi chung của các đối tượng tuy nhiên nó không giải quyết thỏa đáng những hành vi liên quan đến đối tượng, thì AOP giải quyết được vấn đề này và rất có thể sẽ có bước phát triển lớn kế tiếp trong phương pháp lập trình.

Ưu điểm của lập trình hướng khía cạnh AOP

 lập trình hướng khía cạnh AOP
lập trình hướng khía cạnh AOP

Ưu điểm đầu tiên của lập trình hướng khía cạnh AOP là thiết kế đơn giản: “You aren’t gonna need it (YAGNI)” – người dùng chỉ cài đặt những thứ mà họ thực sự cần mà không bao giờ cài đặt trước.

Ưu điểm thứ hai của lập trình hướng khía cạnh AOP là cài đặt chương trình một cách trong sáng: mỗi một module chỉ làm cái mà nó cần phải làm, giải quyết được hai vấn đề code tangling và code scattering

Ưu điểm thứ ba chính là tái sử dụng dễ dàng.

Những yêu cầu mà người lập trình hướng khía cạnh AOP cần có đó là có kỹ năng cao: độ trừu tượng của chương trình cao, và phải xử lý luồng chương trình phức tạp.

Một số thuật ngữ mới trong lập trình hướng khía cạnh AOP đó là 

– Thuật ngữ core concerns: hàm chính của chương trình

– Thuật ngữ crossutting concerns: những chức năng khác của của chương trình, ví dụ như security, logging, tracing, monitoring..

– Thuật ngữ join points: một điểm của chương trình, là nơi có thể chèn những custom action của bạn.

– Thuật ngữ pointcut: có nhiều cách để xác định joinpoint, những cách như thế được gọi là pointcut.

– Thuật ngữ advice: những code xử lý phụ gọi là advice được thêm vào xử lý chính.

 

Container Inversion of Control và Dependency Injection

Container Inversion of Control và Dependency Injection

Trong cộng đồng Java có một cơn sốt về các container nhỏ gọn giúp lắp ráp các thành phần từ các dự án khác nhau vào một ứng dụng thống nhất. Đằng sau những container này là một mô hình khá phổ biến là làm thế nào họ thực hiện các kết nối giữa các hệ thống, một khái niệm mà họ gọi dưới cái tên rất chung chung đó là “Inversion of Control”. Trong bài viết này, tôi đi sâu vào mô hình này xem chúng hoạt động thế nào dưới cái tên cụ thể hơn là “Dependency Injection”, và ngược lại nó với sự thay thế của Service Locator. Sự lựa chọn giữa chúng ít quan trọng hơn so với các nguyên tắc tách cấu hình của chúng ra khỏi Use.

Một trong những điều thú vị về thế giới doanh nghiệp Java là số tiền rất lớn phải chi trả cho các hoạt động trong xây dựng thay thế cho công nghệ chủ đạo J2EE, điều này xảy ra khá nhiều ở mã nguồn mở. Trong số đó, có rất nhiều phản hồi về sự phức tạp nặng nề trong thế giới J2EE chính thống, nhưng có khá nhiều vấn đề cũng được khám phá giải pháp thay thế và mở đầu cho những ý tưởng sáng tạo. Một trong những vấn đề phổ biến để giải quyết là làm thế nào để kết nối các yếu tố khác nhau lại: làm thế nào để bạn có làm cho kiến ​​trúc điều khiển trang web này phù hợp với giao diện cơ sở dữ liệu khi nó được xây dựng bởi các đội lập trình khác nhau và không nắm được ý của nhau. Một số framework đã mắc phải vấn đề này, và một số được phân nhánh để cung cấp khả năng tổng hợp để lắp ráp các thành phần từ các lớp khác nhau. Chúng thường được gọi là các Container nhỏ gọn, ví dụ bao gồm PicoContainer, và Spring.

Container Inversion of Control và Dependency Injection
Container Inversion of Control và Dependency Injection

Đằng sau những Container là một số nguyên tắc thiết kế thú vị, những thứ đi xa hơn cả những container cụ thể này và thực sự là nền tảng của Java. Ở đây, tôi muốn bắt đầu khám phá một số nguyên tắc này. Các ví dụ tôi sử dụng là của Java, nhưng cũng giống như hầu hết các văn bản của tôi, các nguyên tắc đều như nhau đối với các môi trường OO khác, đặc biệt là .NET.

Các thành phần và dịch vụ

Chủ đề hệ thống kết nối của các yếu tố kéo tôi gần như ngay lập tức vào các vấn đề thuật ngữ có nhiều rắc rối xung quanh các điều khoản dịch vụ và thành phần của chúng. Bạn sẽ dễ dàng tìm thấy các bài viết dài và trái ngược nhau về định nghĩa của những điều này. Đối với mục đích của tôi, có quá nhiều điều kiện hiện tại tôi đang sử dụng.

Tôi sử dụng thành phần để định nghĩa một khối phần mềm dự định sẽ được sử dụng mà không có sự thay đổi, bởi một ứng dụng vượt khỏi sự kiểm soát của các tác giả của các thành phần đó. Từ ‘không thay đổi’ có nghĩa là các ứng dụng màtôi sử dụng không hề thay đổi mã nguồn của các thành phần, mặc dù họ có thể thay đổi hoạt động của các thành phần bằng cách mở rộng nó bằng nhiều cách cho phép bởi những nhà lập trình các thành phần đó.

Một dịch vụ tương tự như một thành phần trong đó được sử dụng bởi các ứng dụng nước ngoài. Sự khác biệt chính là việc tôi mong đợi thành phần này được sử dụng tại nội vùng (hãy nghĩ đến file jar, lắp ráp, dll, hoặc các nguồn nhập). Một dịch vụ sẽ được sử dụng từ xa thông qua một số giao diện từ xa, 1 trong 2 đồng bộ hoặc không đồng bộ (ví dụ như dịch vụ web, hệ thống tin nhắn, RPC, hoặc ổ cắm.)

Tôi chủ yếu sử dụng dịch vụ trong bài viết này, nhưng nhiều của logic tương tự cũng có thể được áp dụng cho các thành phần địa nội vùng. Thật vậy, bạn thường xuyên cần một số loại framework thành phần nội vùng để dễ dàng truy cập vào một dịch vụ từ xa. Nhưng cứ viết “thành phần hoặc dịch vụ” thì đọc và viết thật là mệt mỏi, và các dịch vụ thì lại rất phổ biến tại thời điểm hiện tại…

(còn tiếp…)