WindnTrees.CRUDS 0.0.21

dotnet add package WindnTrees.CRUDS --version 0.0.21
                    
NuGet\Install-Package WindnTrees.CRUDS -Version 0.0.21
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="WindnTrees.CRUDS" Version="0.0.21" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="WindnTrees.CRUDS" Version="0.0.21" />
                    
Directory.Packages.props
<PackageReference Include="WindnTrees.CRUDS" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add WindnTrees.CRUDS --version 0.0.21
                    
#r "nuget: WindnTrees.CRUDS, 0.0.21"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package WindnTrees.CRUDS@0.0.21
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=WindnTrees.CRUDS&version=0.0.21
                    
Install as a Cake Addin
#tool nuget:?package=WindnTrees.CRUDS&version=0.0.21
                    
Install as a Cake Tool

CRUD2CRUD (Facade Anti-Facade (Sub-System Independent) Interface Controller System)

WCF CRUD2CRUD API: Develop cross-process and cross-platform distributed applications using WCF (Windows Communication Foundation) CRUD2CRUD API.

Support Websites & Resources:

https://www.invincibletec.com
https://www.invincibletec.com/tutorial/index
http://www.invincibletec.com/tutorial/detail/introduction-to-wcf-cruds
https://github.com/shamszia/windntrees
https://github.com/shamszia/windntrees.nuget.support
https://github.com/shamszia/windntrees.support

Benefits:

  1. Generalized Communication CRUD2CRUD (CRUDS)
  2. One interface, no need of multiple service contract interfaces.
  3. CRUD Repositories for data persistence.
  4. Extend CRUD repositories with customized functions and integrate in CRUD controllers (CRUD Services) with one IService (or IWCFService).
  5. Invoke remote methods from clients (ServiceClients CRUDController) by specifying server side method "target" names.
  6. Support for MVVM desktop application development.
  7. WCF CRUDS application server.
  8. Cross-process and cross-platform clients.
  9. Data communication using synchronous (IService) and asynchronous (IServiceAsync) interface channels.
  10. Support for event driven response handling.
  11. Reduced effort and cost of developing multiple service contracts. Think of CRUDL communication with CRUD repository for persistence.
  12. Reduced complexity and elaborated architecture (CRUDL data communication).
  13. Distribute applications with simple interfacing model

Code Example:

Following is a server-side Host Services: example. Each service repository is communication and persistence compliant within CRUD2CRUD framework. Learn more about ServiceRepository (or IWCFService Repositories) by example from support links.

StartService("HTTP.Product.IWCFService", typeof(WindnTrees.ICRUDS.IWCFService<Application.Models.Standard.DataAccess.Product>), typeof(Application.WCF.Server.Repositories.ProductRepository), null, "custom.basic.http", "127.0.0.1", "9090", "/product", 1, false);  
StartService("HTTP.Product.IWCFService.Secure", typeof(WindnTrees.ICRUDS.IWCFService<Application.Models.Standard.DataAccess.Product>), typeof(Application.WCF.Server.Repositories.ProductRepository), null, "custom.basic.http", "127.0.0.1", "9091", "/secure/product", 1, true);  

Following is a client-side Controller example,

private WCFServiceClient<Application.Models.Standard.DataAccess.Product> ProductServiceClient  
{  
          get  
          {  
                if (m_ProductServiceClient == null)  
                {  
                    m_ProductServiceClient = new WCFServiceClient<Application.Models.Standard.DataAccess.Product>(ChannelsAndBindings<Application.Models.Standard.DataAccess.Product>.GetTcpWCFChannelFactory(GetServiceAddress("product")));  
                    m_ProductServiceClient.OnMessage += M_ProductServiceClient_OnMessage;  
                    m_ProductServiceClient.OnObject += M_ProductServiceClient_OnObject;  
                    m_ProductServiceClient.OnContentObject += M_ProductServiceClient_OnContentObject;  
                    m_ProductServiceClient.OnContentObjectList += M_ProductServiceClient_OnContentObjectList;  
                }  
                return m_ProductServiceClient;  
          }  
}  

ProductServiceClient WCFServiceClient and hosted service repository ProductRepository perform data (Product) communication with their respective automated, integrated processing tasks. CRUDM (CRUDMethod) scales communication requirements without extending interfaces for each new repository method. WCFServiceClient have synchronous, asynchronous and event based data communication and data-object(list)-view integration functionality. Host services and CRUDView WCFServiceClient your forms (winform or wpf).

ProductServiceClient WCFServiceClient is based on IWCFService interface that scales communication and view integration without extending interface.

ProductRepository is a ServiceRepository<> based on IWCFService interface and EntityFramwork repository that centralize conditional and sorting logic reducing code.

WCFServiceClient may be replaced with CRUDView for more specific controlled logic requirements.

public CRUDView<Product> CRUDView  
{  
            get  
            {  
                if (m_CRUDView == null)  
                {  
                    var wcfServiceController = new WCFServiceController<Product>(ConfigurationManager.AppSettings["IPAddress"], ConfigurationManager.AppSettings["TCPTLSPort"], "/secure/adapter/product", "product", true, true);  
                    m_CRUDView = new CRUDView<Product>(wcfServiceController, ControllerType.WCFServiceController, new ProductViewModel());  
                }  
                return m_CRUDView;  
            }  
}  

public CRUDViewListWindow()  
{  
            InitializeComponent();  
            CRUDView.CRUDViewModel.ViewInput = new ViewInput { Keyword = "", Page = 1, Size = 10 };  
            CRUDView.OnViewModel += CRUDView_OnViewModel;  
}  
Product Compatible and additional computed target framework versions.
.NET Framework net472 is compatible.  net48 was computed.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.0.21 701 11/7/2022
0.0.20 510 11/4/2022
0.0.19 604 6/5/2022
0.0.18 599 7/12/2021
0.0.16 686 11/29/2020
0.0.15 673 10/27/2020
0.0.14 640 8/26/2020
0.0.13 707 8/12/2020
0.0.12 667 6/10/2020
0.0.11 711 5/18/2020
0.0.10 696 1/17/2020
0.0.6 699 1/11/2020
0.0.4 749 12/20/2019
0.0.2 716 12/16/2019
Loading failed

Introduces CRUD2CRUD (server side and client side) callback channel support.